Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Proxy 我的kubernetes&x27;服务可以';找不到终点?_Proxy_Docker_Coreos_Kubernetes - Fatal编程技术网

Proxy 我的kubernetes&x27;服务可以';找不到终点?

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: "

我在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"
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
    时,它是否显示
  • 您的服务上的选择器看起来不正确。选择器应该是与复制控制器模板中的键-值-标签对匹配的键-值-标签对。rc模板中的标签是
    名称:“rediscontroller”
    ,因此您也应该将其用作服务选择器
  • 每个对象开头的id字段是什么?不需要,这是v1beta3中的有效字段

  • 对于您的特殊情况,如果您在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之前的稳定性是不匹配的。你有一个输入错误:标签而不是标签。