当我创建GCE入口时,Google Load Balancer不会从就绪探针设置运行状况检查。根据文档(Ingress GCE health checks),它应该提取它。
在支持服务的pod上公开任意URL作为就绪探测。
任何想法为什么?
部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: frontend-prod
labels:
app: frontend-prod
spec:
selector:
matchLabels:
app: frontend-prod
replicas: 3
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: frontend-prod
spec:
imagePullSecrets:
- name: regcred
containers:
- image: app:latest
readinessProbe:
httpGet:
path: /healthcheck
port: 3000
initialDelaySeconds: 15
periodSeconds: 5
name: frontend-prod-app
- env:
- name: PASSWORD_PROTECT
value: "1"
image: nginx:latest
readinessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 5
periodSeconds: 5
name: frontend-prod-nginx
服务:
apiVersion: v1
kind: Service
metadata:
name: frontend-prod
labels:
app: frontend-prod
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: frontend-prod
入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend-prod-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: frontend-prod-ip
spec:
tls:
- secretName: testsecret
backend:
serviceName: frontend-prod
servicePort: 80
答案 0 :(得分:6)
显然,您需要在PodSpec上包含容器端口。 似乎没有在任何地方记录。
e.g。
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
谢谢Brian! https://github.com/kubernetes/ingress-gce/issues/241
答案 1 :(得分:3)
现在可以在最新的GKE中实现(我在1.14.10-gke.27
上,不确定是否很重要)
readinessProbe
。readinessProbe.httpGet.path
中的路径。答案 2 :(得分:2)
Google最近添加了对CRD的支持,该支持可以配置您的后端服务以及运行状况检查:
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: backend-config
namespace: prod
spec:
healthCheck:
checkIntervalSec: 30
port: 8080
type: HTTP #case-sensitive
requestPath: /healthcheck
请参见here。
答案 3 :(得分:0)
GKE Ingress运行状况检查路径目前无法配置。您可以转到http://console.cloud.google.com(UI)并访问Load Balancers列表以查看它使用的运行状况检查。
目前,Ingress上指定的每个GET /
上的Ingress运行状况检查为backend:
。因此,GKE Ingress背后的所有应用都必须将HTTP 200 OK返回GET /
个请求。
也就是说,您在Pod上指定的健康检查仍在使用 - 通过kubelet确保您的Pod实际上正常运行并且健康。
答案 4 :(得分:0)
Google Cloud Load Balancer无法从Kubernetes Pod准备就绪探测器获取GCE运行状况检查配置的另一个原因可能是该服务被配置为“无选择器”(selector
属性为空,您可以直接管理端点)。
例如, kube-lego
:请参见https://github.com/jetstack/kube-lego/issues/68#issuecomment-303748457和https://github.com/jetstack/kube-lego/issues/68#issuecomment-327457982。
原始问题 在服务中指定了选择器,因此该提示不适用。此提示可以为那些因不同原因而遇到相同问题的访客提供服务。