Proxy 我的kubernetes&x27;服务可以';找不到终点?
我在coreos上运行kubernetes群集 我有一个kubernetes复制控制器,工作正常。看起来是这样的:Proxy 我的kubernetes&x27;服务可以';找不到终点?,proxy,docker,coreos,kubernetes,Proxy,Docker,Coreos,Kubernetes,我在coreos上运行kubernetes群集 我有一个kubernetes复制控制器,工作正常。看起来是这样的: id: "redis-controller" kind: "ReplicationController" apiVersion: "v1beta3" metadata: name: "rediscontroller" lables: name: "rediscontroller" spec: replicas: 1 selector: name: "
id: "redis-controller"
kind: "ReplicationController"
apiVersion: "v1beta3"
metadata:
name: "rediscontroller"
lables:
name: "rediscontroller"
spec:
replicas: 1
selector:
name: "rediscontroller"
template:
metadata:
labels:
name: "rediscontroller"
spec:
containers:
- name: "rediscontroller"
image: "redis:3.0.2"
ports:
- name: "redisport"
hostPort: 6379
containerPort: 6379
protocol: "TCP"
id: "redis-service"
kind: "Service"
apiVersion: "v1beta3"
metadata:
name: "redisservice"
spec:
ports:
- protocol: "TCP"
port: 6379
targetPort: 6379
selector:
name: "redissrv"
createExternalLoadBalancer: true
sessionAffinity: "ClientIP"
但我为上述复制控制器的吊舱提供了如下服务:
id: "redis-controller"
kind: "ReplicationController"
apiVersion: "v1beta3"
metadata:
name: "rediscontroller"
lables:
name: "rediscontroller"
spec:
replicas: 1
selector:
name: "rediscontroller"
template:
metadata:
labels:
name: "rediscontroller"
spec:
containers:
- name: "rediscontroller"
image: "redis:3.0.2"
ports:
- name: "redisport"
hostPort: 6379
containerPort: 6379
protocol: "TCP"
id: "redis-service"
kind: "Service"
apiVersion: "v1beta3"
metadata:
name: "redisservice"
spec:
ports:
- protocol: "TCP"
port: 6379
targetPort: 6379
selector:
name: "redissrv"
createExternalLoadBalancer: true
sessionAffinity: "ClientIP"
kube proxy杂志对该服务有如下描述:
Jul 06 21:18:31 core-01 kube-proxy[6896]: E0706 21:18:31.477535 6896 proxysocket.go:126] Failed to connect to balancer: failed to connect to an endpoint.
Jul 06 21:18:41 core-01 kube-proxy[6896]: E0706 21:18:41.353425 6896 proxysocket.go:81] Couldn't find an endpoint for default/redisservice:: missing service entry
据我所知,我的服务指向正确的pod和端口,但我错了吗
更新1
我注意到另一个可能的问题,在修复了Alex提到的问题之后,我注意到在其他服务中,在使用WebSocket的服务中,该服务找不到端点。这是否意味着服务需要一个http端点来轮询?我觉得有几件事很有趣,其中前两件最重要:
kubectl get svc
时,它是否显示名称:“rediscontroller”
,因此您也应该将其用作服务选择器对于您的特殊情况,如果您在Pod规范中指定了,请确保服务规范有一个
容器端口
。请参阅详细信息:
否则,请通过官方K8s服务调试指南进行设置:
它有一个循序渐进的检查清单,从服务到DNS,从网络到kube代理等等,都需要注意。需要检查的额外内容
仅当您的部署被视为正常时,才会创建终结点。如果您错误地定义了readinessProbe(即错误),或者部署没有正确响应,则不会创建终结点。您可以尝试使用
kubectl get ep
kubectl Descripte ep
检查终结点。如果在端点描述中看到pod IP位于NotReadyAddresses
旁边,则表明pod存在问题,导致其未准备就绪,在这种情况下,它将无法针对端点注册
如果pod未准备好,可能是因为健康/活力探测器出现故障
服务上的“选择器”(
kubectl get services
kubectl descripe myServiceName
)应与POD上的标签匹配(kubectl get pods
kubectl descripe po myPodName
)。例如,选择器=app=myAppName
,pod标签=app=myAppName
。这就是服务如何确定它应该尝试连接到哪个端点。1。它确实出现在kubectl get svc
2上。第三个好球。另一个好消息是,即使更改选择器以匹配复制控制器,错误仍然存在。这很奇怪,因为kube代理日志中的上的错误消息表明它不知道该服务。如果运行kubectl get endpoints redisservice
,您会看到任何端点吗?我修复了其中的一部分,没有端点的问题是pod将死亡,如果没有另一个被启动,服务将没有端点,这是有意义的。不存在的东西很奇怪,但我是在说服务过时后才明白的。谢谢,但我早就解决了这个问题,这是1.0Cool之前的版本!根本原因是什么?仅仅是因为1.0之前的库伯内特斯稳定性问题吗?想详细说明一下吗?正如Alex Robinson指出的,1.0之前的稳定性是不匹配的。你有一个输入错误:标签而不是标签。