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

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

查看 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.183.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. 保存文件并退出文本编辑器。