K8S | Dashboard界面管理
安装部署Dashboard
通过一下命令来部署, recommended.yaml
$ sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
这个地址却很难打开,如果能打开,直接执行即可,如果不能,可以这样做:
到github地址上一步步找:`https://github.com/kubernetes/dashboard/tree/v2.0.0-beta4/aio/deploy`下的`recommended.yaml`文件;
NodePort方式访问web
为了测试方便,我们将Service
改成NodePort
类型,注意 YAML 中最下面的 Service 部分新增一个type=NodePort
:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort #增加
ports:
- port: 443
targetPort: 8443
nodePort: 30000 #增加
selector:
k8s-app: kubernetes-dashboard
然后直接部署新版本的dashboard
即可:
$ sudo kubectl create -f recommended.yaml
或者
$ sudo kubectl apply -f recommended.yaml
删除的指令 sudo kubectl delete -f recommended.yaml
查看服务暴露的端口
$ sudo kubectl get service -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.103.34.200 <none> 8000/TCP 4s
kubernetes-dashboard NodePort 10.98.254.205 <none> 443:31038/TCP 4s
然后直接访问集群中的任何一个节点 IP 加上上面的31038端口即可打开 dashboard 页面了
查看dashboard状态
$ sudo kubectl get pods --all-namespaces | grep dashboard
kubernetes-dashboard dashboard-metrics-scraper-6b4884c9d5-mvnb9 1/1 Running 0 40m
kubernetes-dashboard kubernetes-dashboard-d7f7f565d-zhpsc 1/1 Running 0 40m
查看dashboard的日志
$ sudo kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-d7f7f565d-zhpsc
如果安装后,dashboard状态直接爆错,没有处于Running状态,可以执行下面命令删除插件与镜像,使用docker pull安装镜像的可以更换其他版本镜像与yaml进行安装
# 删除dashboard插件,recommended.yaml为安装时的名称,执行删除后,docker里对应的镜像没不会同步删除
sudo kubectl delete -f recommended.yaml
Web访问的其他方式
开启NodePort访问的另一种方式
查看 kubernetes-dashboard
sudo kubectl --namespace=kubernetes-dashboard get service kubernetes-dashboard
[root@k8s ~]# kubectl --namespace=kubernetes-dashboard get service kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard ClusterIP 10.97.154.42 <none> 443/TCP 28m
编辑kubernetes-dashboard
, 将里面的type: ClusterIP
改为type: NodePort
即可。
$ kubectl --namespace=kubernetes-dashboard edit service kubernetes-dashboard
wq
保存即可。等一会儿,重新查看,就变为NodePort了。
$ sudo kubectl --namespace=kubernetes-dashboard get service kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.98.254.205 <none> 443:31038/TCP 59s
然后直接访问集群中的任何一个节点 IP 加上上面的31038端口即可打开 dashboard 页面了
API Server访问
启动Web访问,accept-hosts需要绑定当前服务器ip,即绑定接收请求的地址(可以使用正则表达式),不绑定访问可能会被拒绝,直接返回“Forbidden”
nohup sudo kubectl proxy --address='0.0.0.0' --port=8001 --accept-hosts='.*' &
直接用curl在服务器测试访问
curl http://localhost:8001/api/
如果能返回下面json串,就表示Dashboard已安装成功
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "192.168.10.161:6443"
}
]
}
进入Dashboard web管理平台 http://192.168.10.161:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login
创建用户
我们创建一个admin用户并授予admin 角色绑定,使用下面的yaml文件创建admin用户并赋予他管理员权限,然后就可以通过token 登陆dashbaord,这种认证方式本质实际上是通过Service Account 的身份认证加上Bearer token请求 API server 的方式实现,参考Kubernetes 中的认证。
``
新建文件(文件名随意)admin-user.yaml
:
输入内容:
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
执行:
sudo kubectl create -f admin-user.yaml
绑定用户关系
新建文件(文件名随意)admin-user-role-binding.yaml
:
输入内容:
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
执行:
sudo kubectl create -f admin-user-role-binding.yaml
如果过程中提示存在或者需要删除,只需要kubectl delete -f 相应的yaml文件
即可。
获取token
按照官网提示的获取token方法:
$ sudo kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
--完--
- 原文作者: 留白
- 原文链接: https://zfunnily.github.io/2020/08/dashboard/
- 更新时间:2024-04-16 01:01:05
- 本文声明:转载请标记原文作者及链接