Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

ノヌト。 翻蚳。: この蚘事は、パブリック ドメむンで公開されおいるプロゞェクト資料の䞀郚です。 孊ぶ8s、䌁業や個人の管理者が Kubernetes を䜿甚できるようにトレヌニングしたす。 その䞭で、プロゞェクト マネヌゞャヌの Daniele Polencic は、K8s クラスタヌ䞊で実行されおいるアプリケヌションで䞀般的な問題が発生した堎合にずるべき手順に぀いお、芖芚的な手順を共有しおいたす。

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

TL;DR: これは、Kubernetes でのデプロむメントのデバッグに圹立぀図です。

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

クラスタヌ内の゚ラヌを芋぀けお修正するためのフロヌチャヌト。 原文英語は以䞋から入手できたす。 PDF О 絵ずしお.

アプリケヌションを Kubernetes にデプロむする堎合、通垞、次の XNUMX ぀のコンポヌネントを定矩する必芁がありたす。

  • 展開 - これは、ポッドず呌ばれる、アプリケヌションのコピヌを䜜成するための䞀皮のレシピです。
  • カスタマヌサヌビス — ポッド間でトラフィックを分散する内郚ロヌド バランサヌ。
  • 進入 — トラフィックが倖郚の䞖界からサヌビスにどのように到達するかの説明。

以䞋に簡単な図を瀺したす。

1) Kubernetes では、アプリケヌションは内郚ず倖郚の XNUMX ぀のロヌド バランサヌ局を介しお倖郚からトラフィックを受信したす。

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

2) 内郚バランサヌはサヌビスず呌ばれ、倖郚バランサヌはむングレスず呌ばれたす。

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

3) デプロむメントによりポッドが䜜成され、それらが監芖されたす (手動では䜜成されたせん)。

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

単玔なアプリケヌションを独自にデプロむしたいずしたす。 こんにちは䞖界。 その YAML 構成は次のようになりたす。

apiVersion: apps/v1
kind: Deployment # <<<
metadata:
  name: my-deployment
  labels:
    track: canary
spec:
  selector:
    matchLabels:
      any-name: my-app
  template:
    metadata:
      labels:
        any-name: my-app
    spec:
      containers:
      - name: cont1
        image: learnk8s/app:1.0.0
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service # <<<
metadata:
  name: my-service
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    name: app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress # <<<
metadata:
  name: my-ingress
spec:
  rules:
  - http:
    paths:
    - backend:
        serviceName: app
        servicePort: 80
      path: /

定矩は非垞に長いため、コンポヌネントが盞互にどのように関連しおいるかに぀いお混乱しやすいです。

たずえば、次のように

  • い぀ポヌト 80 を䜿甚し、い぀ 8080 を䜿甚する必芁がありたすか?
  • 競合しないようにサヌビスごずに新しいポヌトを䜜成する必芁がありたすか?
  • レヌベル名は重芁ですか? どこでも同じであるべきでしょうか?

デバッグに焊点を圓おる前に、XNUMX ぀のコンポヌネントが盞互にどのように関係しおいるかを思い出しおください。 導入ずサヌビスから始めたしょう。

導入ずサヌビスの関係

驚かれるかもしれたせんが、デプロむメントずサヌビスはたったく関連しおいたせん。 代わりに、サヌビスはデプロむメントをバむパスしお、ポッドを盎接ポむントしたす。

したがっお、ポッドずサヌビスが互いにどのように関係しおいるかに興味がありたす。 芚えおおくべき XNUMX ぀のこず:

  1. セレクタヌ (selector) サヌビスの堎合は、少なくずも XNUMX ぀のポッド ラベルず䞀臎する必芁がありたす。
  2. targetPort 䞀臎しおいる必芁がありたす containerPort ポッド内のコンテナ。
  3. port サヌビスは䜕でも構いたせん。 異なるサヌビスは異なる IP アドレスを持っおいるため、同じポヌトを䜿甚できたす。

次の図は、䞊蚘のすべおをグラフ圢匏で衚したものです。

1) サヌビスがトラフィックを特定のポッドに転送するず想像しおください。

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

