安装Kubernetes Dashboard
类别: Kubernetes 标签: kubectl macOS目录
用户界面 Dashboard
Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。您可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源(如 Deployment,Job,DaemonSet 等等)。例如,您可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。
部署 Dashboard
安装 Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
过几分钟后您将看到 kubernetes-dashboard 名字空间下会有 Pod 运行。
kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-6b4884c9d5-27xf6 1/1 Running 0 4m
kubernetes-dashboard-7b544877d5-mfmbp 1/1 Running 0 4m
创建 admin-user 用户,绑定 RBAC 角色。
为了保护您的集群数据,默认情况下,Dashboard 会使用最少的 RBAC 配置进行部署。 当前,Dashboard 仅支持使用 Bearer 令牌登录。
cat <<EOF | kubectl apply -f -
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
---
EOF
获得 admin-user 的 Token
kubectl -n kubernetes-dashboard describe secret admin-user-token | grep ^token
访问 Dashboard
创建代理服务器连接本地主机和Kubernetes API服务器。(可以使用参数–port=number来指定端口。)
kubectl proxy
在创建代理服务器的系统中访问 Dashboard
在浏览器里输入地址 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 访问。
输入 Token 信息登录。完成后,我们可以看到 Kubernetes 集群信息。
远程访问Dashboard(在本地创建ssh隧道)
# -L 8001 本机的端口号,可以是任意。
ssh -L 8001:127.0.0.1:8001 -N -f -l <username> <kubernetes master hostname or ip>
在您的本地浏览器输入地址 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 访问。
NodePort
这种方式只推荐在开发环境下单节点安装。
编辑 kubernetes-dashboard
服务。
sudo kubectl -n kubernetes-dashboard edit service kubernetes-dashboard
修改内容 type: ClusterIP
为 type: NodePort
,保存文件。
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s-app":"kubernetes-dashboard"},"name":"kubernete
creationTimestamp: "2020-05-14T08:58:29Z"
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
resourceVersion: "129620"
selfLink: /api/v1/namespaces/kubernetes-dashboard/services/kubernetes-dashboard
uid: 81872828-d6b4-4673-b1c1-4744e3a7659c
spec:
clusterIP: 10.43.33.68
externalTrafficPolicy: Cluster
ports:
- nodePort: 32339
port: 443
protocol: TCP
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
查看服务的端口
sudo kubectl -n kubernetes-dashboard get service kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.43.33.68 <none> 443:32339/TCP 2d
您会看到 Dashboard 暴露出端口 32339(HTTPS)
,现在可以在您的浏览器中访问https://<master-ip>:32339
。如果您是多节点的集群,也可以使用节点IP访问,https://<node-ip>:<nodePort>
。
本地访问 Dashboard
在本地计算机安装kubectl ,下面是我在macOS下安装的步骤。
- 下载最新的版本。
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"
- 下载指定的版本。
curl -LO "https://dl.k8s.io/release/v1.21.5/bin/darwin/amd64/kubectl"
- 增加 kubectl 可执行权限。
chmod +x ./kubectl
- 移动 kubectl 到您的PATH下。
sudo mv kubectl /usr/local/bin/kubectl
- 验证您安装的版本。
kubectl version --client
拷贝master节点的 /etc/kubernetes/admin.conf 文件到本地 ~/.kube/config
scp lnsoft@172.16.33.157:/etc/kubernetes/admin.conf ~/.kube/config
在本地创建代理服务器
kubectl proxy