私はびっくりしました。
ステージングおよび実稼働環境があります。どちらの環境にも同じデプロイ、サービス、上り、ファイアウォールルールがあり、どちらも200
で/
を提供します。
ただし、ステージング環境をオンにして同じ入力をプロビジョニングした後、ステージングサービスはSome backend services are in UNKNOWN state
で失敗します。生産はまだライブです。
フロントエンドポッドとバックエンドポッドの両方がGKEで準備されています。ヘルスチェックを手動でテストしましたが、/
にアクセスするとパスします。
ログやgcpドキュメントに正しい方向を示しているものは何もありません。何が壊れたのでしょうか?
ingress.yaml
:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: fanout-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: "STATIC-IP"
spec:
backend:
serviceName: frontend
servicePort: 8080
tls:
- hosts:
- <DOMAIN>
secretName: staging-tls
rules:
- Host: <DOMAIN>
http:
paths:
- path: /*
backend:
serviceName: frontend
servicePort: 8080
- path: /backend/*
backend:
serviceName: backend
servicePort: 8080
frontend.yaml
:
apiVersion: v1
kind: Service
metadata:
labels:
app: frontend
name: frontend
namespace: default
spec:
ports:
- nodePort: 30664
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: frontend
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
generation: 15
labels:
app: frontend
name: frontend
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 1
selector:
matchLabels:
app: frontend
minReadySeconds: 5
template:
metadata:
labels:
app: frontend
spec:
containers:
- image: <our-image>
name: frontend
ports:
- containerPort: 8080
protocol: TCP
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 3
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 3
昨日もこのガイド https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer
うまくいきませんでした。何が起こったのかわからないが、30分待機していても、イングレスはバックエンドのUNKNOWN状態を報告していた。
24時間後、状況は改善されたようです。 L7 httpイングレスは機能しますが、正常なバックエンドのレポートに大きな遅延が生じます。
これはバグだと思います。新しいクラスターを作成しましたが、再現できませんでした。誰かが再びこれにぶつかった場合は、新しいクラスターを試すことをお勧めします。
まだこの問題が発生していますか?
私は次のGoogle公開ドキュメントに従って再現を試みました: IngressでのHTTP負荷分散の設定 展開:
ポート8080でHTTPサーバーをリッスンするサンプルWebアプリケーションコンテナーイメージを使用するWebアプリ:
ただし、現在は機能しているようです。したがって、この問題が引き続き発生する場合は、 Google issue-tracking tool を使用して、kubernetes/ingress-gceに対して public issue を提出することを検討してください。この問題がより良い可視性とより多くのサンプリングを得ることができるように再現するための手順を含む、できるだけ多くの詳細を含めてください。
ご注意ください:
Issue Tracker ユーザーコンテンツおよび行動のポリシー は、機密の個人情報やスパムなどを含む、Issue Trackerへの送信に不適切な情報の種類を詳しく説明しています。 Issue Trackerで不適切なコンテンツを送信しないでください。
レポ出力$ kubectl describe ing
sunny@test-dev:~$ kubectl describe ing basic-ingress
Name: basic-ingress
Namespace: default
Address: xx.xxx.xxx.228
Default backend: web:8080 (10.8.2.6:8080)
Rules:
Host Path Backends
---- ---- --------
* * web:8080 (10.8.2.6:8080)
Annotations:
target-proxy: k8s-tp-default-basic-ingress--f5636f071d87exxx
url-map: k8s-um-default-basic-ingress--f5636f071d87exxx
backends: {"k8s-be-31544--f5636f071d87exxx":"HEALTHY"}
forwarding-rule: k8s-fw-default-basic-ingress--f5636f071d87exxx
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Service 7m (x376 over 2d) loadbalancer-controller default backend set to web:31544