Calico コンポーネントのデバッグ
仮想プライベートクラウド クラシック・インフラストラクチャー
デプロイしないポッドや断続的なネットワーキング問題など、Calico コンポーネントに関する問題が発生します。
デプロイしないポッドや断続的なネットワーキング問題など、Calico コンポーネントに関する問題が発生します。
Calico オペレーターは、クラスターのワーカー数に基づいて calico-typha ポッドの数を決定し、テインティングされたノードは考慮しません。 クラスタ内の「untainted」ノードが 3 つ未満の場合、または「untainted」ノードの数が少ない非常に大規模なクラスタの場合、 calico-typha ポッドが実行可能な「untainted」ノードを見つけられないため、1 つ以上のポッドが「 Pending 」状態で停止してしまう可能性があります。 通常、少なくとも1つの calico-typha ポッドが実行状態にある限り、これは問題になりません。 しかし、高可用性のためには、少なくとも2つの calico-typha ポッドが常に稼働していることが推奨されます。 ベストプラクティスとして、すべての calico-typha ポッドは、Calicoオペレーター。
Calico 詳細なログがなければ、ネットワークの問題の診断は困難になる場合があります。 Calico コンポーネントのデフォルトのログレベルは「 info 」に設定されています。このレベルでは基本的な動作情報は提供されますが、複雑なネットワークの問題をトラブルシューティングするには詳細情報が不十分な場合があります。
この問題に関するより詳細な情報を収集するために、 Calico コンポーネントのログレベルを「 debug 」に引き上げてください。 デバッグレベルのロギングでは、ネットワーク問題の根本原因を特定するのに役立つ詳細な出力が得られます。
calico-typha コンポーネントのログ・レベルの引き上げ
calico-typha コンポーネントのログ・レベルを上げるには、以下の手順を実行します。
-
以下のコマンドを実行して、
calico-typhaデプロイメントを編集します。1.29 以降の場合:
kubectl edit deploy calico-typha -n calico-system1.28 以前の場合:
kubectl edit deploy calico-typha -n kube-system -
TYPHA_LOGSEVERITYSCREEN環境変数をinfoからdebugに変更します。containers: - env: - name: TYPHA_LOGSEVERITYSCREEN value: debug -
変更を適用するためにファイルを保存して閉じ、
calico-typhaデプロイメントを再始動します。
calico-cni コンポーネントのログ・レベルの引き上げ
calico-cni コンポーネントのログ・レベルを上げるには、以下の手順を実行します。
-
以下のコマンドを実行して、
calico-config構成マップを編集します。kubectl edit cm -n kube-system calico-config -
cni_network_config>plugins>log_level環境変数をdebugに変更します。cni_network_config: |- { "name": "k8s-pod-network", "cniVersion": "0.3.1", "plugins": [ { "type": "calico", "log_level": "debug", -
ファイルを保存して閉じます。 変更は、
calico-nodeポッドが再始動されるまで有効になりません。 -
calico-nodeポッドを再始動して、変更を適用します。kubectl rollout restart daemonset/calico-node -n kube-system出力例
daemonset.apps/calico-node restarted
calico-node コンポーネントのログ・レベルの引き上げ
calico-node コンポーネントのログ・レベルを上げるには、以下の手順を実行します。
-
以下のコマンドを実行します。
1.29 以降の場合:
kubectl edit ds calico-node -n calico-system1.28 以前の場合:
kubectl edit ds calico-node -n kube-system -
FELIX_USAGEREPORTINGENABLEDの名前と値のペアの下 (またはFELIX_*環境変数の名前と値のペアの後) に、以下の項目を追加します。- name: FELIX_LOGSEVERITYSCREEN value: Debug -
変更を保存します。 変更を保存すると、
calico-nodeデーモンセット内のすべてのポッドがローリング更新を完了し、変更が適用されます。calico-cniは、kube-system/calico-config構成マップ内のロギング・レベルに対するすべての変更も適用します。
calico-kube-controllers コンポーネントのログ・レベルの引き上げ
calico-kube-controllers コンポーネントのログ・レベルを上げるには、以下の手順を実行します。
-
次のコマンドを実行して、デプロイメントを編集します。
1.29 以降の場合:
kubectl edit deploy calico-kube-controllers -n calico-system1.28 以前の場合:
kubectl edit deploy calico-kube-controllers -n kube-system -
DATASTORE_TYPEの名前と値のペアの下に、以下の項目を追加します。- name: LOG_LEVEL value: debug -
変更を保存します。
calico-kube-controllersポッドが再始動し、変更が適用されます。
Calico ログの収集
-
クラスタ内のポッドとノードを一覧表示し、問題が発生しているポッド名、ポッドのIPアドレス、およびワーカーノードをメモしておいてください。
kubectl get pods -o wide -n kube-system -
問題が発生したワーカー・ノード上の
calico-nodeポッドのログを取得します。1.29 以降の場合:
kubectl logs calico-typha-aaa11111a-aaaaa -n calico-system1.28 以前の場合:
kubectl logs calico-typha-aaa11111a-aaaaa -n kube-system -
calico-kube-controllersポッドのログを取得します。1.29 以降の場合:
kubectl logs calico-kube-controllers-11aaa11aa1-a1a1a -n calico-system1.28 以前の場合:
kubectl logs calico-kube-controllers-11aaa11aa1-a1a1a -n kube-system -
kubectl exec を使用したデバッグの手順に従って、ワーカー・ノードから
/var/log/syslog、containerd.log、kubelet.log、およびkern.logを取得します。