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 コンポーネントのログ・レベルを上げるには、以下の手順を実行します。

  1. 以下のコマンドを実行して、calico-typha デプロイメントを編集します。

    1.29 以降の場合:

    kubectl edit deploy calico-typha -n calico-system
    

    1.28 以前の場合:

    kubectl edit deploy calico-typha -n kube-system
    
  2. TYPHA_LOGSEVERITYSCREEN 環境変数を info から debug に変更します。

          containers:
        - env:
          - name: TYPHA_LOGSEVERITYSCREEN
            value: debug
    
  3. 変更を適用するためにファイルを保存して閉じ、calico-typha デプロイメントを再始動します。

calico-cni コンポーネントのログ・レベルの引き上げ

calico-cni コンポーネントのログ・レベルを上げるには、以下の手順を実行します。

  1. 以下のコマンドを実行して、calico-config 構成マップを編集します。

    kubectl edit cm -n kube-system calico-config
    
  2. cni_network_config > plugins > log_level 環境変数を debug に変更します。

      cni_network_config: |-
      {
        "name": "k8s-pod-network",
        "cniVersion": "0.3.1",
        "plugins": [
          {
            "type": "calico",
            "log_level": "debug",
    
  3. ファイルを保存して閉じます。 変更は、calico-node ポッドが再始動されるまで有効になりません。

  4. calico-node ポッドを再始動して、変更を適用します。

    kubectl rollout restart daemonset/calico-node -n kube-system
    

    出力例

    daemonset.apps/calico-node restarted
    

calico-node コンポーネントのログ・レベルの引き上げ

calico-node コンポーネントのログ・レベルを上げるには、以下の手順を実行します。

  1. 以下のコマンドを実行します。

    1.29 以降の場合:

    kubectl edit ds calico-node -n calico-system
    

    1.28 以前の場合:

    kubectl edit ds calico-node -n kube-system
    
  2. FELIX_USAGEREPORTINGENABLED の名前と値のペアの下 (または FELIX_* 環境変数の名前と値のペアの後) に、以下の項目を追加します。

    - name: FELIX_LOGSEVERITYSCREEN
      value: Debug
    
  3. 変更を保存します。 変更を保存すると、calico-node デーモンセット内のすべてのポッドがローリング更新を完了し、変更が適用されます。 calico-cni は、kube-system/calico-config 構成マップ内のロギング・レベルに対するすべての変更も適用します。

calico-kube-controllers コンポーネントのログ・レベルの引き上げ

calico-kube-controllers コンポーネントのログ・レベルを上げるには、以下の手順を実行します。

  1. 次のコマンドを実行して、デプロイメントを編集します。

    1.29 以降の場合:

    kubectl edit deploy calico-kube-controllers -n calico-system
    

    1.28 以前の場合:

    kubectl edit deploy calico-kube-controllers -n kube-system
    
  2. DATASTORE_TYPE の名前と値のペアの下に、以下の項目を追加します。

    - name: LOG_LEVEL
      value: debug
    
  3. 変更を保存します。 calico-kube-controllers ポッドが再始動し、変更が適用されます。

Calico ログの収集

  1. クラスタ内のポッドとノードを一覧表示し、問題が発生しているポッド名、ポッドのIPアドレス、およびワーカーノードをメモしておいてください。

    kubectl get pods -o wide -n kube-system
    
  2. 問題が発生したワーカー・ノード上の calico-node ポッドのログを取得します。

    1.29 以降の場合:

    kubectl logs calico-typha-aaa11111a-aaaaa -n calico-system
    

    1.28 以前の場合:

    kubectl logs calico-typha-aaa11111a-aaaaa -n kube-system
    
  3. calico-kube-controllers ポッドのログを取得します。

    1.29 以降の場合:

    kubectl logs calico-kube-controllers-11aaa11aa1-a1a1a -n calico-system
    

    1.28 以前の場合:

    kubectl logs calico-kube-controllers-11aaa11aa1-a1a1a -n kube-system
    
  4. kubectl exec を使用したデバッグの手順に従って、ワーカー・ノードから /var/log/syslogcontainerd.logkubelet.log、および kern.log を取得します。