2) ポッドを䜜成するずきは、次のように指定する必芁がありたす。 containerPort ポッド内の各コンテナヌに察しお:

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

3) サヌビスを䜜成するずきは、次のこずを指定する必芁がありたす。 port О targetPort. しかし、コンテナぞの接続にはどれが䜿甚されるのでしょうか?

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

4) 経由 targetPort。 䞀臎する必芁がありたす containerPort.

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

5) コンテナ内でポヌト 3000 が開いおいるずしたす。 targetPort 同じはずです。

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

YAML ファむルでは、ラベルず ports / targetPort 䞀臎しおいる必芁がありたす

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  labels:
    track: canary
spec:
  selector:
    matchLabels:
      any-name: my-app
  template:
    metadata:
     labels:  # <<<
        any-name: my-app  # <<<
   spec:
      containers:
      - name: cont1
        image: learnk8s/app:1.0.0
        ports:
       - containerPort: 8080  # <<<
---
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
  - port: 80
   targetPort: 8080  # <<<
 selector:  # <<<
    any-name: my-app  # <<<

ラベルはどうですか track: canary 「展開」セクションの䞊郚にあるのは? 合わせるべきでしょうか

このラベルはデプロむメント固有であり、サヌビスがトラフィックをルヌティングするために䜿甚されるものではありたせん。 ぀たり、削陀したり、別の倀を割り圓おたりするこずができたす。

セレクタヌはどうでしょうか matchLabels?

垞にポッドのラベルず䞀臎する必芁がありたすこれは、デプロむメントによっおポッドを远跡するために䜿甚されるためです。

正しい線集が行われたず仮定したしょう。 それらを確認するにはどうすればよいですか?

次のコマンドを䜿甚しおポッドのラベルを確認できたす。

kubectl get pods --show-labels

たたは、ポッドが耇数のアプリケヌションに属しおいる堎合は、次のようになりたす。

kubectl get pods --selector any-name=my-app --show-labels

どこ any-name=my-app ラベルです any-name: my-app.

䜕か困難は残っおいたすか

ポッドに接続できる これを行うには、次のコマンドを䜿甚する必芁がありたす port-forward kubectlで。 サヌビスに接続しお接続を確認できたす。

kubectl port-forward service/<service name> 3000:80

ここに

  • service/<service name> - サヌビス名; 私たちの堎合はそうです my-service;
  • 3000 はコンピュヌタ䞊で開く必芁があるポヌトです。
  • 80 - フィヌルドで指定されたポヌト port サヌビス。

接続が確立されおいれば、蚭定は正しいです。

接続が倱敗した堎合は、ラベルに問題があるか、ポヌトが䞀臎しおいたせん。

サヌビスずIngressの関係

アプリケヌションぞのアクセスを提䟛する次のステップには、Ingress のセットアップが含たれたす。 Ingress は、サヌビスを芋぀けお、ポッドを芋぀けおそこにトラフィックを誘導する方法を知る必芁がありたす。 Ingress は、名前ず開いおいるポヌトによっお必芁なサヌビスを芋぀けたす。

Ingress ず Service の説明では、次の XNUMX ぀のパラメヌタが䞀臎する必芁がありたす。

  1. servicePort Ingress のパラメヌタは䞀臎する必芁がありたす port サヌビス䞭。
  2. serviceName Ingress ではフィヌルドず䞀臎する必芁がありたす name サヌビス䞭。

次の図は、ポヌト接続をたずめたものです。

1) すでにご存知のずおり、サヌビスは特定の意芋を聞きたす。 port:

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

2) Ingress には次のパラメヌタがありたす。 servicePort:

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

3) このパラメヌタ (servicePort) は垞に䞀臎する必芁がありたす port サヌビス定矩内:

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

4) サヌビスでポヌト 80 が指定されおいる堎合は、次のこずが必芁です。 servicePort も 80 に等しかった:

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

実際には、次の行に泚意する必芁がありたす。

apiVersion: v1
kind: Service
metadata:
 name: my-service  # <<<
spec:
  ports:
 - port: 80  # <<<
   targetPort: 8080
  selector:
    any-name: my-app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - http:
    paths:
    - backend:
       serviceName: my-service  # <<<
       servicePort: 80  # <<<
     path: /

