gpt4 book ai didi

kubernetes - GKE Ingress 后端标记为 "Unhealthy"

转载 作者:行者123 更新时间:2023-12-02 12:01:52 30 4
gpt4 key购买 nike

我正在学习如何使用入口在 Google Kubernetes Engine 上公开我的应用程序。我遵循了几个教程,并对所需的内容进行了粗略的设置。但是,我不知道为什么我的服务被标记为不健康,尽管它们可以从我直接定义的 NodePort 服务访问。

这是我的部署文件:(我删除了一些数据,但大部分保持不变)

--
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "deployment-1"
namespace: "default"
spec:
containers:
- name: myContainer
image: "myImage/"
readinessProbe:
httpGet:
path: /app1
port: 8080
initialDelaySeconds: 70
livenessProbe:
httpGet:
path: /app1
port: 8080
initialDelaySeconds: 70
ports:
- containerPort: 8080
protocol: TCP
volumeMounts:
- mountPath: opt/folder/libs/jdbc/
name: lib
volumes:
- name: lib
persistentVolumeClaim:
claimName: lib
---

当我阅读时,我需要一个 ReadinessProbe 和 LivinessProbe 以便 GKE 在我定义的路径上运行健康检查,并通过使用我自己定义的路径显示为/app1 (这将返回 200 OK),生成的健康检查应该通过。我将初始延迟设置为 70 秒,作为镜像中运行的 tomcat 服务器启动的缓冲时间。

接下来,我创建了一个 NodePort 服务作为 Ingress 的后端:
我通过连接该服务的节点公网IP和nodeport进行测试,运行成功。
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- name: my-port
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: deployment-1
type: NodePort

然后是 Ingress list 文件:

在这里,我保留了一个名为“gke-my-static-ip”的静态 IP 地址,并创建了一个域名为“mydomain.web.com”的托管证书“gke-my-certificate”。这也在 DNS 记录上进行了配置,以将其指向该保留的静态 IP。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gke-my-ingress-1
annotations:
kubernetes.io/ingress.global-static-ip-name: gke-my-static-ip
networking.gke.io/managed-certificates: gke-my-certificate
spec:
rules:
- host: mydomain.web.com
http:
paths:
- backend:
serviceName: my-service
servicePort: my-port

默认情况下,入口创建 2 个后端,一个在/healthz 路径上,一个在我自定义的路径/app1 上。 healthz 路径返回 200 OK,但我自定义的路径无法连接。我检查了防火墙规则并允许端口 tcp30000-32767。

检查堆栈驱动程序,健康检查尝试使用/app1 路径访问我的 LoadBalancer 的 IP,但它似乎总是返回 502 错误。

我是否缺少设置中的任何步骤?

附加入口,端点:
NAME                                        HOSTS                    ADDRESS          PORTS   AGE
ingress.extensions/gke-my-ingress-1 mydomain.web.com <IP_ADDRESS> 80 3d15h

NAME ENDPOINTS AGE
endpoints/kubernetes <IP_ADDRESS>443 9d
endpoints/presales-service <IP_ADDRESS>:8080 4d16h

kubectl 获取入口:
Name:             gke-my-ingress-1
Namespace: default
Address: <IP_ADDRESS>
Default backend: default-http-backend:80 (<IP_ADDRESS>)
Rules:
Host Path Backends
---- ---- --------
mydomain.web.com
/ my-service:my-port (<IP_ADDRESS>:8080)
Annotations:
ingress.kubernetes.io/target-proxy: k8s-tp-default-gke-my-ingress-1--d8d0fcf4484c1dfd
ingress.kubernetes.io/url-map: k8s-um-default-gke-my-ingress-1--d8d0fcf4484c1dfd
kubernetes.io/ingress.global-static-ip-name: gke-my-static-ip
networking.gke.io/managed-certificates: gke-my-certificate
ingress.gcp.kubernetes.io/pre-shared-cert: mcrt-e7dd5612-e6b4-42ca-91c9-7d9a86abcfb2
ingress.kubernetes.io/forwarding-rule: k8s-fw-default-gke-my-ingress-1--d8d0fcf4484c1dfd
ingress.kubernetes.io/ssl-cert: mcrt-e7dd5612-e6b4-42ca-91c9-7d9a86abcfb2
kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.global-static-ip-name":"gke-my-static-ip","networking.gke.io/managed-certificates":"gke-my-certificate"},"name":"gke-my-ingress-1","namespace":"default"},"spec":{"rules":[{"host":"mydomain.web.com","http":{"paths":[{"backend":{"serviceName":"my-service","servicePort":"my-port"},"path":"/"}]}}]}}

ingress.kubernetes.io/backends: {"k8s-be-30242--d8d0fcf4484c1dfd":"HEALTHY","k8s-be-30310--d8d0fcf4484c1dfd":"UNHEALTHY"}
ingress.kubernetes.io/https-forwarding-rule: k8s-fws-default-gke-my-ingress-1--d8d0fcf4484c1dfd
ingress.kubernetes.io/https-target-proxy: k8s-tps-default-gke-my-ingress-1--d8d0fcf4484c1dfd

最佳答案

通过添加successThreshold和FailureThreshold来修改Readiness和Liveliness探针,我设法让我的入口工作。这可能是因为我的应用程序需要更多的缓冲时间来运行。

        readinessProbe:
httpGet:
path: /app1/
port: 8080
periodSeconds: 5
timeoutSeconds: 60
successThreshold: 1
failureThreshold: 3
initialDelaySeconds: 70
livenessProbe:
httpGet:
path: /app1/
port: 8080
periodSeconds: 5
timeoutSeconds: 60
successThreshold: 1
failureThreshold: 3
initialDelaySeconds: 70

关于kubernetes - GKE Ingress 后端标记为 "Unhealthy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60540701/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com