查看 Kubernetes 资源 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

查看 Kubernetes 资源

您可以使用 Amazon Web Services Management Console 查看部署到您的集群的 Kubernetes 资源。您无法使用 Amazon CLI 或 eksctl 查看 Kubernetes 资源。要使用命令行工具查看 Kubernetes 资源,请使用 kubectl

先决条件

要查看 Amazon Web Services Management Console 中的计算选项卡上的资源选项卡和节点部分,您使用的 IAM 主体必须具有特定的 IAM 和 Kubernetes 权限。有关更多信息,请参阅 所需的权限

使用 Amazon Web Services Management Console 查看 Kubernetes 资源
  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. Clusters(集群)列表中,选择包含要查看的 Kubernetes 资源的集群。

  3. 选择资源选项卡。

  4. 选择您要查看其资源的 Resource type(资源类型)组,例如 Workloads(工作负载)。您可以看到该组中的资源类型列表。

  5. 选择资源类型,例如工作负载组中的部署。您可以看到资源类型的描述、Kubernetes 文档的链接以获取有关资源类型的更多信息,以及在集群上部署的该类型资源的列表。如果列表为空,则表示您的集群中没有部署此类型的资源。

  6. 选择一种资源以查看关于该资源的更多信息。请尝试以下示例:

    • 依次选择 Workloads(工作负载)组、Deployments(部署)资源类型和 coredns 资源。当您选择资源时,您默认情况下处于 Structured view(结构化视图)中。对于某些资源类型,您会在 Structured view(结构化视图)中看到 Pods(容器组(pod))部分。本节列出了由工作负载管理的 Pods。您可以选择列出的任何 Pod 以查看有关 Pod 的信息。并非所有资源类型都在结构化视图中显示信息。如果您在该资源的页面右上角选择 Raw view(原始视图),您可以看到来自 Kubernetes API 对该资源的完整 JSON 响应。

    • 选择集群组,然后选择节点资源类型。您可以看到集群中所有节点的列表。节点可以是任意 Amazon EKS 节点类型。这与您在为集群选择 Compute(计算)选项时在 Nodes(节点)部分中看到的列表相同。从列表中选择节点资源。在结构化视图中,您还会看到 Pods(容器组(pod))部分。此部分将向您显示在节点上运行的所有 Pods。

所需的权限

