如何解决创建集群后我的 Amazon EKS 环境中出现的错误?

2 分钟阅读
0

创建集群后,我的 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)策略,包括 AmazonEKSWorkerNodePolicyAmazonEC2ContainerRegistryReadOnly 策略
  • 通过检查 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 官方
AWS 官方已更新 2 年前
没有评论