Я выполнил учебник балансировки нагрузки: https://cloud.google.com/container-engine/docs/tutorials/http-balancer, который отлично работает, когда я использую изображение Nginx, когда я пытаюсь использовать свой собственный образ приложения, хотя backend переключается на нездоровый.
Мое приложение перенаправляет на/(возвращает 302), но я добавил livenessProbe
в определении контейнера:
livenessProbe:
httpGet:
path: /ping
port: 4001
httpHeaders:
- name: X-health-check
value: kubernetes-healthcheck
- name: X-Forwarded-Proto
value: https
- name: Host
value: foo.bar.com
Мой вход выглядит так:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: foo
spec:
backend:
serviceName: foo
servicePort: 80
rules:
- host: foo.bar.com
Конфигурация сервиса:
kind: Service
apiVersion: v1
metadata:
name: foo
spec:
type: NodePort
selector:
app: foo
ports:
- port: 80
targetPort: 4001
Здоровье Backends в ingress describe ing
выглядит следующим образом:
backends: {"k8s-be-32180--5117658971cfc555":"UNHEALTHY"}
и правила входа выглядят так:
Rules:
Host Path Backends
---- ---- --------
* * foo:80 (10.0.0.7:4001,10.0.1.6:4001)
Любые указатели получили очень много, я старался работать в течение нескольких часов без везения.
Обновить
Я добавил readinessProbe
к моему развертыванию, но что-то все еще кажется ударом /, и вход по-прежнему нездоровый. Мой зонд выглядит так:
readinessProbe:
httpGet:
path: /ping
port: 4001
httpHeaders:
- name: X-health-check
value: kubernetes-healthcheck
- name: X-Forwarded-Proto
value: https
- name: Host
value: foo.com
Я изменил свой сервис на:
kind: Service
apiVersion: v1
metadata:
name: foo
spec:
type: NodePort
selector:
app: foo
ports:
- port: 4001
targetPort: 4001
Update2
После того, как я удалил пользовательские заголовки из readinessProbe
он начал работать! Большое спасибо.