要查看 Amazon Web Services Management Console 中的计算选项卡上的资源选项卡和节点部分,您使用的 IAM 主体必须具有特定的最低 IAM 和 Kubernetes 权限。完成以下步骤以将所需的权限分配给您的 IAM 主体。

  1. 确保向您正在使用的 IAM 主体分配 eks:AccessKubernetesApi 以及查看 Kubernetes 资源所需的其他 IAM 权限。有关如何为 IAM 主体编辑权限的更多信息,请参阅《IAM 用户指南》中的控制主体的访问权限。有关如何编辑角色权限策略的信息,请参阅《IAM 用户指南》中的修改角色权限策略(控制台)

    以下示例策略包括主体查看账户中所有集群的 Kubernetes 资源所需的权限。将 111122223333 替换为您的Amazon账户 ID。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:ListFargateProfiles", "eks:DescribeNodegroup", "eks:ListNodegroups", "eks:ListUpdates", "eks:AccessKubernetesApi", "eks:ListAddons", "eks:DescribeCluster", "eks:DescribeAddonVersions", "eks:ListClusters", "eks:ListIdentityProviderConfigs", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": "arn:aws:ssm:*:111122223333:parameter/*" } ] }

    要查看已连接集群中的节点,Amazon EKS 连接器 IAM 角色应能够模拟集群中的主体。这使得 Amazon EKS Connector 能够将主体映射到 Kubernetes 用户。

  2. 创建绑定到 Kubernetes roleclusterrole 的 Kubernetes rolebindingclusterrolebinding,该角色具有查看 Kubernetes 资源所需的权限。要了解有关 Kubernetes 角色和角色绑定的更多信息,请参阅 Kubernetes 文档中的使用 RBAC 授权。您可以将以下清单之一应用于创建 rolerolebinding 或者具有必要 Kubernetes 权限的 clusterroleclusterrolebinding 的集群。

    查看所有命名空间中的 Kubernetes 资源

    文件中的组名为 eks-console-dashboard-full-access-group。使用以下命令将清单应用于集群:

    kubectl apply -f https://s3.cn-north-1.amazonaws.com.cn/amazon-eks/docs/eks-console-full-access.yaml
    查看特定命名空间中的 Kubernetes 资源

    此文件中的命名空间为 default。文件中的组名为 eks-console-dashboard-restricted-access-group。使用以下命令将清单应用于集群:

    kubectl apply -f https://s3.cn-north-1.amazonaws.com.cn/amazon-eks/docs/eks-console-restricted-access.yaml

    如果您需要更改 Kubernetes 组名称、命名空间、权限或文件中的任何其他配置,请先下载文件并对其进行编辑,然后再将其应用于集群:

    1. 使用下面的命令之一下载文件:

      curl -O https://s3.cn-north-1.amazonaws.com.cn/amazon-eks/docs/eks-console-full-access.yaml
      curl -O https://s3.cn-north-1.amazonaws.com.cn/amazon-eks/docs/eks-console-restricted-access.yaml
    2. 根据需要编辑文件。

    3. 使用以下命令之一将清单应用于集群:

      kubectl apply -f eks-console-full-access.yaml
      kubectl apply -f eks-console-restricted-access.yaml
  3. IAM 主体映射到 aws-auth ConfigMap 中的 Kubernetes 用户或组。您可以使用 eksctl 之类的工具更新 ConfigMap,或者可以通过编辑它来进行手动更新。

    重要

    我们建议使用 eksctl 或者其他工具来编辑 ConfigMap。有关您可以使用的其他工具的信息,请参阅《Amazon EKS 最佳实践指南》中的使用工具对 aws-authConfigMap 进行更改。格式不正确的 aws-auth ConfigMap 可能会导致您失去对集群的访问权限。

    eksctl
    先决条件

    您的设备或 Amazon CloudShell 上安装了 0.172.0 版或更高版本的 eksctl 命令行工具。要安装或更新 eksctl,请参阅 eksctl 文档中的 Installation

    1. 查看 ConfigMap 中的当前映射。将 my-cluster 替换为您的集群名称。region-code 替换为集群所在的 Amazon Web Services 区域。

      eksctl get iamidentitymapping --cluster my-cluster --region=region-code

      示例输出如下。

      ARN USERNAME GROUPS ACCOUNT arn:aws:iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes
    2. 为角色添加映射。此示例假设您已在第一步中将 IAM 权限附加到名为 my-console-viewer-role 的角色。请将 111122223333 替换为您的账户 ID。

      eksctl create iamidentitymapping \ --cluster my-cluster \ --region=region-code \ --arn arn:aws:iam::111122223333:role/my-console-viewer-role \ --group eks-console-dashboard-full-access-group \ --no-duplicate-arns
      重要

      角色 ARN 不能包含 role/my-team/developers/my-role 等路径。ARN 的格式必须为 arn:aws:iam::111122223333:role/my-role。在此示例中,my-team/developers/ 需要删除。

      示例输出如下。

      [...]
      2022-05-09 14:51:20 [ℹ]  adding identity "arn:aws:iam::111122223333:role/my-console-viewer-role" to auth ConfigMap
    3. 为用户添加映射。IAM 最佳实践建议您向角色而不是用户授予权限。此示例假设您已在第一步中将 IAM 权限附加到名为 my-user 的用户。请将 111122223333 替换为您的账户 ID。

      eksctl create iamidentitymapping \ --cluster my-cluster \ --region=region-code \ --arn arn:aws:iam::111122223333:user/my-user \ --group eks-console-dashboard-restricted-access-group \ --no-duplicate-arns

      示例输出如下。

      [...]
      2022-05-09 14:53:48 [ℹ]  adding identity "arn:aws:iam::111122223333:user/my-user" to auth ConfigMap
    4. 再次查看 ConfigMap 中的映射。

      eksctl get iamidentitymapping --cluster my-cluster --region=region-code

      示例输出如下。

      ARN USERNAME GROUPS ACCOUNT arn:aws:iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes arn:aws:iam::111122223333:role/my-console-viewer-role eks-console-dashboard-full-access-group arn:aws:iam::111122223333:user/my-user eks-console-dashboard-restricted-access-group
    Edit ConfigMap manually

    有关将用户或角色添加到 aws-auth ConfigMap 中的更多信息,请参阅将 IAM 主体添加到 Amazon EKS 集群

    1. 打开 aws-auth ConfigMap 进行编辑。

      kubectl edit -n kube-system configmap/aws-auth
    2. 将映射添加到 aws-auth ConfigMap,但不要替换任何现有的映射。以下示例添加了在第一步中添加权限的 IAM 主体与在上一步中创建的 Kubernetes 组之间的映射:

      • my-console-viewer-role 角色和 eks-console-dashboard-full-access-group

      • my-user 用户和 eks-console-dashboard-restricted-access-group

      这些示例假设您已在第一步中将 IAM 权限附加到名为 my-console-viewer-role 的角色和名为 my-user 的用户。将 111122223333 替换为您的Amazon账户 ID。

      apiVersion: v1 data: mapRoles: | - groups: - eks-console-dashboard-full-access-group rolearn: arn:aws:iam::111122223333:role/my-console-viewer-role username: my-console-viewer-role mapUsers: | - groups: - eks-console-dashboard-restricted-access-group userarn: arn:aws:iam::111122223333:user/my-user username: my-user
      重要

      角色 ARN 不能包含 role/my-team/developers/my-console-viewer-role 等路径。ARN 的格式必须为 arn:aws:iam::111122223333:role/my-console-viewer-role。在此示例中,my-team/developers/ 需要删除。

    3. 保存文件并退出文本编辑器。