天天看點

kubelet配置cni插件_排查 Amazon EKS 的 kubelet 或 CNI 插件問題

如何排查 Amazon EKS 的 kubelet 或 CNI 插件問題?

上次更新時間:2020 年 9 月 11 日

我想要解決 Amazon Elastic Kubernetes Service (Amazon EKS) 的 kubelet 或 CNI 插件存在問題。

簡短描述

要使用您的 CNI 插件運作 IP 位址并将其配置設定到您工作線程節點上的 pod,您必須具備以下條件:

AWS Identity and Access Management (IAM) 權限,包括附加到您工作線程節點的 IAM 角色或通過 服務賬戶的 IAM 角色 提供的 Amazon EKS CNI 政策

可從工作線程節點通路的 Amazon EKS API 伺服器終端節點

對 Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Elastic Container Registry (Amazon ECR) 和 Amazon Simple Storage Service (Amazon S3) 的 API 終端節點的網絡通路

您的子網中有足夠的 IP 位址可用

解決方法

驗證 aws-node pod 在每個工作線程節點處于正在運作狀态

要驗證 aws-node pod 在工作線程節點處于正在運作狀态,請運作以下指令:

kubectl get pods -n kube-system -l k8s-app=aws-node -o wide

如果指令輸出顯示 RESTARTS 計數為 0,則 aws-node pod 處于正在運作狀态。嘗試驗證您的子網具有足夠的免費 IP 位址可用部分中的問題排查步驟。

如果指令輸出顯示 RESTARTS 計數為任何大于 0 的值,則嘗試以下步驟:

要驗證工作線程節點可通路您的 Amazon EKS 叢集的 API 伺服器終端節點,請運作以下指令:

curl -vk https://eks-api-server-endpoint-url

如果您無法連接配接到您的 Amazon EKS 叢集,則嘗試以下步驟:

1.    驗證您工作線程節點的 Amazon EKS 安全組設定已正确配置。

2.    驗證您的工作線程節點針對子網的網絡通路控制清單(網絡 ACL)規則允許與 Amazon EKS API 伺服器終端節點通信。

重要提示:允許端口 443 入站和出站流量。

3.    要驗證 kube-proxy pod 在每個工作線程節點處于正在運作狀态,請運作以下指令:

kubectl get pods -n kube-system -l k8s-app=kube-proxy -o wide

4.    驗證您的工作線程節點可通路 Amazon EC2 的 API 終端節點、Amazon ECR 和 Amazon S3。

驗證您的子網具有足夠的免費 IP 位址可用

要在 Amazon Virtual Private Cloud (Amazon VPC) ID 中列出每個子網中的可用 IP 位址,請運作以下指令:

aws ec2 describe-subnets --filters "Name=vpc-id,Values=" | jq '.Subnets[] | .SubnetId + "=" + "\(.AvailableIpAddressCount)"'

對于啟動 pod 的子網,available-ip-address-count 應大于 0。

檢查是否已達到您的安全組限制數量

如果您已達到每個彈性網絡接口的安全組限制數量,則您的 pod 聯網可能會失敗。

驗證您工作線程節點所用的執行個體類型由 CNI 插件提供支援

有關更多資訊,請參閱 CNI 插件的支援的執行個體類型清單。

驗證您正在運作的是 CNI 插件的最新穩定版本

有關問題排查的更多資訊,請參閱 AWS GitHub 問題頁面和 CNI 插件的釋出說明。

這篇文章對您有幫助嗎?

您是否需要賬單或技術支援?