我正在学习如何使用入口在谷歌Kubernetes引擎上公开我的应用程序。我学习了几本教程,大致了解了需要什么。然而,我不知道为什么我的服务被标记为不健康,尽管它们可以从我直接定义的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服务作为入口的后端:通过连接到节点的公共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
然后是入口清单文件:
在这里,我保留了一个名为“gke my static IP”的静态IP地址,并创建了一个名为“mydomain.web.com”的managedCertificate“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
默认情况下,入口会创建两个后端,一个在/healthz路径上,另一个在自定义路径/app1上。healthz路径返回200 OK,但我的自定义路径无法连接。我已经检查了防火墙规则,并允许使用端口tcp30000-32767。
检查堆栈驱动程序,运行状况检查尝试使用 /app1路径访问我的LoadBalancer的IP,但似乎总是返回502错误。
我的设置中是否缺少任何步骤?
附加入口、endpoint:
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)和失败阈值(failureurreshold)来修补就绪性和活跃性探测,我成功地实现了入口。这可能是因为我的应用程序需要多一点缓冲时间才能运行。
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
问题内容: 我遵循了负载均衡器教程:https : //cloud.google.com/container- engine/docs/tutorials/http-balancer 在使用Nginx映像时,当尝试使用自己的应用程序映像时,它工作正常后端切换为不正常。 我的应用程序重定向到/(返回302),但在pod定义中添加了一个: 我的入口看起来像: 服务配置为: 后端健康状况如下: 入口的规
我遵循了负载均衡器教程:https://cloud.google.com/container-engine/docs/tutorials/http-balancer当我使用Nginx映像时工作正常,当我尝试使用我自己的应用程序映像时,尽管后端切换到不健康。 我的应用程序重定向到/(返回302),但我在pod定义中添加了一个livenessProbe: 我的入口看起来像: 服务配置为: 入口中的后端
我正在学习如何使用入口来公开我的应用程序GKE v1.19。我按照GKE docs for Service、Ingress和BackendConfig的教程进行了以下设置。然而,一段时间后,我的后端服务仍然变得不健康。我的目标是覆盖入口控制器的默认“/”健康检查路径。 我在部署中定义了相同的运行状况检查。livenessProbe和readinessProbe下的yaml文件,它们似乎工作正常,因
首先,我在https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer测试了教程 这很好用。我还测试了相同的教程,但添加了一个tls机密来测试https,这也很好。 当我创造自己的形象时,我的问题就出现了。以下是我采取的步骤: Dockerfile: 带命令: 我读过无数关于当你的后台状态为“不健康”时该怎么办的帖子
我正在GKE集群中运行Istio入口网关。服务通过一个节点端口运行。我想将其连接到Google后端服务。然而,我们需要有一个健康检查,必须针对Istio运行。您知道Istio是否公开任何HTTPendpoint来运行运行状况检查并验证其状态吗?
我试图通过GKE部署应用程序。到目前为止,我为应用程序的前端和后端创建了两个服务和两个部署。我使用“gce”控制器创建了一个ingress ressource,并映射了服务,如图所示 它几乎工作得很好(不是所有映射正确的根,但它工作得很好)。我在代码上添加了修改(只有应用程序的代码),我重建了图像并重新创建了服务,但入口似乎对我添加的修改和 我所有的服务都处于不健康状态 这是前台服务 当我描述时,