在 AWS Management Console中查看 Kubernetes 资源
您可以使用 AWS Management Console 查看部署到您的集群的 Kubernetes 资源。您无法使用 AWS CLI 或 eksctl
注意
-
在 Clusters(集群)列表中,选择包含要查看的 Kubernetes 资源的集群。
-
选择资源选项卡。
-
选择您要查看其资源的 Resource type(资源类型)组,例如 Workloads(工作负载)。您可以看到该组中的资源类型列表。
-
选择资源类型,例如工作负载组中的部署。您可以看到资源类型的描述、Kubernetes 文档的链接以获取有关资源类型的更多信息,以及在集群上部署的该类型资源的列表。如果列表为空,则表示您的集群中没有部署此类型的资源。
-
选择一种资源以查看关于该资源的更多信息。请尝试以下示例:
-
依次选择 Workloads(工作负载)组、Deployments(部署)资源类型和 coredns 资源。当您选择资源时,您默认情况下处于 Structured view(结构化视图)中。对于某些资源类型,您会在 Structured view(结构化视图)中看到 Pods(容器组(pod))部分。本节列出了由工作负载管理的 Pods。您可以选择列出的任何 Pod 以查看有关 Pod 的信息。并非所有资源类型都在结构化视图中显示信息。如果您在该资源的页面右上角选择 Raw view(原始视图),您可以看到来自 Kubernetes API 对该资源的完整 JSON 响应。
-
选择集群组,然后选择节点资源类型。您可以看到集群中所有节点的列表。节点可以是任意 Amazon EKS 节点类型。这与您在为集群选择 Compute(计算)选项时在 Nodes(节点)部分中看到的列表相同。从列表中选择节点资源。在结构化视图中,您还会看到 Pods(容器组(pod))部分。此部分将向您显示在节点上运行的所有 Pods。
-
所需的权限
要查看 AWS Management Console中的资源选项卡和计算选项卡上的节点部分,您使用的 IAM 主体必须具有特定的最低 IAM 和 Kubernetes 权限。完成以下步骤以将所需的权限分配给您的 IAM 主体。
-
确保向您正在使用的 IAM 主体分配
eks:AccessKubernetesApi
以及查看 Kubernetes 资源所需的其它 IAM 权限。有关如何为 IAM 主体编辑权限的更多信息,请参阅《IAM 用户指南》中的控制主体的访问权限。有关如何编辑角色权限策略的信息,请参阅《IAM 用户指南》中的修改角色权限策略(控制台)。以下示例策略包括主体查看账户中所有集群的 Kubernetes 资源所需的权限。将
111122223333
替换为您的 AWS 账户 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 集群连接到 Amazon EKS 管理控制台将主体映射到 Kubernetes 用户。
-
创建绑定到 Kubernetes
role
或clusterrole
的 Kubernetesrolebinding
或clusterrolebinding
,该角色具有查看 Kubernetes 资源所需的权限。要了解有关 Kubernetes 角色和角色绑定的更多信息,请参阅 Kubernetes 文档中的使用 RBAC 授权。您可以将以下清单之一应用于创建 role
和rolebinding
或者具有必要 Kubernetes 权限的clusterrole
和clusterrolebinding
的集群。- 查看所有命名空间中的 Kubernetes 资源
-
-
文件中的组名为
eks-console-dashboard-full-access-group
。使用以下命令将清单应用于集群:kubectl apply -f https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
-
- 查看特定命名空间中的 Kubernetes 资源
-
-
此文件中的命名空间为
default
。文件中的组名为eks-console-dashboard-restricted-access-group
。使用以下命令将清单应用于集群:kubectl apply -f https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml
如果您需要更改 Kubernetes 组名称、命名空间、权限或文件中的任何其他配置,请先下载文件并对其进行编辑,然后再将其应用于集群:
-
使用下面的命令之一下载文件:
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml
-
根据需要编辑文件。
-
使用以下命令之一将清单应用于集群:
kubectl apply -f eks-console-full-access.yaml
kubectl apply -f eks-console-restricted-access.yaml
-
-
-
将 IAM 主体映射到
aws-auth
ConfigMap
中的 Kubernetes 用户或组。您可以使用eksctl
之类的工具更新ConfigMap
,或者可以通过编辑它来进行手动更新。重要
我们建议使用
eksctl
或者其他工具来编辑ConfigMap
。有关您可以使用的其它工具的信息,请参阅《Amazon EKS 最佳实践指南》中的使用工具对 aws-authConfigMap 进行更改。格式不正确的 aws-auth
ConfigMap
可能会导致您失去对集群的访问权限。
使用 eksctl 编辑
-
您需要在设备或 AWS CloudShell 上安装
0.194.0
版或更高版本的eksctl
命令行工具。要安装或更新eksctl
,请参阅eksctl
文档中的 Installation。 -
查看
ConfigMap
中的当前映射。将my-cluster
替换为您的集群的名称。将region-code
替换为您的集群所在的 AWS 区域。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
-
为角色添加映射。此示例假设您已在第一步中将 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
-
为用户添加映射。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
-
再次查看
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
手动编辑 ConfigMap
有关将用户或角色添加到 aws-auth
ConfigMap
中的更多信息,请参阅将 IAM 主体添加到 Amazon EKS 集群。
-
打开
aws-auth
ConfigMap
进行编辑。kubectl edit -n kube-system configmap/aws-auth
-
将映射添加到
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
替换为您的 AWS 账户 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/
需要删除。
-
-
保存文件并退出文本编辑器。