本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWSSupport-TroubleshootEbsCsiDriversForEks
描述
该AWSSupport-TroubleshootEbsCsiDriversForEks运行手册有助于解决亚马逊 Elastic Kubernetes Service(亚马逊 EKS)中的亚马逊 Elastic Block Store 卷装载问题和亚马逊 EBS 容器存储接口 (CSI) 驱动程序问题
重要
目前不支持在上 AWS Fargate 运行的 Amazon EBS CSI 驱动程序。
如何工作?
运行手册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 入口。运行手册需要 Kubernetes 基于角色的访问控制 (RBAC) 权限才能执行必要的 API 调用。 -
如果您没有为 Lambda 函数(
LambdaRoleArn参数)指定 IAM 角色,则自动化会在您的账户Automation-K8sProxy-Role-<ExecutionId>中创建一个名为的角色。此角色包括托管策略AWSLambdaBasicExecutionRole和AWSLambdaVPCAccessExecutionRole。 -
某些诊断步骤要求将 Amazon EKS 工作节点设为 Systems Manager 托管实例。如果节点不是 Systems Manager 托管实例,则会跳过需要 Systems Manager 访问权限的步骤,但会继续进行其他检查。
-
自动化包括一个清理步骤,用于删除身份验证基础架构资源。即使之前的步骤失败,此清理步骤也会运行,这有助于防止您的 AWS 账户中出现孤立资源。
文档类型
自动化
所有者
Amazon
平台
/
所需的 IAM 权限
AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。
-
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 角色,以授予对指定资源执行指定操作所需的权限。
-
如果您希望将执行和资源日志上传到同一 AWS 区域的 Amazon S3 存储桶,请在中替换
arn:{partition}:s3:::BUCKET_NAME/*为您的日志OptionalRestrictPutObjects。-
如果您要在 SSM 执行中选择
S3BucketName,Amazon S3 存储桶应指向正确的亚马逊 S3 存储桶。 -
如果您未指定,则此权限是可选的
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。
选择添加策略。
如果您不使用访问权限条目来管理 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 代表您执行操作的 AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。需要将该角色添加到您的 Amazon EKS 集群访问条目或 RBAC 权限中,才能允许 Kubernetes API 调用。
-
类型:
AWS::IAM::Role::Arn -
示例:
TroubleshootEbsCsiDriversForEks-SSM-Role
-
-
EksClusterName:
-
描述:目标亚马逊 Elastic Kubernetes Service(亚马逊 EKS)集群的名称。
-
类型:
String
-
-
ApplicationPodName:
-
描述:在 Amazon EBS CSI 驱动程序中存在问题的 Kubernetes 应用程序容器的名称。
-
类型:
String
-
-
ApplicationNamespace:
-
描述:Amazon EBS CSI 驱动程序存在问题的应用程序容器的 Kubernetes 命名空间。
-
类型:
String
-
-
EbsCsiControllerDeploymentName(可选):
-
描述:(可选)Amazon EBS CSI 控制器容器的部署名称。
-
类型:
String -
默认值:
ebs-csi-controller
-
-
EbsCsiControllerNamespace(可选):
-
描述:(可选)亚马逊 EBS CSI 控制器舱的 Kubernetes 命名空间。
-
类型:
String -
默认值:
kube-system
-
-
S3BucketName (可选):
-
描述:(可选)将上传故障排除日志的目标 Amazon S3 存储桶名称。
-
类型:
AWS::S3::Bucket::Name
-
-
LambdaRoleArn (可选):
-
描述:(可选)允许该 AWS Lambda 函数访问所需 AWS 服务和资源的 IAM 角色的 ARN。
-
类型:
AWS::IAM::Role::Arn
-
选择执行。
-
-
完成后,请查看 “输出” 部分,了解执行的详细结果。
参考
Systems Manager Automation
有关亚马逊 EBS CSI 驱动程序的更多信息,请参阅亚马逊 EBS CSI 驱动程序。