我正在我的kubernetes集群上配置gce ingress并且我将Django应用程序指定为默认后端。该应用程序强制执行HTTPS,因此如果您尝试执行简单的HTTP请求,Django将返回301.显然,HTTP运行状况检查不会通过。我正在关注此example以启用HTTPS运行状况检查。一旦生成健康检查,我手动编辑了计算引擎中的路径,但是从Django应用程序日志中看来它似乎没有收到任何请求,因此它会导致不健康,我无法使入口工作。
如何在这种情况下进行健康检查?
配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.global-static-ip-name: web-static-ip
spec:
tls:
- hosts:
- foo.domain.it
secretName: production-tls
backend:
serviceName: app
servicePort: app-https
apiVersion: v1
kind: Service
metadata:
name: app
annotations:
service.alpha.kubernetes.io/app-protocols: '{"app-https":"HTTPS"}'
labels:
component: app
role: web
spec:
type: NodePort
ports:
- port: 12345
targetPort: 8000
protocol: TCP
name: app-https
selector:
component: app
role: web
type: LoadBalancer
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: app
labels:
component: app
role: web
spec:
replicas: 1
template:
metadata:
labels:
component: app
role: web
spec:
containers:
- name: app
image: [my-image]
imagePullPolicy: Always
ports:
- containerPort: 8000
envFrom:
- configMapRef:
name: app-config
答案 0 :(得分:0)
要检查的事情:
1)Django应用程序是否实际上在端口8000上侦听HTTPS(您还没有为应用程序本身指定TLS证书机密)?
2)您尚未为应用程序指定就绪探测(也用于GCE HTTP LB运行状况检查),请参阅您为配置HTTPS运行状况检查而发布的示例:https://github.com/kubernetes/ingress-gce/blob/master/examples/backside-https/app.yaml
答案 1 :(得分:0)
当您点击运行状况检查(网络服务>负载均衡器>点击运行状况检查名称)时,它会在“端口”下显示什么?
它必须是NodePort的值。
运行以下内容时,服务'app-https'的NodePort值是多少?
kubectl get services
它应该生成一个包含这样的输出:
12345:32605/TCP
在此示例中,32605将是NodePort,这是应该在运行状况检查的“端口”部分中的值。