如何對 Amazon EKS 叢集中 API 伺服器端點的連接性問題進行故障排除?

2 分的閱讀內容
0

我無法執行 kubectl 命令。另外,我在 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集上將端點訪問設定自公有變更為私有。目前我的叢集卡為失敗狀態。

簡短描述

根據您的問題,完成下列其中一個區段中的各項步驟。

**注意:**若要設定對 Kubernetes API 伺服器端點的訪問,請參閱 修改叢集端點訪問

解決方案

您無法在新叢集或現有叢集中執行 kubectl 命令

確認您的 kubeconfig 檔案已連線至您的叢集

請完成下列步驟:

  1. 確認您使用正確的 kubeconfig 檔案連線至叢集。如需詳細資訊,請參閱 Kubernetes 網站上的使用 kubeconfig 檔案組織叢集存取
  2. 檢查每個叢集的 kubeconfig 檔案中是否有多個關係。
    範例輸出:
    $ kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
    Cluster name    Server
    new200.us-east-2.eksctl.io       https://D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com
    如果使用中的 kubeconfig 檔案沒有正確的叢集詳細資訊,請執行下列命令為叢集建立新項目:
    aws eks update-kubeconfig --name CLUSTER NAME --region REGION
    **注意:**使用您的叢集名稱取代 CLUSTER NAME,並以您的 AWS 區域取代 REGION
  3. 使用連接埠 443 上的 telnet,檢查裝置的 API 伺服器端點連接性。
    範例輸出:
    $ echo exit | telnet D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com 443
    Trying 18.224.160.210...
    Connected to D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com.
    Escape character is '^]'.
    Connection closed by foreign host.
    如果 telnet 命令無法運作,請完成下列步驟進行疑難排解。

檢查 DNS 解析器

如果 API 伺服器無法解析,則 DNS 解析器存在問題。

kubectl 命令失敗的相同裝置上執行下列命令:

nslookup APISERVER ENDPOINT

**注意:**用您的叢集的 API 伺服器端點取代 APISERVER ENDPOINT

檢查您是否已限制對 API 伺服器端點的公用存取

如果您已指定限制對公有 API 伺服器端點存取的 CIDR 區塊,則最佳做法是同樣啟用私有端點存取。

檢查 API 伺服器端點存取行為。請參閱修改叢集端點存取

將端點存取自公有變更為私有之後,您無法在叢集中執行 kubectl 命令

若要解決此問題,請完成下列步驟:

  1. 確認您使用堡壘主機或已連線的網路 (例如對等虛擬私有雲端 (VPC)、AWS Direct Connect 或 VPN) 來存取 Amazon EKS API 端點。
    **注意:**在私有存取模式下,您只能從叢集的 VPC 或已連線的網路存取 Amazon EKS API 端點。
  2. 檢查安全群組或網路存取控制清單是否阻止對 Kubernetes API 伺服器的請求。
    如果您跨對等 VPC 存取叢集,請確認控制平面安全群組允許正確存取。它們必須允許從對等 VPC 存取連接埠 443 上的 Amazon EKS 控制平面安全群組。

您的叢集保持在失敗狀態,並且無法將端點存取設定由公有變更為私有

您的叢集可能因 AWS Identity and Access Management (IAM) 的權限問題而處於失敗狀態。

若要解決此問題,請完成下列步驟:

  1. 確認使用者的 IAM 角色已獲授權執行 AssociateVPCWithHostedZone 動作。
    **注意:**如果動作未受到阻止,請檢查使用者的帳戶是否具有阻止 API 呼叫並造成叢集失敗的 AWS Organizations 政策
  2. 確認 IAM 使用者的權限未在該帳戶以上的任何層級受到隱式或顯式封鎖。
    **注意:如果 IAM 使用者權限並未包含於 允許 策略語句中,則會受到隱式封鎖。若其包含於 拒絕 策略語句中,則會受到顯式封鎖。即使帳戶管理員將具備\ */\ ***權限的 AdministratorAccess IAM 策略附加到使用者,權限仍受到封鎖。來自 AWS Organizations 政策的權限將覆寫 IAM 實體的權限。
AWS 官方
AWS 官方已更新 1 年前