我正在尝试更新我的部署的image 。 为此,我执行kubectl edit deployment web并更改spec.template.spec.containers.image属性:
gcr.io/my-project-id-1234/app:v1
至:
gcr.io/my-project-id-1234/app:v2
从日志中,我知道部署更新很好。 我遇到的问题是TLS入口; 这里是我的configuration:
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: tls-ingress spec: tls: - secretName: tls-secrets backend: serviceName: web servicePort: 80
这里是更新之前kubectl describe ing web的结果:
$ kubectl describe ing Name: tls-ingress Namespace: default Address: 105.78.154.212 Default backend: web:80 (10.0.2.3:8000) TLS: tls-secrets terminates Rules: Host Path Backends ---- ---- -------- Annotations: backends: {"k8s-be-32171":"HEALTHY"} forwarding-rule: k8s-fw-default-tls-ingress https-forwarding-rule: k8s-fws-default-tls-ingress https-target-proxy: k8s-tps-default-tls-ingress static-ip: k8s-fw-default-tls-ingress target-proxy: k8s-tp-default-tls-ingress url-map: k8s-um-default-tls-ingress
更新之前,一切工作正常。 但不久之后,stream量停止成功路由到我的集群。 描述入口现在返回:
Name: tls-ingress Namespace: default Address: 105.78.154.212 Default backend: web:80 (10.0.2.3:8000) TLS: tls-secrets terminates Rules: Host Path Backends ---- ---- -------- Annotations: static-ip: k8s-fw-default-tls-ingress target-proxy: k8s-tp-default-tls-ingress url-map: k8s-um-default-tls-ingress backends: {"k8s-be-32171":"UNHEALTHY"} forwarding-rule: k8s-fw-default-tls-ingress https-forwarding-rule: k8s-fws-default-tls-ingress https-target-proxy: k8s-tps-default-tls-ingress
在更新我的部署时如何正确更新Ingress?
入口指向一个服务。 该服务指向一组具有一些标签的豆荚。 部署在Pod上定义这些标签。 以下是要排除故障的列表:
确认您的服务上的标签select符与您的部署正在创build的单元上的标签匹配。 否则,部署创build的Pod将不会被选中用于该服务,您的Ingress将不会指向任何内容。
确认服务作为NodePort 。 否则,来自Google的外部负载均衡器将无法在集群内部达到。
确认豆荚正在运行/健康。 部署可能会更新,但Pods不健康或CrashLoop。 应用程序使用GET / 200状态代码进行响应非常重要。
为健康检查创build一个防火墙规则:
gcloud compute firewall-rules create allow-130-211-0-0-22 \ --source-ranges 130.211.0.0/22 \ --allow tcp:30000-32767
入口报告{“k8s-be-32171”:“UNHEALTHY”},表示在后端服务上运行状况检查失败。
确保应用程序窗格已启动并运行,请检查
kubectl get pods <pod-name>
和
kubectl get deployment <deplyment-name>
如果应用程序窗口已准备就绪并正在运行,则入口应自动连接到新窗口,但取决于运行状况检查参数可能需要一段时间。