GCE Ingress not picking up health check from readiness probe

匿名 (未验证) 提交于 2019-12-03 01:38:01

问题:

When I create a GCE ingress, Google Load Balancer does not set the health check from the readiness probe. According to the docs (Ingress GCE health checks) it should pick it up.

Expose an arbitrary URL as a readiness probe on the pods backing the Service.

Any ideas why?

Deployment:

apiVersion: extensions/v1beta1 kind: Deployment metadata:   name: frontend-prod   labels:     app: frontend-prod spec:   selector:     matchLabels:       app: frontend-prod   replicas: 3   strategy:     rollingUpdate:       maxSurge: 1       maxUnavailable: 1     type: RollingUpdate   template:     metadata:       labels:         app: frontend-prod     spec:       imagePullSecrets:         - name: regcred       containers:       - image: app:latest         readinessProbe:           httpGet:             path: /healthcheck             port: 3000           initialDelaySeconds: 15           periodSeconds: 5         name: frontend-prod-app       - env:         - name: PASSWORD_PROTECT           value: "1"         image: nginx:latest         readinessProbe:           httpGet:             path: /health             port: 80           initialDelaySeconds: 5           periodSeconds: 5         name: frontend-prod-nginx 

Service:

apiVersion: v1 kind: Service metadata:   name: frontend-prod   labels:     app: frontend-prod spec:   type: NodePort   ports:   - port: 80     targetPort: 80     protocol: TCP     name: http   selector:     app: frontend-prod 

Ingress:

apiVersion: extensions/v1beta1 kind: Ingress metadata:   name: frontend-prod-ingress   annotations:     kubernetes.io/ingress.global-static-ip-name: frontend-prod-ip spec:   tls:     - secretName: testsecret   backend:     serviceName: frontend-prod     servicePort: 80 

回答1:

So apparently, you need to include the container port on the PodSpec. Does not seem to be documented anywhere.

e.g.

    spec:       containers:       - name: nginx         image: nginx:1.7.9         ports:         - containerPort: 80 

Thank you to Brian! https://github.com/kubernetes/ingress-gce/issues/241



回答2:

GKE Ingress health check path is currently not configurable. You can go to http://console.cloud.google.com (UI) and visit Load Balancers list to see the health check it uses.

Currently the health check for an Ingress is GET / on each backend: specified on the Ingress. So all your apps behind a GKE Ingress must return HTTP 200 OK to GET / requests.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!