AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何使用 Amazon EKS 存取項目 API 來復原 EKS 叢集的存取權?
由於單一登入使用者變更或 aws-auth ConfigMap 刪除或損毀,我無法存取 Amazon Elastic Kubernetes Service (Amazon EKS)。
簡短描述
如果您失去對 EKS 叢集的存取權,則在執行 kubectl 命令時,您會看到類似下列錯誤:
「錯誤: 您必須登入伺服器 (未經授權)。」
若要重新取得對叢集的存取權,請使用存取項目來管理 AWS Identity and Access Management (IAM) 主體的權限。您可以從 Amazon EKS 叢集外部執行此操作。
注意: 如果 EKS 叢集建立者存在,則會假設 EKS 叢集建立者的 IAM 主體登入並存取叢集。預設情況下,EKS 叢集建立者是叢集的管理員。下列程序會建立一個與叢集建立者原始 IAM 角色共存的管理員角色。
解決方法
先決條件:
- 安裝 kubectl。
- 安裝和設定最新版本的 AWS Command Line Interface (AWS CLI)。
- 您具有以下權限的 IAM 角色: CreateAccessEntry、ListAccessEntries、DescribeAccessEntry、DeleteAccessEntry 和 UpdateAccessEntry。
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
使用 aws eks 存取項目 API 管理 Amazon EKS 叢集存取權
注意: 在以下命令中,替換以下內容:
將 <ACCOUNT_ID> 替換為 EKS 叢集所在來源帳戶的帳戶 ID。
將 ** 替換為<REGION>** 您的 AWS 區域名稱。
將 <CLUSTER_NAME> 替換為您的 EKS 叢集名稱。
將 <IAM_PRINCIPAL_ARN> 替換為您想擁有管理員權限的角色 ARN。
若要使用 aws eks 存取項目 API 來管理 Amazon EKS 叢集存取,請完成以下步驟:
-
在已安裝 kubectl 的主機中,擔任具有下列權限的 IAM 角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:ListAccessEntries", "eks:CreateAccessEntry", "eks:DescribeCluster", "eks:UpdateClusterConfig" ], "Resource": [ "arn:aws:eks:<REGION>:<ACCOUNT_ID>:cluster/<CLUSTER_NAME>" ] }, { "Effect": "Allow", "Action": [ "eks:DeleteAccessEntry", "eks:ListAssociatedAccessPolicies", "eks:DisassociateAccessPolicy", "eks:AssociateAccessPolicy", "eks:UpdateAccessEntry", "eks:DescribeAccessEntry" ], "Resource": [ "arn:aws:eks:<REGION>:<ACCOUNT_ID>:access-entry/<CLUSTER_NAME>/*" ] } ] } -
若要確認您的身分識別,請執行下列命令:
aws sts get-caller-identity在命令的輸出中,記下 ARN。它看起來會類似以下範例:arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin
-
執行以下命令來驗證 Amazon EKS 叢集的目前驗證模式:
aws eks describe-cluster --name <CLUSTER_NAME> --query 'cluster.accessConfig.authenticationMode' --region <REGION>如果 Amazon EKS 叢集的目前驗證模式是 API_AND_CONFIG_MAP,則該叢集已經具有所需的存取模式。跳至步驟 5。
-
執行下列命令以更新 Amazon EKS 叢集的驗證模式:
aws eks update-cluster-config --name <CLUSTER_NAME> --access-config authenticationMode=API_AND_CONFIG_MAP --region <REGION>注意: 您可以從 ** CONFIG\ _MAP ** 驗證模式切換到 API 模式,但無法從 API 模式切換回 CONFIG\ _MAP 模式。
-
執行以下命令為您的叢集和 IAM 角色建立存取項目:
aws eks create-access-entry --cluster-name <CLUSTER_NAME> --principal-arn <IAM_PRINCIPAL_ARN> --region <REGION>輸出訊息類似下列內容:
{ "accessEntry": { "clusterName": "<CLUSTER_NAME>", "principalArn": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin", "kubernetesGroups": [], "accessEntryArn": "arn:aws:eks:<REGION>:<ACCOUNT_ID>:access-entry/<CLUSTER_NAME>/user/<ACCOUNT_ID>/new-cluster-admin/26c6d1f8-4211-3fe0-f9d2-734b912dcd9a", "createdAt": "2024-02-13T19:27:45.370000+00:00", "modifiedAt": "2024-02-13T19:27:45.370000+00:00", "tags": {}, "username": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin", "type": "STANDARD" } } -
執行以下命令將 AmazonEKSClusterAdminPolicy 關聯到 Amazon EKS 叢集和 IAM 角色:
aws eks associate-access-policy --cluster-name <CLUSTER_NAME> \ --principal-arn <IAM_PRINCIPAL_ARN> \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \ --access-scope type=cluster \ --region <REGION>輸出訊息類似下列內容:
{ "accessEntry": { "clusterName": "<CLUSTER_NAME>", "principalArn": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin", "kubernetesGroups": [], "accessEntryArn": "arn:aws:eks:<REGION>:<ACCOUNT_ID>:access-entry/<cluster_name>/user/<ACCOUNT_ID>/new-cluster-admin/7ec6efb3-31c8-edcf-3039-ca2b38e0d708", "createdAt": "2024-02-25T08:34:06.002000+00:00", "modifiedAt": "2024-02-25T08:34:06.002000+00:00", "tags": {}, "username": "arn:aws:iam::<ACCOUNT_ID>:user/new-cluster-admin", "type": "STANDARD" } } -
若要更新或產生 kubeconfig 檔案,請執行以下命令以連接到 EKS 叢集:
aws eks update-kubeconfig --name <CLUSTER_NAME> --region <REGION> -
執行以下命令,確認使用者是否能以管理員身分存取 EKS 叢集:
kubectl auth can-i '*' '*' --all-namespaces
注意: 如果您能以管理員身分存取 EKS 叢集,則輸出會顯示為是。
相關資訊
當我連線至 Amazon EKS API 伺服器時,如何解決「您必須登入伺服器 (未經授權)」錯誤?
eksctl 網站上的 EKS 存取項目
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前
- 已提問 2 個月前