本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWSSupport-TroubleshootEbsCsiDriversForEks
Description
AWSSupport-TroubleshootEbsCsiDriversForEks Runbook 可協助疑難排解 Amazon Elastic Kubernetes Service (Amazon EKS) 和 Amazon EBS 容器儲存介面 (CSI) 驅動程式問題中 Amazon Elastic Block Store 磁碟區掛載的問題
重要
目前 AWS Fargate 不支援在 上執行的 Amazon EBS CSI 驅動程式。
如何運作?
Runbook 會AWSSupport-TroubleshootEbsCsiDriversForEks執行下列高階步驟:
-
驗證目標 Amazon EKS 叢集是否存在且處於作用中狀態。
-
根據附加元件是 Amazon EKS 受管或自我管理,部署進行 Kubernetes API 呼叫所需的身分驗證資源。
-
執行 Amazon EBS CSI 控制器運作狀態檢查和診斷。
-
對節點角色和服務帳戶角色執行 IAM 許可檢查。
-
診斷指定應用程式 Pod 的持久性磁碟區建立問題。
-
檢查node-to-pod排程,並檢查 Pod 事件。
-
收集相關的 Kubernetes 和應用程式日誌,將它們上傳到指定的 Amazon S3 儲存貯體。
-
執行節點運作狀態檢查,並驗證與 Amazon EC2 端點的連線。
-
檢閱持久性磁碟區區塊型設備附件和掛載狀態。
-
清除在疑難排解期間建立的身分驗證基礎設施。
-
產生結合所有診斷結果的全方位故障診斷報告。
注意
-
Amazon EKS 叢集的身分驗證模式必須設定為
API或API_AND_CONFIG_MAP。建議使用 Amazon EKS Access 項目。Runbook 需要 Kubernetes 角色型存取控制 (RBAC) 許可才能執行必要的 API 呼叫。 -
如果您未指定 Lambda 函數 (
LambdaRoleArn參數) 的 IAM 角色,自動化會在您的帳戶Automation-K8sProxy-Role-<ExecutionId>中建立名為 的角色。此角色包含 受管政策和AWSLambdaBasicExecutionRoleAWSLambdaVPCAccessExecutionRole。 -
某些診斷步驟需要 Amazon EKS 工作者節點為 Systems Manager 受管執行個體。如果節點不是 Systems Manager 受管執行個體,則會略過需要 Systems Manager 存取的步驟,但其他檢查會繼續進行。
-
自動化包含移除身分驗證基礎設施資源的清除步驟。即使先前的步驟失敗,此清除步驟仍會執行,這有助於防止 AWS 帳戶中的孤立資源。
文件類型
自動化
擁有者
Amazon
平台
/
必要的 IAM 許可
AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。
-
ec2:DescribeIamInstanceProfileAssociations -
ec2:DescribeInstanceStatus -
ec2:GetEbsEncryptionByDefault -
eks:DescribeAddon -
eks:DescribeAddonVersions -
eks:DescribeCluster -
iam:GetInstanceProfile -
iam:GetOpenIDConnectProvider -
iam:GetRole -
iam:ListOpenIDConnectProviders -
iam:SimulatePrincipalPolicy -
s3:GetBucketLocation -
s3:GetBucketPolicyStatus -
s3:GetBucketPublicAccessBlock -
s3:GetBucketVersioning -
s3:ListBucket -
s3:ListBucketVersions -
ssm:DescribeInstanceInformation -
ssm:GetAutomationExecution -
ssm:GetDocument -
ssm:ListCommandInvocations -
ssm:ListCommands -
ssm:SendCommand -
ssm:StartAutomationExecution
指示
請依照下列步驟設定自動化:
-
在
TroubleshootEbsCsiDriversForEks-SSM-Role帳戶中建立 SSM 自動化角色。確認信任關係包含下列政策。 -
將下列政策連接至 IAM 角色,以授予對指定資源執行指定動作所需的許可。
-
如果您預期將執行和資源日誌上傳到相同區域中的 Amazon S3 儲存貯 AWS 體,請將 取代
arn:{partition}:s3:::BUCKET_NAME/*為 中的OptionalRestrictPutObjects。-
如果您要在 SSM Amazon S3 儲存貯體應指向正確的 Amazon S3 儲存貯體。
S3BucketName -
如果您未指定 ,則此許可為選用
S3BucketName -
Amazon S3 儲存貯體必須是私有的,且位於執行 SSM 自動化的相同 AWS 區域中。
-
-
-
授予 Amazon EKS 叢集 RBAC (以角色為基礎的存取控制) 所需的許可。建議的方法是在 Amazon EKS 叢集中建立存取項目。
在 Amazon EKS 主控台中,導覽至您的叢集。對於 Amazon EKS 存取項目,請確認您的存取組態設定為
API_AND_CONFIG_MAP或API。如需設定存取項目身分驗證模式的步驟,請參閱設定存取項目。選擇建立存取項目。
-
針對 IAM 主體 ARN,選取您在上一個步驟中為 SSM 自動化建立的 IAM 角色。
-
針對類型,選取
Standard。
-
-
新增存取政策:
-
針對存取範圍,選取
Cluster。 -
針對政策名稱,選取
AmazonEKSAdminViewPolicy。
選擇 Add Policy (新增政策)。
如果您未使用存取項目來管理 Kubernetes API 許可,則必須更新
aws-authConfigMap,並在 IAM 使用者或角色之間建立角色繫結。確保您的 IAM 實體具有下列唯讀 Kubernetes API 許可:-
GET
/apis/apps/v1/namespaces/{namespace}/deployments/{name} -
GET
/apis/apps/v1/namespaces/{namespace}/replicasets/{name} -
GET
/apis/apps/v1/namespaces/{namespace}/daemonsets/{name} -
GET
/api/v1/nodes/{name} -
GET
/api/v1/namespaces/{namespace}/serviceaccounts/{name} -
GET
/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name} -
GET
/api/v1/persistentvolumes/{name} -
GET
/apis/storage.k8s.io/v1/storageclasses/{name} -
GET
/api/v1/namespaces/{namespace}/pods/{name} -
GET
/api/v1/namespaces/{namespace}/pods -
GET
/api/v1/namespaces/{namespace}/pods/{name}/log -
GET
/api/v1/events
-
-
選擇 Execute automation (執行自動化)。
-
針對輸入參數,輸入下列內容:
-
AutomationAssumeRole (選用):
-
描述:(選用) 允許 SSM Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。角色需要新增到您的 Amazon EKS 叢集存取項目或 RBAC 許可,以允許 Kubernetes API 呼叫。
-
類型:
AWS::IAM::Role::Arn -
範例:
TroubleshootEbsCsiDriversForEks-SSM-Role
-
-
EksClusterName:
-
描述:目標 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集的名稱。
-
類型:
String
-
-
ApplicationPodName:
-
描述:Amazon EBS CSI 驅動程式發生問題的 Kubernetes 應用程式 Pod 名稱。
-
類型:
String
-
-
ApplicationNamespace:
-
描述:Amazon EBS CSI 驅動程式發生問題之應用程式 Pod 的 Kubernetes 命名空間。
-
類型:
String
-
-
EbsCsiControllerDeploymentName (選用):
-
描述:(選用) Amazon EBS CSI 控制器 Pod 的部署名稱。
-
類型:
String -
預設:
ebs-csi-controller
-
-
EbsCsiControllerNamespace (選用):
-
描述:(選用) Amazon EBS CSI 控制器 Pod 的 Kubernetes 命名空間。
-
類型:
String -
預設:
kube-system
-
-
S3BucketName (選用):
-
描述:(選用) 將上傳故障診斷日誌的目標 Amazon S3 儲存貯體名稱。
-
類型:
AWS::S3::Bucket::Name
-
-
LambdaRoleArn (選用):
-
描述:(選用) 允許 AWS Lambda 函數存取所需 AWS 服務和資源的 IAM 角色 ARN。
-
類型:
AWS::IAM::Role::Arn
-
選取執行。
-
-
完成後,請檢閱輸出區段以取得執行的詳細結果。
參考
Systems Manager Automation
如需 Amazon EBS CSI 驅動程式的詳細資訊,請參閱 Amazon EBS CSI 驅動程式。