Ingress が実行䞭かどうかを確認するにはどうすればよいですか?

メ゜ッドを䜿甚できたす kubectl port-forwardただし、サヌビスの代わりに Ingress コントロヌラヌに接続する必芁がありたす。

たず、Ingress コントロヌラヌを䜿甚しおポッドの名前を確認する必芁がありたす。

kubectl get pods --all-namespaces
NAMESPACE   NAME                              READY STATUS
kube-system coredns-5644d7b6d9-jn7cq          1/1   Running
kube-system etcd-minikube                     1/1   Running
kube-system kube-apiserver-minikube           1/1   Running
kube-system kube-controller-manager-minikube  1/1   Running
kube-system kube-proxy-zvf2h                  1/1   Running
kube-system kube-scheduler-minikube           1/1   Running
kube-system nginx-ingress-controller-6fc5bcc  1/1   Running

Ingress ポッドを芋぀けお (別の名前空間にある可胜性がありたす)、コマンドを実行したす。 describeポヌト番号を確認するには:

kubectl describe pod nginx-ingress-controller-6fc5bcc 
--namespace kube-system 
 | grep Ports
Ports:         80/TCP, 443/TCP, 18080/TCP

最埌に、ポッドに接続したす。

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system

これで、コンピュヌタヌのポヌト 3000 にリク゚ストを送信するたびに、Ingress コントロヌラヌを䜿甚しおポッドのポヌト 80 に転送されるようになりたす。 に行くこずで http://localhost:3000、アプリケヌションによっお生成されたペヌゞが衚瀺されるはずです。

ポヌトの抂芁

どのポヌトずラベルが䞀臎する必芁があるかをもう䞀床思い出しおください。

  1. サヌビス定矩内のセレクタヌはポッドのラベルず䞀臎する必芁がありたす。
  2. targetPort 定矩ではサヌビスは䞀臎する必芁がありたす containerPort ポッド内のコンテナ。
  3. port 定矩では、サヌビスは䜕でもかたいたせん。 異なるサヌビスは異なる IP アドレスを持っおいるため、同じポヌトを䜿甚できたす。
  4. servicePort むングレスは䞀臎する必芁がありたす port サヌビスの定矩においお。
  5. サヌビス名はフィヌルドず䞀臎する必芁がありたす serviceName むングレスで。

残念ながら、YAML 構成を適切に構築する方法を知るだけでは十分ではありたせん。

物事がうたくいかない堎合はどうなりたすか?

ポッドが起動しないか、クラッシュする可胜性がありたす。

Kubernetes でアプリケヌションの問題を蚺断する 3 ぀のステップ

デプロむメントのデバッグを開始する前に、Kubernetes がどのように機胜するかをよく理解する必芁がありたす。

K8s にダりンロヌドされた各アプリケヌションには XNUMX ぀のコンポヌネントがあるため、䞀番䞋から始めお特定の順序でデバッグする必芁がありたす。

  1. たずポッドが動䜜しおいるこずを確認しおから...
  2. サヌビスがポッドにトラフィックを䟛絊しおいるかどうかを確認しおから...
  3. Ingress が正しく蚭定されおいるかどうかを確認したす。

芖芚的衚珟:

1) 問題を根本から探し始める必芁がありたす。 たずポッドにステヌタスがあるこずを確認したす Ready О Running:

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

2) ポッドの準備ができおいる堎合 (Ready)、サヌビスがポッド間でトラフィックを分散するかどうかを確認する必芁がありたす。

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

3) 最埌に、サヌビスず Ingress の間の接続を分析する必芁がありたす。

Kubernetes のトラブルシュヌティングのためのビゞュアル ガむド

1. ポッドの蚺断

ほずんどの堎合、問題はポッドに関連しおいたす。 ポッドが次のようにリストされおいるこずを確認しおください Ready О Running。 これは、次のコマンドを䜿甚しお確認できたす。

kubectl get pods
NAME                    READY STATUS            RESTARTS  AGE
app1                    0/1   ImagePullBackOff  0         47h
app2                    0/1   Error             0         47h
app3-76f9fcd46b-xbv4k   1/1   Running           1         47h

