VPC CNI プラグインが Amazon EKS の API サーバーにアクセスできないのはなぜですか?

所要時間2分
0

使用している Amazon Virtual Private Cloud (Amazon VPC) コンテナネットワークインターフェイス (CNI) プラグインが Amazon Elastic Kubernetes Service (Amazon EKS) の API サーバーにアクセスできません。

簡単な説明

kube-proxy が Kubernetes サービスポートを追加する前に、ipamD デーモンが API サーバーに接続しようとする場合があります。この場合、iPamD と API サーバー間の接続がタイムアウトします。この問題をトラブルシューティングするには、ipamD ログと kube-proxy ログを確認し、それぞれのタイムスタンプを比較します。

init コンテナを追加することもできます。init コンテナは、kube-proxy が Kubernetes サービスポートを作成するのを待ちます。その後、aws-node ポッドはタイムアウトを避けるために初期化を完了します。

解決策

ipamD と kube プロキシのログを確認してください

ipamD ログ

ipamD と API サーバー間の接続がタイムアウトすると、次のエラーが表示されます。

"Failed to create client: error communicating with apiserver:"

kube-proxy ログ

kube-proxy は、ワーカーノード上の Kubernetes API サーバーエンドポイントの iptables ルートを作成します。kube-proxy がルートを作成すると、次のメッセージが表示されます。

"Adding new service port \"default/kubernetes:https\"

ログ間のタイムスタンプを比較する

ipamD ログ

{"level":"error","ts":"2021-09-22T10:40:49.735Z","caller":"aws-k8s-agent/main.go:28","msg":"Failed to create client: error communicating with apiserver: Get https://10.77.0.1:443/version?timeout=32s: dial tcp 10.77.0.1:443: i/o timeout"}

kube-proxy ログ

{"log":"I0922 10:41:15.267648       1 service.go:379] Adding new service port \"default/kubernetes:https\" at 10.77.0.1:443/TCP\n","stream":"stderr","time":"2021-09-22T10:40:49.26766844Z"}

ipamD のログを見ると、ipamD デーモンが 2021-09-22T10:40:49.735Z で API サーバーに接続しようとしたことがわかります。接続がタイムアウトになり、失敗しました。kube-proxy ログを見ると、kube-proxy2021-09-22T10:41:15.26766844Z に Kubernetes サービスポートを追加したことがわかります。

init コンテナを追加する

init コンテナを追加するには、次の手順を実行します。

  1. aws-node 仕様を変更して、DNS が Kubernetes サービス名で解決されるようにします。

    $ kubectl -n kube-system edit daemonset/aws-node

    次の出力が表示されます。

       initContainers:
       - name: init-kubernetes-api
         image: busybox:1.28
         command: ['sh', '-c', "until nc -zv ${KUBERNETES_PORT_443_TCP_ADDR} 443; do echo waiting for kubernetes Service endpoint; sleep 2; done"]
  2. aws-node ポッドが init コンテナを作成したことを確認します。

    $ kubectl get pods -n kube-system  -w

    次の出力が表示されます。

        ...
        kube-proxy-smvfl                          0/1     Pending             0          0s
        aws-node-v68bh                            0/1     Pending             0          0s
        kube-proxy-smvfl                          0/1     Pending             0          0s
        aws-node-v68bh                            0/1     Pending             0          0s
        aws-node-v68bh                            0/1     Init:0/1            0          0s
        kube-proxy-smvfl                          0/1     ContainerCreating   0          0s
        kube-proxy-smvfl                          1/1     Running             0          6s
        aws-node-v68bh                            0/1     PodInitializing     0          9s
        aws-node-v68bh                            0/1     Running             0          16s
        aws-node-v68bh                            1/1     Running             0          53s

関連情報

Kubernetes kube プロキシセルフマネージドアドオンの更新

Kubernetes ウェブサイト上の「バージョンスキューポリシー

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