如何解决创建集群后我的 Amazon EKS 环境中出现的错误?
创建集群后,我的 Amazon Elastic Kubernetes Service(Amazon EKS)环境出现错误。
简短描述
您可以使用 AWSPremiumSupport-TroubleshootEKSCluster 自动化工作流来解决 Amazon EKS 环境中的常见错误。此工作流会提供详细报告,报告会中列出错误、警告以及 Amazon Web Services(AWS)推荐的最佳做法的链接。
**注意:**要使用 AWSPremiumSupport-TroubleshootEKSCluster 自动化工作流,您必须订阅 Enterprise 或 Business Support 计划。
如果您遇到以下任何问题,可以使用 AWSPremiumSupport-TroubleshootEKSCluster 自动化工作流:
- 您的 Kubernetes Cluster Autoscaler 不起作用。
- 您的内部负载均衡器不是在私有或公有子网中创建的。
- 您不知道您的 Worker 节点是否在使用最新的亚马逊云机器镜像(AMI)。
- 您的 aws-node 容器组中出现访问被拒绝错误。
- 您无法提取 Amazon Elastic Container Registry(Amazon ECR)映像。
- 您的托管节点不稳定,或者您的自主管理的节点未加入集群。
AWSPremiumSupport-TroubleshootEKSCluster 自动化工作流会运行以下检查:
- 检查自动扩缩组的 Cluster AutoScaler 子网标签,此标签用于内部及面向互联网的负载均衡器与 Worker 安全组。
**重要事项:**如果您有多个与 Worker 节点关联的安全组,必须对其中一个安全组应用标签。将标签的键设置为 kubernetes.io/cluster/your-cluster-name。将值设置为 owned。如果您只有一个与 Worker 节点关联的安全组,此标签可选。 - 检查 Worker 节点是否有最新的 AMI。
- 检查安全组规则的最低设置和推荐设置。例如,工作流会检查集群安全组(即附加到集群的所有安全组)和 Worker 安全组的入口和出口。
- 检查自定义网络访问控制列表(网络 ACL)配置。
- 检查 Worker 节点上的 AWS Identity and Access Management(IAM)策略,包括 AmazonEKSWorkerNodePolicy 和 AmazonEC2ContainerRegistryReadOnly 策略。
- 通过检查 Worker 节点所在子网的路由表,检查 Worker 节点是否可以连接到互联网。
解决方法
使您的 Worker 节点可被发现
要使您的 Worker 节点可被发现,请使用 AWSPremiumSupport-TroubleshootEKSCluster 自动化工作流和您的 Amazon EKS 集群:
1. 打开 Amazon EC2 控制台。
2. 在导航窗格中,选择实例。
3. 为您的 Worker 节点选择 Amazon Elastic Compute Cloud(Amazon EC2)实例,然后选择标签选项卡。
4. 选择添加/编辑标签。
5. 为键输入 kubernetes.io/cluster/your-cluster-name。为值输入 'owned'/ 'shared'。
6. 选择保存。
AWSPremiumSupport-TroubleshootEKSCluster 自动化工作流使用以下策略运行。此策略必须包含访问集群的最低权限。集群只能由 AutomationAssumeRole 访问。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSPremiumSupportTroubleshootEKSCluster", "Effect": "Allow", "Action": [ "eks:ListNodegroups", "eks:DescribeCluster", "eks:DescribeNodegroup", "iam:GetInstanceProfile", "iam:ListInstanceProfiles", "iam:ListAttachedRolePolicies", "autoscaling:DescribeAutoScalingGroups", "ec2:DescribeInstanceTypes", "ec2:DescribeInstances", "ec2:DescribeNatGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeNetworkAcls", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Sid": "GetPublicSSMParams", "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": [ "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2/recommended/image_id", "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-*/image_id", "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-EKS_Optimized-*/image_id", "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-1909-English-Core-EKS_Optimized-*/image_id", "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2-gpu/recommended/image_id" ] }, { "Sid": "UploadObjectToS3", "Effect": "Allow", "Action": [ "s3:GetBucketPolicyStatus", "s3:GetBucketAcl", "s3:PutObject" ], "Resource": [ "<BUCKET_ARN>", "<BUCKET_ARN>/AWSPremiumSupport-TroubleshootEKSCluster-*" ] } ] }
从 AWS Systems Manager 控制台运行自动化工作流
1. 打开 Systems Manager 控制台。
2. 在导航窗格中,选择自动化。
注意: 如果 Systems Manager 主页先打开,选择菜单图标打开导航窗格,然后选择自动化。
3. 选择执行自动化。
4. 在自动化文档搜索框中,输入 AWSPremiumSupport-TroubleshootEKSCluster,然后按 Enter。
5. 从搜索结果中,选择 AWSPremiumSupport-TroubleshootEKSCluster。
**注意:**文档所有者是 Amazon。
6. 在文档描述选项卡中,验证文档版本是否设置为运行时系统的默认版本。
7. 选择下一步。
8. 在执行自动化文档部分中,选择简单执行。
9. 在输入参数部分,设置以下参数:
将 ClusterName 设置为集群的名称。此集群必须在您的 AWS 账户中运行。
将 AutomationAssumeRole 设置为要用于工作流的 IAM 角色。
(可选)如果需要,请将 BucketName 设置为您要上传报告的 Amazon Simple Storage Service(Amazon S3)桶。
注意: 如果您想要指定 AutomationAssumeRole,请创建适用于策略的 IAM 角色和 S3 桶。然后,将报告上传到您自己的 S3 桶(BucketName)以实现 SSM 自动化。
10. 选择执行。
11. 要监控进度,选择正在运行的自动化,然后选择步骤选项卡。
12. 流程完成后,选择描述选项卡,然后选择查看输出查看结果。
**注意:**结果将以报告的形式显示,其中会列出您的集群的所有错误和警告。
从 AWS CLI 运行自动化工作流
**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新版本的 AWS CLI。如果您想要指定 AutomationAssumeRole 并将报告上传到自己的 S3 桶(S3BucketName)以运行自动化工作流,请创建适用于策略的 IAM 角色和 S3 桶。
如果要将报告放在 S3 桶中,请运行以下命令:
aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"],"S3BucketName":["your_bucket"]}' --region your_region
如果不想将报告上传到 S3 桶,请运行以下命令:
aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"]}' --region your_region

相关内容
- AWS 官方已更新 7 个月前
- AWS 官方已更新 1 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 10 个月前