䞊蚘のコマンド出力では、最埌のポッドは次のようにリストされおいたす。 Running О Readyただし、他の XNUMX ぀は圓おはたりたせん。

䜕が間違っおいたのかをどのように理解すればよいでしょうか?

ポッドの蚺断に圹立぀コマンドが XNUMX ぀ありたす。

  1. kubectl logs <ОЌя pod'а> ポッド内のコンテナからログを抜出できたす。
  2. kubectl describe pod <ОЌя pod'а> ポッドに関連付けられたむベントのリストを衚瀺できたす。
  3. kubectl get pod <ОЌя pod'а> Kubernetes に保存されおいるポッドの YAML 構成を取埗できたす。
  4. kubectl exec -ti <ОЌя pod'а> bash ポッド コンテナの XNUMX ぀で察話型コマンド シェルを起動できたす。

どれを遞ぶべきですか?

実際のずころ、普遍的なコマンドは存圚したせん。 これらを組み合わせお䜿甚​​する必芁がありたす。

兞型的なポッドの問題

ポッド ゚ラヌには、起動゚ラヌず実行時゚ラヌの XNUMX ぀の䞻なタむプがありたす。

起動゚ラヌ:

  • ImagePullBackoff
  • ImageInspectError
  • ErrImagePull
  • ErrImageNeverPull
  • RegistryUnavailable
  • InvalidImageName

実行時゚ラヌ:

  • CrashLoopBackOff
  • RunContainerError
  • KillContainerError
  • VerifyNonRootError
  • RunInitContainerError
  • CreatePodSandboxError
  • ConfigPodSandboxError
  • KillPodSandboxError
  • SetupNetworkError
  • TeardownNetworkError

䞀郚の゚ラヌは他の゚ラヌよりも䞀般的です。 ここでは、最も䞀般的な゚ラヌずその修正方法をいく぀か玹介したす。

画像プルバックオフ

この゚ラヌは、Kubernetes がポッド コンテナヌの XNUMX ぀のむメヌゞを取埗できない堎合に発生したす。 その最も䞀般的な理由は次の XNUMX ぀です。

  1. 画像の名前が間違っおいたす。たずえば、画像を間違えたか、画像が存圚したせん。
  2. 存圚しないタグが画像に指定されたした。
  3. むメヌゞはプラむベヌト レゞストリに保存されおおり、Kubernetes にはそれにアクセスする暩限がありたせん。

最初の XNUMX ぀の理由は簡単に排陀できたす。むメヌゞ名ずタグを修正するだけです。 埌者の堎合、Secret に閉じられたレゞストリの認蚌情報を入力し、ポッドにそのレゞストリぞのリンクを远加する必芁がありたす。 Kubernetes ドキュメント内 䟋がありたす どのようにしおこれができるのか。

クラッシュ ルヌプ バックオフ

Kubenetes が゚ラヌをスロヌする CrashLoopBackOffコンテナが起動できない堎合。 これは通垞、次の堎合に発生したす。

  1. アプリケヌションには起動を劚げるバグがありたす。
  2. コンテナ 正しく構成されおいない;
  3. Liveness テストが䜕床も倱敗したした。

倱敗の理由を調べるには、コンテナからログにアクセスする必芁がありたす。 コンテナヌの再起動が速すぎるためにログにアクセスするこずが難しい堎合は、次のコマンドを䜿甚できたす。

kubectl logs <pod-name> --previous

コンテナの前の状態からの゚ラヌ メッセヌゞが衚瀺されたす。

RunContainerError

この゚ラヌは、コンテナヌの起動に倱敗した堎合に発生したす。 アプリケヌションが起動される盎前の瞬間に盞圓したす。 これは通垞、次のような誀った蚭定が原因で発生したす。

  • ConfigMap や Secrets などの存圚しないボリュヌムをマりントしようずしたした。
  • 読み取り専甚ボリュヌムを読み取り/曞き蟌みずしおマりントしようずしたす。

チヌムはそのような゚ラヌを分析するのに適しおいたす kubectl describe pod <pod-name>.

ポッドは保留状態です

ポッドは䜜成されるず、その状態のたたになりたす。 Pending.

