教程:部署 Kubernetes 控制面板 (Web UI) - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

教程:部署 Kubernetes 控制面板 (Web UI)

本教程将指导您完成将 Kubernetes 控制面板部署到 Amazon EKS 集群的过程,包括 CPU 和内存指标。它还帮助您创建可用于安全地连接到控制面板以查看和控制集群的 Amazon EKS 管理员服务账户。如果您在使用控制面板时遇到问题,可以在项目的 GitHub 存储库中创建签发拉取请求

先决条件

本教程假定:

步骤 1:部署 Kubernetes 控制面板

下载、修改控制面板清单并将其应用到您的集群。

  1. 使用针对集群版本的命令将控制面板清单文件下载到您的设备。

    • 版本 1.22

      可用版本的某些功能可能无法在此 Kubernetes 版本上正常使用。有关更多信息,请参阅 GitHub 上的版本

    • 版本 1.20 和 1.21

      curl -O https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
  2. 修改清单文件。

    1. 识别清单中的容器映像。

      cat recommended.yaml | grep image:

      输出示例如下。

      image: kubernetesui/dashboard:v2.4.0 image: kubernetesui/metrics-scraper:v1.0.7
    2. 提取上一步中返回的映像,并将其推送到节点有权访问的存储库。有关如何提取、标记和推送镜像到您自己的存储库的更多信息,请参阅 将容器镜像从一个存储库复制到另一个存储库

    3. 将以下命令中的 your-registry 替换为您的注册表,然后运行修改后的命令,将文件中的 kubernetesui 替换为您的注册表。

      sed -i.bak -e 's|kubernetesui|your-registry|' recommended.yaml
    4. 将以下命令中的 your-repositoryyour-tag 替换为您的存储库和标签,然后运行修改后的命令,将文件中的 dashboard:v2.4.0 替换为您的注册表和标签。

      sed -i.bak -e 's|dashboard:v2.4.0|your-repository:your-tag|' recommended.yaml
    5. 将以下命令中的 your-repositoryyour-tag 替换为您的存储库和标签,然后运行修改后的命令,将文件中的 dashboard:v2.4.0 替换为您的注册表和标签。

      sed -i.bak -e 's|metrics-scraper:v1.0.7|your-repository:your-tag|' recommended.yaml
  3. 将 Kubernetes 控制面板清单应用于集群。

    kubectl apply -f recommended.yaml

    输出示例如下。

    namespace/kubernetes-dashboard created serviceaccount/kubernetes-dashboard created service/kubernetes-dashboard created secret/kubernetes-dashboard-certs created secret/kubernetes-dashboard-csrf created secret/kubernetes-dashboard-key-holder created configmap/kubernetes-dashboard-settings created role.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created deployment.apps/kubernetes-dashboard created service/dashboard-metrics-scraper created deployment.apps/dashboard-metrics-scraper created

第 2 步:创建 eks-admin 服务账户和集群角色绑定

默认情况下,Kubernetes 控制面板用户的权限是有限的。在此部分中,您创建一个可用于使用管理员级别权限安全地连接到控制面板的 eks-admin 服务账户和集群角色绑定。有关更多信息,请参阅 Kubernetes 文档中的管理服务账户

创建 eks-admin 服务账户和集群角色绑定
重要

使用此过程创建的示例服务账户在集群上具有完整的 cluster-admin (超级用户) 特权。有关更多信息,请参阅 Kubernetes 文档中的使用 RBAC 授权

  1. 运行以下命令以创建包含以下文本的名为 eks-admin-service-account.yaml 的文件。此清单定义一个名为 eks-admin 的服务账户和集群角色绑定。

    cat >eks-admin-service-account.yaml <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: eks-admin namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: eks-admin namespace: kube-system EOF
  2. 将此服务账户和集群角色绑定应用到您的集群。

    kubectl apply -f eks-admin-service-account.yaml

    输出示例如下。

    serviceaccount "eks-admin" created clusterrolebinding.rbac.authorization.k8s.io "eks-admin" created
  3. 从 Kubernetes 版本 1.24 开始,不再自动生成服务帐号的密钥。必须使用以下命令手动创建它们:

    kubectl apply -f eks-admin-service-account.yaml << EOF apiVersion: v1 kind: Secret metadata: name: eks-admin namespace: kube-system annotations: kubernetes.io/service-account.name: eks-admin type: kubernetes.io/service-account-token EOF

第 3 步:连接到控制面板

现在,已将 Kubernetes 控制面板部署到集群,并且您已具有可用于查看和控制集群的管理员服务账户,您可使用该服务账户连接到控制面板。

连接到 Kubernetes 控制面板
  1. 检索 eks-admin 服务账户的身份验证令牌。

    kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')

    输出示例如下。

    Name: eks-admin-token-b5zv4 Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name=eks-admin kubernetes.io/service-account.uid=bcfe66ac-39be-11e8-97e8-026dce96b6e8 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: authentication-token

    从输出中复制 authentication-token 值。您可以在稍后的步骤中使用此令牌连接到控制面板。

  2. 启动 kubectl proxy

    kubectl proxy
  3. 要访问控制面板终端节点,请使用 Web 浏览器打开以下链接:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login

  4. 选择 Token(令牌),将上一个命令中的 authentication-token 输出粘贴到 Token(令牌)字段中,然后选择 SIGN IN(登录)

    登录之后,您会在 Web 浏览器中看到控制面板。

    
                        Kubernetes 控制面板

    有关使用控制面板的更多信息,请参阅 Kubernetes 文档中的部署和访问 Kubernetes 控制面板