如何在 Amazon EKS 集群上设置 Kubernetes 控制面板?

上次更新时间:2019 年 7 月 17 日

如何在 Amazon Elastic Kubernetes Service (Amazon EKS) 集群上设置 Kubernetes 控制面板?

简短描述

设置 Kubernetes 控制面板需要已弃用的指标提供程序 Heapster。由于 Heapster 已被弃用,因此禁用 Amazon EKS 优化 AMI 中的 kubelet 的只读端口 (10255)(从版本 1.10.11 开始)。此禁用的端口在 Heapster 日志中生成错误,显示“dial tcp x.x.x.x:10255:getsockopt: connection refused”。 此错误意味着您在访问 Kubernetes 控制面板时看不到 CPU 和内存指标。

解决方法

设置您的环境

注意:如有必要,使用 SSH 连接到您的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。以下代码示例中的语法适用于 Linux 服务器。

1.    安装 kubectlaws-iam-authenticator

2.    运行以下命令,配置您的 kubeconfig 文件以指向 Amazon EKS 控制层面:

$ aws eks update-kubeconfig --name EKS_ClusterName

注意: 请用您的 EKS 集群名称替换 EKS_ClusterName。有关配置您的kubeconfig 文件的更多信息,请参阅 update-kubeconfig

3.    如需验证工作线程节点是否正在您的环境中运行,请运行以下命令:

$ kubectl get nodes

4.    如需验证 Kubernetes 服务是否正在您的环境中运行,请运行以下命令:

$ kubectl get svc

创建 Kubernetes 控制面板

1.    如需创建 Kubernetes 控制面板,请运行以下命令:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

2.    如需在带 Heapster 的控制面板上使用指标和图表,请运行以下命令:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml

重要提示:要让 Heapster 收集将显示在 Kubernetes 控制面板上的 CPU 和内存指标,您可以使用 AWS CloudFormation 的 amazon-eks-nodegroup 模板来预置您的 EKS 工作节点。要避免简短描述部分中的错误,请在 AWS CloudFormation 模板中启用 Amazon EKS 优化 AMI 上的只读端口 (10255)。此外,在创建 EKS 工作节点时,将 BootstrapArguments 参数设置为 --kubelet-extra-args '--read-only-port=10255'

3.    如需创建部署和服务,请运行以下命令:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml

4.    如需为控制面板创建集群角色绑定,请运行以下命令:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml

5.    如需创建一个具有新集群管理权限的新服务账户,请运行以下命令:

cat > eks-admin-service-account.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: eks-admin
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
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

6.    如需验证在上一步中创建的清单文件,请运行以下命令:

$ cat eks-admin-service-account.yaml

7.    如需将 eks-admin 绑定到集群角色绑定,请运行以下命令:

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

8.    如需将所有请求从您的 Amazon EC2 实例本地主机端口转发到 Kubernetes 控制面板端口,请运行以下命令:

$ kubectl port-forward svc/kubernetes-dashboard -n kube-system 6443:443

9.    如需从带 SSH 隧道的本地计算机访问端口,请运行以下命令:

ssh -i EC2KeyPair.pem ec2-user@IP -L 6443:127.0.0.1:6443

注意: 请用您的密钥对替换 EC2KeyPair.pem

在浏览器中访问 Kubernetes 控制面板

1.    如需在浏览器中访问您 Kubernetes,请输入 https://127.0.0.1:6443

Kubernetes 控制面板会在浏览器中加载并提示您输入。

2.    如需为身份验证获取持有者令牌,请返回到命令行,并运行以下命令:

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

3.    从命令行输出复制令牌。

4.    在您的浏览器上,在 Kubernetes 控制面板弹出窗口中,选择令牌

5.    将令牌从输出粘贴到输入令牌方框中,然后选择登录

现在,您可以在浏览器中访问 Kubernetes 控制面板。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?