

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 透過建立 kubeconfig 檔案將 kubectl 連線至 EKS 叢集
<a name="create-kubeconfig"></a>

**提示**  
 [註冊](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el)即將舉行的 Amazon EKS 研討會。

在本主題中，您將為您的叢集建立 `kubeconfig` 檔案 (或更新現有的檔案)。

`kubectl` 命令列工具會使用 `kubeconfig` 檔案中的組態資訊，以與叢集的 API 伺服器進行通訊。如需詳細資訊，請參閱 Kubernetes 文件中的[使用 kubeconfig 檔案組織叢集存取](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)。

Amazon EKS 使用 `aws eks get-token` 命令搭配 `kubectl` 進行叢集身分驗證。根據預設，CLI AWS 會使用與使用下列命令傳回的相同登入資料：

```
aws sts get-caller-identity
```
+ 現有 Amazon EKS 叢集。若要部署叢集，請參閱 [開始使用 Amazon EKS](getting-started.md)。
+ `kubectl` 命令列工具安裝在您的裝置或 AWS CloudShell 上。版本可以與您的叢集 Kubernetes 版本相同，或是為最多比該版本更舊一版或更新一版的次要版本。例如，如果您的叢集版本為 `1.29`，則可以搭配使用 `kubectl` `1.28`、`1.29` 或 `1.30` 版。若要安裝或升級 `kubectl`，請參閱 [設定 `kubectl` 和 `eksctl`](install-kubectl.md)。
+ 在您的裝置或 AWS CloudShell 上安裝和設定的 AWS 命令列界面 (AWS CLI) 版本 `1.27.160` `2.12.3`或更新版本。若要檢查您目前的版本，請使用 `aws --version | cut -d / -f2 | cut -d ' ' -f1`。適用於 macOS 的 `yum`、 `apt-get`或 Homebrew 等套件管理員通常是最新版本 CLI AWS 後面的幾個版本。若要安裝最新版本，請參閱《 * AWS 命令列界面使用者指南*》中的使用 aws 設定[安裝](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 和快速組態。 [https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)在 AWS CloudShell 中安裝的 AWS CLI 版本也可能是最新版本後面的幾個版本。若要更新它，請參閱《CloudShell [AWS 使用者指南》中的將 CLI 安裝到您的主目錄](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software)。 * AWS CloudShell *
+ 具有對您指定的叢集使用 `eks:DescribeCluster` API 動作許多的 IAM 使用者或角色。如需詳細資訊，請參閱[Amazon EKS 身分型政策範例](security-iam-id-based-policy-examples.md)。如果您使用自己的 OpenID Connect 提供商提供的身分來存取叢集，則請參閱 Kubernetes 文件中的 [Using kubectl](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl) 一節以了解如何建立或更新 `kube config` 檔案。

## 自動建立 `kubeconfig` 檔案
<a name="create-kubeconfig-automatically"></a>
+ 在您的裝置或 AWS CloudShell 上安裝和設定的 AWS 命令列界面 (AWS CLI) 版本 `1.27.160` `2.12.3`或更新版本。若要檢查您目前的版本，請使用 `aws --version | cut -d / -f2 | cut -d ' ' -f1`。適用於 macOS 的 `yum`、 `apt-get`或 Homebrew 等套件管理員通常是最新版本 CLI AWS 後面的幾個版本。若要安裝最新版本，請參閱《 * AWS 命令列界面使用者指南*》中的使用 aws 設定[安裝](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 和快速組態。 [https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)在 AWS CloudShell 中安裝的 AWS CLI 版本也可能是最新版本後面的幾個版本。若要更新它，請參閱《CloudShell [AWS 使用者指南》中的將 CLI 安裝到您的主目錄](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software)。 * AWS CloudShell *
+ 對您指定的叢集使用 `eks:DescribeCluster` API 動作的許可。如需詳細資訊，請參閱[Amazon EKS 身分型政策範例](security-iam-id-based-policy-examples.md)。

  1. 為您的叢集建立或更新 `kubeconfig` 檔案。將 *region-code* 取代為您的叢集所在的 AWS 區域，並將 *my-cluster* 取代為您的叢集名稱。

     ```
     aws eks update-kubeconfig --region region-code --name my-cluster
     ```

     根據預設，產生的組態檔案會在主目錄預設的 `kubeconfig` 路徑下 (`.kube`)，或與位在該處的現有 `config` 檔案合併。您可以使用 `--kubeconfig` 選項指定其他路徑。

     您可以使用 `--role-arn` 選項指定 IAM 角色 ARN，用於在您發出 `kubectl` 命令時進行身分驗證。否則，會使用預設 CLI 或 SDK 登入資料鏈中的 [IAM 主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)。 AWS 您可以執行 AWS `aws sts get-caller-identity`命令來檢視預設的 CLI 或 SDK 身分。

     如需所有可用的選項，請執行 `aws eks update-kubeconfig help`命令，或參閱 * AWS CLI 命令參考*中的 [update-kubeconfig](https://docs.aws.amazon.com/cli/latest/reference/eks/update-kubeconfig.html)。

  1. 測試組態。

     ```
     kubectl get svc
     ```

     範例輸出如下。

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

     如果您收到任何授權或資源類型錯誤，請參閱故障診斷主題中的[未經授權或存取遭拒 (`kubectl`)](troubleshooting.md#unauthorized)。