Kubernetes服务无法再相互联系



我在GKE上运行Kubernetes,这以前是可以工作的,但大约两天前发生了变化。我想我没有对我的配置做任何更改。我的服务似乎已经不起作用了。我的任何一个服务都不能相互交谈。当SSHing进入一个正在运行的pod时,我不能通过他们的服务名称来ping他们,也不能通过他们内部的IP地址来ping他们。无法访问负载平衡器的外部IP。以下是我如何定义部署的示例:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
labels:
ksonnet.io/component: app-name
name: app-name
spec:
replicas: 1
template:
metadata:
labels:
app: app-name

这里的服务:

apiVersion: v1
kind: Service
metadata:
labels:
ksonnet.io/component: app-name
name: app-name
spec:
loadBalancerIP: x.x.x.x
ports:
- port: 4999
targetPort: 5000
selector:
app: app-name
type: LoadBalancer

我对Kubernetes和网络还很陌生,不知道该在哪里查找或如何调试这个问题。

编辑:

以下是相关的kubectl get services -n test

dashboard       ClusterIP      10.47.242.176   <none>        5000/TCP         1h
app-name        LoadBalancer   10.47.246.63    x.xxx.xx.xx   4999:31439/TCP   1h

然后是kubectl describe service app-name -n test

Name:                     app-name
Namespace:                test
Labels:                   app.kubernetes.io/deploy-manager=ksonnet
ksonnet.io/component=app-name
Annotations:              ksonnet.io/managed: {pristine...}
Selector:                 app=app-name
Type:                     LoadBalancer
IP:                       10.47.246.63
IP:                       xx.xxx.xx.x
LoadBalancer Ingress:     xx.xxx.xx.x
Port:                     <unset>  4999/TCP
TargetPort:               5000/TCP
NodePort:                 <unset>  31439/TCP
Endpoints:                10.44.1.141:5000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

编辑2:我在默认端口上尝试了curl命令,但它超时了:

curl: (7) Failed to connect to app-name port 80: Connection timed out

在完整端点上尝试时,连接被拒绝:

curl: (7) Failed to connect to app-name port 4999: Connection refused

当查看部署时,我得到以下pod模板:

Pod Template:
Labels:  app=app-name
Containers:
model-manager:
Image:      gcr.io/ns-delay/app-name:0.1
Port:       5000/TCP
Host Port:  0/TCP

当我看到服务中的选择器与部署中的标签不匹配时,请更改为

metadata: labels: app: app-name

在您的部署中,它应该可以工作。

最新更新