Wil*_*ink 21 docker kubernetes google-kubernetes-engine
我按照负载均衡器教程:https: //cloud.google.com/container-engine/docs/tutorials/http-balancer,当我使用Nginx图像时工作正常,当我尝试使用自己的应用程序图像时后端切换到不健康.
我的应用程序重定向到/(返回302),但我livenessProbe在pod定义中添加了一个:
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
Run Code Online (Sandbox Code Playgroud)
我的入口看起来像:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: foo
spec:
backend:
serviceName: foo
servicePort: 80
rules:
- host: foo.bar.com
Run Code Online (Sandbox Code Playgroud)
服务配置是:
kind: Service
apiVersion: v1
metadata:
name: foo
spec:
type: NodePort
selector:
app: foo
ports:
- port: 80
targetPort: 4001
Run Code Online (Sandbox Code Playgroud)
后端运行状况ingress describe ing如下:
backends: {"k8s-be-32180--5117658971cfc555":"UNHEALTHY"}
Run Code Online (Sandbox Code Playgroud)
入口的规则如下:
Rules:
Host Path Backends
---- ---- --------
* * foo:80 (10.0.0.7:4001,10.0.1.6:4001)
Run Code Online (Sandbox Code Playgroud)
任何指针都非常受欢迎,我一直在努力工作几个小时而没有运气.
更新
我已经添加了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
Run Code Online (Sandbox Code Playgroud)
我将服务改为:
kind: Service
apiVersion: v1
metadata:
name: foo
spec:
type: NodePort
selector:
app: foo
ports:
- port: 4001
targetPort: 4001
Run Code Online (Sandbox Code Playgroud)
UPDATE2
从我readinessProbe开始工作后删除自定义标头后!非常感谢.
tex*_*tex 35
您需要添加一个readinessProbe(只需复制您的livenessProbe).
健康检查
目前,所有服务后端必须满足以下任一要求才能通过从GCE loadbalancer发送给它的HTTP运行状况检查:1.响应200 on'/'.内容无关紧要.2.在支持服务的pod上公开任意URL作为准备探测.
还要确保readinessProbe指向您向Ingress公开的同一端口.在您的情况下,因为您只有一个端口,所以很好,如果您添加另一个端口,您可能会遇到麻烦.
我认为值得注意的是,这是文档中一个非常重要的限制:
对 Pod 的 readinessProbe 的更改不会影响创建后的 Ingress。
在添加了我的 readinessProbe 之后,我基本上删除了我的入口 ( kubectl delete ingress <name>),然后再次应用我的 yaml 文件来重新创建它,并在一切恢复正常后不久。
我遇到了同样的问题。遵循 Tex 的提示,但继续查看该消息。事实证明,我不得不等待几分钟才能进入验证服务健康状况。如果有人要执行相同的操作并完成所有步骤,例如readinessProbe和linvenessProbe,只需确保您的入口指向的服务是NodePort,然后等待几分钟,直到黄色警告图标变为绿色。此外,检查 StackDriver 上的日志以更好地了解发生了什么。
| 归档时间: |
|
| 查看次数: |
11566 次 |
| 最近记录: |