

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 在 Amazon Web Services 管理控制台中查看 Kubernetes 资源
<a name="view-kubernetes-resources"></a>

您可以使用 Amazon Web Services 管理控制台 查看部署到您的集群的 Kubernetes 资源。您无法使用 Amazon CLI 或 [eksctl](https://eksctl.io/) 查看 Kubernetes 资源。要使用命令行工具查看 Kubernetes 资源，请使用 [kubectl](install-kubectl.md)。

**注意**  
要在 Amazon Web Services 管理控制台中查看**资源**选项卡和**计算**选项卡上的**节点**部分，您使用的 [IAM 主体](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles.html#iam-term-principal)必须具有特定的 IAM 和 Kubernetes 权限。有关更多信息，请参阅 [所需的权限](#view-kubernetes-resources-permissions)。

1. 打开 [Amazon EKS 控制台](https://console.amazonaws.cn/eks/home#/clusters)。

1. 在 **Clusters**（集群）列表中，选择包含要查看的 Kubernetes 资源的集群。

1. 选择**资源**选项卡。

1. 选择您要查看其资源的 **Resource type**（资源类型）组，例如 **Workloads**（工作负载）。您可以看到该组中的资源类型列表。

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

1. 选择一种资源以查看关于该资源的更多信息。请尝试以下示例：
   + 依次选择 **Workloads**（工作负载）组、**Deployments**（部署）资源类型和 **coredns** 资源。当您选择资源时，您默认情况下处于 **Structured view**（结构化视图）中。对于某些资源类型，您会在 **Structured view**（结构化视图）中看到 **Pods**（容器组（pod））部分。本节列出了由工作负载管理的容器组（pod）。您可以选择列出的任何容器组（pod），查看有关容器组（pod）的信息。并非所有资源类型都在**结构化视图**中显示信息。如果您在该资源的页面的右上角选择 **Raw view**（原始视图），您可以看到来自 Kubernetes API 对该资源的完整 JSON 响应。
   + 选择 **Cluster**（集群）组，然后选择 **Nodes**（节点）资源类型。您可以看到集群中所有节点的列表。节点可以是任意 [Amazon EKS 节点类型](eks-compute.md)。这与您在为集群选择 **Compute**（计算）选项时在 **Nodes**（节点）部分中看到的列表相同。从列表中选择节点资源。在**结构化视图**中，您还会看到 **Pods**（容器组（pod））部分。此部分会显示在节点上运行的所有容器组（pod）。

## 所需的权限
<a name="view-kubernetes-resources-permissions"></a>

要在 Amazon Web Services 管理控制台中查看**资源**选项卡和**计算**选项卡上的**节点**部分，您使用的 [IAM 主体](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles.html#iam-term-principal)必须具有特定的最低 IAM 和 Kubernetes 权限。您必须确保已正确配置 IAM 和 Kubernetes RBAC 权限。完成以下步骤以将所需的权限分配给您的 IAM 主体。

1. 确保向您正在使用的 IAM 主体分配 `eks:AccessKubernetesApi` 以及查看 Kubernetes 资源所需的其他 IAM 权限。有关如何为 IAM 主体编辑权限的更多信息，请参阅《IAM 用户指南》中的[控制主体的访问权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_controlling.html#access_controlling-principals)。有关如何编辑角色权限策略的信息，请参阅《IAM 用户指南》中的[修改角色权限策略（控制台）](https://docs.amazonaws.cn/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy)。

   以下示例策略包含主体查看账户中所有集群的 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/*"
           }
       ]
   }
   ```

   要查看[已连接集群](eks-connector.md)中的节点，[Amazon EKS 连接器 IAM 角色](connector-iam-role.md)应能够模拟集群中的主体。这让 [Amazon EKS Connector](eks-connector.md) 将主体映射到 Kubernetes 用户。

1. 使用 EKS 访问条目配置 Kubernetes RBAC 权限。

    **什么是 EKS 访问条目？** 

   EKS 访问条目是授予 IAM 主体（用户和角色）访问您的 Kubernetes 集群的简化方法。无需手动管理 Kubernetes RBAC 资源和 `aws-auth` ConfigMap，访问条目会自动利用 Amazon 提供的管理策略来处理 IAM 和 Kubernetes 权限之间的映射关系。有关访问条目的详细信息，请参阅 [使用 EKS 访问条目向 IAM 用户授予 Kubernetes 访问权限](access-entries.md)。有关可用访问策略及其权限的信息，请参阅[访问策略权限](https://docs.amazonaws.cn/eks/latest/userguide/access-policy-permissions.html)。

   您可以通过两种方式将 Kubernetes 权限附加到访问条目：
   +  **使用访问策略：**访问策略是由 Amazon 维护的预定义 Kubernetes 权限模板。它们为常见使用案例提供了标准化权限集。
   +  **参考 Kubernetes 组：**如果您将某个 IAM 身份与某个 Kubernetes 组关联，则可以创建向该组授予权限的 Kubernetes 资源。有关更多信息，请参阅 Kubernetes 文档中的[使用 RBAC 授权](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)。

     1. 使用 Amazon CLI 为您的 IAM 主体创建访问条目。将 *my-cluster* 替换为您的集群的名称。请将 *111122223333* 替换为您的账户 ID。

        ```
        aws eks create-access-entry \
            --cluster-name my-cluster \
            --principal-arn arn:aws-cn:iam::111122223333:role/my-console-viewer-role
        ```

        示例输出如下。

        ```
        {
            "accessEntry": {
                "clusterName": "my-cluster",
                "principalArn": "arn:aws-cn:iam::111122223333:role/my-console-viewer-role",
                "kubernetesGroups": [],
                "accessEntryArn": "arn:aws-cn:eks:region-code:111122223333:access-entry/my-cluster/role/111122223333/my-console-viewer-role/abc12345-1234-1234-1234-123456789012",
                "createdAt": "2024-03-15T10:30:45.123000-07:00",
                "modifiedAt": "2024-03-15T10:30:45.123000-07:00",
                "tags": {},
                "username": "arn:aws-cn:iam::111122223333:role/my-console-viewer-role",
                "type": "STANDARD"
            }
        }
        ```

     1. 将策略与访问条目关联。要查看 Kubernetes 资源，请使用 `AmazonEKSViewPolicy`：

        ```
        aws eks associate-access-policy \
            --cluster-name my-cluster \
            --principal-arn arn:aws-cn:iam::111122223333:role/my-console-viewer-role \
            --policy-arn arn:aws-cn:eks::aws:cluster-access-policy/AmazonEKSViewPolicy \
            --access-scope type=cluster
        ```

        示例输出如下。

        ```
        {
            "clusterName": "my-cluster",
            "principalArn": "arn:aws-cn:iam::111122223333:role/my-console-viewer-role",
            "associatedAt": "2024-03-15T10:31:15.456000-07:00"
        }
        ```

        对于特定于命名空间的访问权限，您可以将策略范围限定为特定命名空间：

        ```
        aws eks associate-access-policy \
            --cluster-name my-cluster \
            --principal-arn arn:aws-cn:iam::111122223333:role/my-console-viewer-role \
            --policy-arn arn:aws-cn:eks::aws:cluster-access-policy/AmazonEKSViewPolicy \
            --access-scope type=namespace,namespaces=default,kube-system
        ```

     1. 验证是否已成功创建访问条目：

        ```
        aws eks describe-access-entry \
            --cluster-name my-cluster \
            --principal-arn arn:aws-cn:iam::111122223333:role/my-console-viewer-role
        ```

     1. 列出关联的策略以确认策略关联：

        ```
        aws eks list-associated-access-policies \
            --cluster-name my-cluster \
            --principal-arn arn:aws-cn:iam::111122223333:role/my-console-viewer-role
        ```

        示例输出如下。

        ```
        {
            "associatedAccessPolicies": [
                {
                    "policyArn": "arn:aws-cn:eks::aws:cluster-access-policy/AmazonEKSViewPolicy",
                    "accessScope": {
                        "type": "cluster"
                    },
                    "associatedAt": "2024-03-15T10:31:15.456000-07:00",
                    "modifiedAt": "2024-03-15T10:31:15.456000-07:00"
                }
            ]
        }
        ```

## CloudTrail 可见性
<a name="cloudtrail-visibility"></a>

查看 Kubernetes 资源时，您将在 CloudTrail 日志中看到以下操作名称：
+  `AccessKubernetesApi`：读取或查看资源时

此 CloudTrail 事件提供了对您的 Kubernetes 资源的读取访问权限的审计跟踪记录。

**注意**  
此操作名称将显示在 CloudTrail 日志中，仅用于审计目的。它不是 IAM 操作，不能在 IAM 策略声明中使用。要通过 IAM 策略控制对 Kubernetes 资源的读取权限，请使用 [所需的权限](#view-kubernetes-resources-permissions) 部分中所示的 `eks:AccessKubernetesApi` 权限。