不健康的入口服务

时间:2018-07-12 12:43:08

标签: google-compute-engine kubernetes-ingress google-kubernetes-engine

我正在尝试通过GKE部署应用程序。到目前为止,我为App的正面和背面创建了两个服务和两个部署。 我使用“ gce”控制器创建了一个入口资源,并按所示映射了服务

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    app: app
    part: ingress
  name: my-irool-ingress
  annotations:
    kubernetes.io/ingress.class: "gce"
    kubernetes.io/ingress.global-static-ip-name: my-ip
spec:
 backend:
    serviceName: client-svc
    servicePort: 3000
 rules:
  - http:
        paths:
        - path: /back
          backend:
            serviceName: back-svc
            servicePort: 9000
  - http:
        paths:
        - path: /back/*
          backend:
            serviceName: back-svc
            servicePort: 9000

它几乎可以正常工作(不是所有的根都正确映射,但是它可以工作)。我在代码(仅是应用程序的代码)上添加了修改,并且重建了图像并重新创建了服务,但是入口似乎对我添加的修改和

感到愤怒
  

我所有的服务都变得不健康

这是前台服务

apiVersion: v1
kind: Service
metadata:
  labels:
    app: app
    part: front
  name: client
  namespace: default
spec:
  type: NodePort
  ports:
  - nodePort: 32585
    port: 3000
    protocol: TCP
  selector:
     app: app
     part: front

当我进行描述时,除了我的服务不健康之外,我一无所获。 在创建的那一刻,我不断获得

  

警告GCE 6m负载均衡器-控制器   googleapi:错误409:资源   '[project / idproject] / global / healthChecks / k8s-be-32585--17c7 ...... 01'   已经存在,已经存在

我的问题是:

  • 上面显示的代码有什么问题?

  • 是否应该将所有服务都映射到端口80(默认入口端口,以便它可以正常工作?)
  • readinessProbe和livenessProbe是什么?我应该添加它们还是将一个映射到默认后端的服务就足够了?

1 个答案:

答案 0 :(得分:0)

对于第一个问题,deleting and re-creating the ingress可以解决问题。对于第二个问题,您可以查看配置“活动和就绪”探针here的完整步骤。此外,按照here的定义(以广告连播的示例为例):

  

livenessProbe:指示容器是否正在运行。如果   活度探测失败,kubelet杀死了Container,并且   容器受其重新启动策略约束。如果容器没有   提供活动性探针,默认状态为“成功”。

     

和readinessProbe:指示容器是否准备好   服务请求。如果就绪探针失败,则端点   控制器从所有端点删除Pod的IP地址   与Pod相匹配的服务。之前的默认准备状态   初始延迟为“失败”。如果容器不准备就绪   探针,默认状态为“成功”。