本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立適用於 kubeconfig
的 Amazon EKS
您將在本節為您的叢集建立 kubeconfig
檔案 (或更新現有的檔案)。
本節提供兩項程序以建立或更新 kubeconfig。您可以透過 AWS CLI 使用 update-kubeconfig
AWS CLI 命令來快速地自動建立或更新 kubeconfig,也可以使用 AWS CLI 或 aws-iam-authenticator
. 手動建立 kubeconfig。
Amazon EKS 使用 aws eks get-token
命令 (在 1.16.156 的 AWS CLI 版本或更新版本中提供) 或適用於 Kubernetes 的 AWS IAM 驗證器kubectl
來進行叢集驗證。如果您已在系統上安裝 AWS CLI,則依預設適用於 Kubernetes 的 AWS IAM Authenticator 將使用以下列命令傳回的相同登入資料:
aws sts get-caller-identity
如需詳細資訊,請參閱 AWS CLI中的設定 AWS Command Line Interface 使用者指南.
自動建立 kubeconfig
使用 kubeconfig
建立 AWS CLI 檔案
-
請確定您已安裝 1.16.156 的版本或 AWS CLI 的更新版本。若要安裝或更新 AWS CLI,請參閱 https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html 中的AWS Command Line Interface 使用者指南安裝 AWS 命令列界面.
注意 您的系統 Python 版本必須為 2.7.9 或更新版本。否則,對
hostname doesn't match
發出 AWS CLI 呼叫時您會收到 Amazon EKS. 錯誤。您可使用以下命令檢查您的 AWS CLI 版本:
aws --version
重要 諸如
yum
、apt-get
或適用於 的 Homebrew 等套件管理工具macOS通常落後 的數個版本AWS CLI。為確保您的版本為最新版本,請前往 中的安裝 AWS 命令列界面AWS Command Line Interface 使用者指南。 -
使用 AWS CLI
update-kubeconfig
命令為您的叢集建立或更新 kubeconfig。-
根據預設,產生的組態檔案會在您的主目錄預設的 kubeconfig 路徑下 (
.kube/config
) 建立,或與位在該處的現有 kubeconfig 合併。您可以使用--kubeconfig
選項指定其他路徑。 -
當您發出 IAM
--role-arn
命令時,您可以使用kubectl
選項來指定 角色 ARN 進行身份驗證。否則,系統將使用位於預設 IAM 或開發套件登入資料鏈結的 AWS CLI 實體。您可以執行 AWS CLIaws sts get-caller-identity
命令來檢視您的預設 或軟體開發套件身分。 -
如需詳細資訊,請查看 協助頁面與
aws eks update-kubeconfig help
命令,或在 中查看 update-kubeconfigAWS CLI Command Reference。
注意 若要執行下列命令,您必須具有使用指定叢集的
eks:DescribeCluster
API 動作的權限。如需詳細資訊,請參閱 Amazon EKS 身分型政策範例.aws eks --region <region-code> update-kubeconfig --name <cluster_name>
-
-
測試組態。
kubectl get svc
注意 注意 如果您收到任何授權或資源類型錯誤,請參閱故障診斷一節中的 未經授權或存取遭拒 (kubectl)。
輸出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
手動建立 kubeconfig
手動建立 kubeconfig
檔案
-
若此檔案尚不存在,則建立預設
~/.kube
目錄。mkdir -p ~/.kube
-
開啟您偏好的文字編輯器,並將以下其中一個
kubeconfig
程式碼區塊 (根據您慣用的用戶端字符方法) 複製到其中。-
若要使用 AWS CLI
aws eks get-token
命令 (需要版本 1.16.156 或更新版本 AWS CLI):apiVersion: v1 clusters: - cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws args: - "eks" - "get-token" - "--cluster-name" - "<cluster-name>" # - "--role" # - "<role-arn>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
-
若要使用適用於 Kubernetes 的 AWS IAM 驗證器
: apiVersion: v1 clusters: - cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws-iam-authenticator args: - "token" - "-i" - "<cluster-name>" # - "-r" # - "<role-arn>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
-
-
將
<endpoint-url>
換成為您的叢集所建立的端點 URL。 -
將
<base64-encoded-ca-cert>
換成為您的叢集certificateAuthority.data
所建立的 。 -
以您的叢集名稱
<cluster-name>
取代 。 -
(選用) 如果要擔任 IAM 角色以執行叢集操作 (而非預設 AWS 登入資料提供者鏈結),請取消
-r
或--role
和<role-arn>
行的註解,並取代 IAM 角色 ARN 以與使用者使用。 -
(選用) 若要一律使用特定的具名AWS登入資料描述檔 (而不是預設AWS登入資料供應者鏈結),請取消評論
env
行<aws-profile>
,並換成要使用的描述檔名稱。 -
將檔案儲存至預設
kubectl
資料夾,檔案名稱中使用您的叢集名稱。例如,如果您的叢集名稱為<devel>
,請將檔案儲存至~/.kube/config-<devel>
。 -
將該檔案路徑新增到
KUBECONFIG
環境變數,讓kubectl
知道應在何處尋找您的叢集組態。-
對於 macOS 或 Linux 上的 Bash shell:
export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>
-
Windows PowerShell 上的 :
$ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config-<devel>"
-
-
(選用) 將該組態新增到 shell 初始化檔案,因此當您開啟 shell 時,該組態已設定完畢。
-
對於 上的 Bash macOSshell:
echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>' >> ~/.bash_profile
-
對於在 Linux 上的 Bash shell:
echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>' >> ~/.bashrc
-
Windows PowerShell 上的 :
[System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')
-
-
測試組態。
kubectl get svc
注意 注意 如果您收到任何授權或資源類型錯誤,請參閱故障診斷一節中的 未經授權或存取遭拒 (kubectl)。
輸出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m