なぜこれが起こっおいるのですか

考えられる理由は次のずおりです (スケゞュヌラヌが正垞に動䜜しおいるず想定しおいたす)。

  1. クラスタヌには、ポッドを実行するための十分なリ゜ヌス (凊理胜力やメモリなど) がありたせん。
  2. オブゞェクトは適切な名前空間にむンストヌルされたす ResourceQuota ポッドを䜜成するず、名前空間がクォヌタを超えおしたいたす。
  3. ポッドは保留䞭にバむンドされおいたす PersistentVolumeClaim.

この堎合、コマンドを䜿甚するこずをお勧めしたす kubectl describe そしおセクションを確認しおください Events:

kubectl describe pod <pod name>

関連する゚ラヌの堎合 ResourceQuotas、コマンドを䜿甚しおクラスタヌのログを衚瀺するこずをお勧めしたす。

kubectl get events --sort-by=.metadata.creationTimestamp

ポッドの準備ができおいたせん

ポッドが次のようにリストされおいる堎合 Running状態ではありたせんが、 Ready、準備が敎っおいるかどうかを確認するこずを意味したす (レディネスプロヌブ) 倱敗したす。

これが発生するず、ポッドはサヌビスに接続せず、そこにトラフィックが流れなくなりたす。 準備テストの倱敗は、アプリケヌションの問題が原因で発生したす。 この堎合、゚ラヌを芋぀けるには、セクションを分析する必芁がありたす。 Events コマンド出力で kubectl describe.

2. サヌビス蚺断

ポッドが次のようにリストされおいる堎合 Running О Ready, それでもアプリケヌションからの応答がない堎合は、サヌビスの蚭定を確認する必芁がありたす。

サヌビスは、ラベルに応じおポッドにトラフィックをルヌティングする責任がありたす。 したがっお、最初に行う必芁があるのは、サヌビスで動䜜するポッドの数を確認するこずです。 これを行うには、サヌビス内の゚ンドポむントを確認したす。

kubectl describe service <service-name> | grep Endpoints

゚ンドポむントは次の圢匏の倀のペアです。 <IP-аЎрес:пПрт>であり、少なくずも XNUMX ぀のそのようなペアが出力に存圚する必芁がありたす (぀たり、少なくずも XNUMX ぀のポッドがサヌビスで動䜜したす)。

If セクション Endpoins 空の堎合は、次の XNUMX ぀のオプションが可胜です。

  1. 正しいラベルを持぀ポッドがありたせん (ヒント: 名前空間が正しく遞択されおいるかどうかを確認しおください)。
  2. セレクタ内のサヌビスラベルに誀りがありたす。

゚ンドポむントのリストが衚瀺されおもアプリケヌションにアクセスできない堎合、おそらく原因は次のバグです。 targetPort サヌビスの説明に蚘茉されおいたす。

サヌビスの機胜を確認するにはどうすればよいですか?

サヌビスの皮類に関係なく、次のコマンドを䜿甚できたす。 kubectl port-forward それに接続するには:

kubectl port-forward service/<service-name> 3000:80

ここに

  • <service-name> - サヌビス名;
  • 3000 はコンピュヌタ䞊で開くポヌトです。
  • 80 - サヌビス偎のポヌト。

3. むングレス蚺断

ここたで読んだ方は次のこずを行っおください。

  • ポッドは次のようにリストされたす Running О Ready;
  • サヌビスはトラフィックをポッド間で正垞に分散したす。

ただし、䟝然ずしおアプリにアクセスできたせん。

これは、Ingress コントロヌラヌが正しく構成されおいない可胜性が高いこずを意味したす。 Ingress コントロヌラヌはクラスタヌ内のサヌドパヌティ コンポヌネントであるため、そのタむプに応じお異なるデバッグ方法がありたす。

ただし、特別なツヌルを䜿甚しお Ingress を構成する前に、非垞に簡単な操䜜を行うこずができたす。 むングレスでの䜿甚 serviceName О servicePort サヌビスに接続したす。 正しく構成されおいるかどうかを確認する必芁がありたす。 これは、次のコマンドを䜿甚しお実行できたす。

kubectl describe ingress <ingress-name>

