在K8s/K3s集群中安装与卸载Dashboard
在K8s/K3s集群中安装与卸载Dashboard
本文将详细介绍如何在K8s/K3s集群中安装和卸载Dashboard。通过Helm进行安装,并配置相关服务和权限,使Dashboard能够对外提供访问。同时,也提供了完整的卸载步骤,确保资源能够被彻底清理。
安装步骤
安装Helm
由于安装Dashboard需要使用Helm命令,因此首先需要在master节点上安装Helm。具体的安装步骤可以参考Helm官方GitHub仓库中的说明。配置KUBECONFIG
Helm会使用kubectl默认的KUBECONFIG配置,这里我们需要将KUBECONFIG换成k3s的配置,否则会链接失败。在master主机上输入以下命令:export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
添加Dashboard源并安装
Helm下载完毕后,根据Dashboard官网的说明,在master主机中添加Dashboard源:helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
之后进行更新:
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
安装完成后,会出现如下结果:
修改服务类型
通过以下命令查看命名空间kubernetes-dashboard下的服务:kubectl -n kubernetes-dashboard get svc
与网上常规的只有一个kubernetes-dashboard服务不同,这里有多个kubernetes-dashboard服务。经过测试发现,只需对kubernetes-dashboard-kong-proxy的type进行修改,将其从ClusterIP修改为NodePort,这样Dashboard才能提供外部的访问端口:
kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard-kong-proxy
修改后的效果如下:
创建ServiceAccount和ClusterRoleBinding
在任何地方新建一个名为dashboard-admin.yaml的yaml文件:vi dashboard-admin.yaml
文件内容如下:
# 创建ServiceAccount apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- # 创建ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin # Kubernetes中内置的 ClusterRole,拥有对集群中所有资源的完全控制权 subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard之后运行以下指令: ```bash kubectl apply -f dashboard-admin.yaml
获取Token
由于Kubernetes 1.24之后不再为ServiceAccount自动生成Secret,因此需要使用以下方式创建Token:kubectl -n kubernetes-dashboard create token admin-user
访问Dashboard
在外部浏览器输入以下地址(注意将红框中的IP地址替换为自己的master主机的IP地址,可以用ip addr
查看ens33
的IP地址):http://<master-ip>:<nodeport>/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
第一次访问需要点高级选择继续访问,然后复制之前提供的Token粘贴上去即可登录Dashboard。
卸载步骤
卸载Helm Release
由于是用Helm安装的,所以用它来卸载:helm list -n kubernetes-dashboard helm uninstall <release-name> -n kubernetes-dashboard
将
<release-name>
替换为实际的 Helm Release 名称(可以通过helm list -n kubernetes-dashboard
查看kubernetes-dashboard命名空间下的Helm Release)。删除相关资源
以下框住的内容可以直接通过kubectl delete -f admin-user.yaml
来删除(一键删除admin-user.yaml文件定义的所有资源):kubectl get serviceaccount -n kubernetes-dashboard kubectl get clusterrolebinding kubectl delete serviceaccount admin-user -n kubernetes-dashboard kubectl delete clusterrolebinding admin-user
删除命名空间
检查Kubernetes Dashboard资源是否已删除:kubectl get all -n kubernetes-dashboard
删除kubernetes-dashboard命名空间:
kubectl delete namespace kubernetes-dashboard
验证命名空间删除情况:
kubectl get namespaces
验证清理结果:
kubectl get all --all-namespaces | grep dashboard
如果没有输出,说明所有与Kubernetes Dashboard相关的资源都已成功删除。
清理Helm仓库
最后将k8s资源从Helm仓库移除:helm repo remove kubernetes-dashboard