GCEイングレスを作成すると、Google LoadBalancerは準備プローブからヘルスチェックを設定しません。ドキュメント( Ingress GCEヘルスチェック )によると、それを取得する必要があります。
サービスをサポートするポッドの準備プローブとして任意の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
したがって、明らかに、PodSpecにコンテナポートを含める必要があります。どこにも文書化されていないようです。
例えば.
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
ブライアンに感謝します! https://github.com/kubernetes/ingress-gce/issues/241
GKEIngressヘルスチェックパスは現在構成できません。 http://console.cloud.google.com (UI)にアクセスし、ロードバランサーリストにアクセスして、使用されているヘルスチェックを確認できます。
現在、イングレスのヘルスチェックは、イングレスで指定された各GET /
でbackend:
です。したがって、GKE Ingressの背後にあるすべてのアプリは、GET /
リクエストに対してHTTP200OKを返す必要があります。
とはいえ、ポッドで指定したヘルスチェックは、ポッドが実際に機能していて正常であることを確認するために、kubeletによって引き続き使用されています。
Google Cloud Load BalancerがKubernetesポッド準備プローブからGCEヘルスチェック構成を取得しないもう1つの理由は、サービスが「セレクターレス」として構成されていることである可能性があります(selector
属性が空で、エンドポイントを直接管理します)。
これは、例えばの場合です。 kube-lego
: https://github.com/jetstack/kube-lego/issues/68#issuecomment-303748457 および https://github.com/jetstack/kube-lego/issues/68#issuecomment-327457982 。
元の質問にはサービスでセレクターが指定されているため、このヒントは適用されません。このヒントは、同じ問題を別の原因で抱えている訪問者に役立ちます。