If 列 Backend 空の堎合、構成゚ラヌの可胜性が高くなりたす。 バック゚ンドが配眮されおいるにもかかわらずアプリケヌションにアクセスできない堎合、問題は次のこずに関連しおいる可胜性がありたす。

  • 公共のむンタヌネットからのむングレス アクセシビリティ蚭定。
  • パブリックむンタヌネットからクラスタヌのアクセシビリティ蚭定を倉曎したす。

Ingress ポッドに盎接接続するこずで、むンフラストラクチャの問題を特定できたす。 これを行うには、たず Ingress Controller ポッドを芋぀けたす (別の名前空間にある堎合がありたす)。

kubectl get pods --all-namespaces
NAMESPACE   NAME                              READY STATUS
kube-system coredns-5644d7b6d9-jn7cq          1/1   Running
kube-system etcd-minikube                     1/1   Running
kube-system kube-apiserver-minikube           1/1   Running
kube-system kube-controller-manager-minikube  1/1   Running
kube-system kube-proxy-zvf2h                  1/1   Running
kube-system kube-scheduler-minikube           1/1   Running
kube-system nginx-ingress-controller-6fc5bcc  1/1   Running

コマンドを䜿甚する describeポヌトを蚭定するには:

kubectl describe pod nginx-ingress-controller-6fc5bcc
--namespace kube-system 
 | grep Ports

最埌に、ポッドに接続したす。

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system

これで、コンピュヌタヌ䞊のポヌト 3000 ぞのすべおのリク゚ストがポッドのポヌト 80 にリダむレクトされたす。

今は機胜したすか

  • 「はい」の堎合、問題はむンフラストラクチャにありたす。 トラフィックがクラスタヌにどのようにルヌティングされるかを正確に調べる必芁がありたす。
  • そうでない堎合は、Ingress コントロヌラヌに問題がありたす。

Ingress コントロヌラヌを動䜜させるこずができない堎合は、デバッグする必芁がありたす。

Ingress コントロヌラヌにはさたざたな皮類がありたす。 最も人気のあるものは、Nginx、HAProxy、Traefik などです。 (既存の゜リュヌションの詳现に぀いおは、「 私たちのレビュヌ — 玄翻蚳 関連するコントロヌラのドキュメントにあるトラブルシュヌティング ガむドを参照しおください。 なぜなら Ingress Nginx は最も人気のある Ingress コントロヌラヌです。この蚘事には、それに関連する問題を解決するためのヒントがいく぀か含たれおいたす。

Ingress Nginx コントロヌラヌのデバッグ

Ingress-nginx プロゞェクトには公匏の kubectl 甚プラグむン。 チヌム kubectl ingress-nginx 次の甚途に䜿甚できたす。

  • ログ、バック゚ンド、蚌明曞などの分析。
  • Ingress ぞの接続。
  • 珟圚の構成を怜蚎䞭です。

次の XNUMX ぀のコマンドはこれに圹立ちたす。

  • kubectl ingress-nginx lint — 小切手 nginx.conf;
  • kubectl ingress-nginx backend — バック゚ンドを探玢したすず同様 kubectl describe ingress <ingress-name>);
  • kubectl ingress-nginx logs — ログをチェックしたす。

堎合によっおは、フラグを䜿甚しお Ingress コントロヌラヌの正しい名前空間を指定する必芁があるこずに泚意しおください。 --namespace <name>.

サマリヌ

どこから始めればよいか分からない堎合、Kubernetes のトラブルシュヌティングは困難になる可胜性がありたす。 問題には垞にボトムアップで取り組む必芁がありたす。ポッドから始めお、サヌビスず Ingress に進みたす。 この蚘事で説明するデバッグ手法は、次のような他のオブゞェクトにも適甚できたす。

  • アむドル ゞョブず Cron ゞョブ。
  • StatefulSet ず DaemonSet。

感謝の意を衚したす ゲルゲリヌ・リスコ, ダニ゚ル・ワむベル О チャヌルズ・クリスティラヌゞ 貎重なコメントや远加をお埅ちしおおりたす。

翻蚳者からの远䌞

私たちのブログもお読みください:

出所 habr.com

コメントを远加したす