為什麼無法連線至 Amazon EKS 叢集?

上次更新日期:2021 年 6 月 23 日

我建立了一個 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集,但無法連線至我的叢集。

簡短描述

建立 Amazon EKS 叢集後,必須使用 AWS Command Line Interface (AWS CLI) 設定您的 kubeconfig 檔案。該組態允許您使用 kubectl 命令列連線至叢集。

以下解決方案向您展示了如何使用 AWS CLI update-kubeconfig 命令,為您的叢集建立 kubeconfig 檔案。若要在不使用 AWS CLI 的情況下手動更新您的 kubeconfig 檔案,請參閱為 Amazon EKS 建立 kubeconfig

注意:如果您在執行 AWS CLI 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本

解決方案

1.    驗證您的系統上是否安裝了 AWS CLI 版本 1.16.308 或更高版本:

$ aws --version

重要提示:您的系統上必須安裝 Python 2.7.9 或更高版本。否則,您會收到錯誤。

提示:macOS 的 yumapt-gethomebrew 等套件管理器通常用於安裝 AWS CLI。

2.    檢查目前的身分,以驗證您在使用具有 Amazon EKS 叢集許可的正確憑證:

aws sts get-caller-identity

注意:建立 Amazon 叢集的 AWS Identity and Access Management (IAM) 實體使用者或角色,會在建立叢集時自動授予 system:master 許可。這些許可是在控制平面的叢集 RBAC 組態中授予的。還可以在 aws-auth ConfigMap 中授予 IAM 使用者或角色對 Amazon EKS 叢集的存取權。依預設,AWS IAM Authenticator for Kubernetes 會使用設定的 AWS CLI 或 AWS 開發套件身分。

3.    為您的叢集建立或更新 kubeconfig 檔案:

aws eks --region region update-kubeconfig --name cluster_name

注意:region (區域) 取代為您的 AWS 區域。將 cluster_name 取代為您的叢集名稱。

依預設,組態檔案會在您的主目錄中的 kubeconfig 路徑 ($HOME/.kube/config) 中建立,或在該位置與現有的 kubeconfig 合併。對於 Windows,該檔案位於 %USERPROFILE%\.kube\config

您還可以設定 KUBECONFIG (透過 Kubernetes 網站) 環境變數,或使用以下 --kubeconfig 選項來指定另一個路徑:

$ kubectl get pods --kubeconfig ./.kube/config

注意:對於執行 kubectl 命令時的身份驗證,您可以使用 --role-arn 選項來指定 IAM 角色 Amazon 資源名稱 (ARN)。否則,將使用預設 AWS CLI 或 AWS 開發套件憑證鏈中的 IAM 實體。如需詳細資訊,請參閱 update-kubeconfig,或完成為 Amazon EKS 建立 kubeconfig 的「手動建立 kubeconfig」章節中的步驟 6。

4.    測試您的組態:

$ kubectl get svc

範例輸出:

NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
svc/kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   1m

注意:如果您收到其他授權或資源類型錯誤,請參閱未授權或存取遭拒 (kubectl)