我的kubernetes服务怎么找不到端点?
我在coreos上运行kubernetes集群。
我有一个kubernetes复制控制器工作正常。 它看起来像这样:
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"
但是我有一个复制控制器的pod服务,如下所示:
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
据我所知,我确实有服务指向正确的吊舱和正确的端口,但我错了吗?
更新1
我注意到另一个可能的问题,修复亚历克斯提到的事情后,我注意到在其他服务,它使用websockets,服务无法find一个端点。 这是否意味着服务需要一个http端点来轮询?
有几件事对我来说很有趣,前两件事最重要:
- 它看起来像服务不存在。 你确定它被正确地创build了吗? 当你运行
kubectl get svc
时,它显示kubectl get svc
吗? - 您的服务select器看起来不正确。 select器应该是与复制控制器模板中匹配的键值标签对。 您的rc模板中的标签
name: "rediscontroller"
是name: "rediscontroller"
,所以您也应该将其用作服务select器。 - 每个对象开始时的id字段是什么? 这看起来不像是v1beta3中的有效字段。
对于您的特定情况,如果您在Pod规范中指定了服务规范,请确保服务规范具有containerPort
。 查看详情: http : //kubernetes.io/docs/user-guide/debugging-services/#my-service-is-missing-endpoints
否则请通过官方K8s服务debugging指南进行设置:
http://kubernetes.io/docs/user-guide/debugging-services/
它有从服务到DNS到联网到kube代理等的一步一步的检查清单。
额外的事情来检查。
仅当您的部署被认为是健康的时才会创build端点。 如果您已经准确定义了准备就绪探测器(mea culpa),或者部署没有正确响应,则不会创build端点。
- “docker工通过代理隧道运行hello-world”
- 如何从“Docker quickstartterminal”启动docker时添加`–registry-mirror`?
- Nginx反向代理:使用jwilder / nginx-proxy为gitlab容器设置正确的端口
- 为什么我无法从Vagrant VM中parsingdocker.io和其他主机
- docker代理获取accept4:错误的文件描述符
- websocket协议不支持通过Apache2反向代理
- 当部署模式是群集时,spark-submit代理主机/端口configuration不受尊重
- Docker与golang-onbuild构成无法在代理之后下载
- docker后面的代理不使用系统代理信息