K8S部署前端可视化dashboard插件(坑已踩完)
部署Dashboard官方参考文档:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/github项目地址:https://github.com/kubernetes/dashboard当前部署dashboard版本:v2.0.0,注意检查dashboard版本与kubernetes版本兼容性:
部署Dashboard
官方参考文档:
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
github项目地址:
https://github.com/kubernetes/dashboard
当前部署dashboard版本:v2.0.0,注意检查dashboard版本与kubernetes版本兼容性:
https://github.com/kubernetes/dashboard/releases
方法一:不推荐(新手找不到yaml的本地路径)
执行yaml文件直接部署:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
查看dashboard运行状态,以deployment方式部署,运行2个pod及2个service:
[root@master ~]# kubectl -n kubernetes-dashboard get pods
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-694557449d-wfv4b 1/1 Running 0 4m50s
kubernetes-dashboard-9774cc786-v9ltx 1/1 Running 0 4m50s
[root@master ~]# kubectl -n kubernetes-dashboard get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.100.165.238 <none> 8000/TCP 4m52s
kubernetes-dashboard ClusterIP 10.109.218.125 <none> 443/TCP 4m52s
访问dashboard
这里作为演示,使用nodeport方式将dashboard服务暴露在集群外,指定使用30443端口,可自定义:
kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard \
-p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30443}]}}'
查看暴露的service,已修改为nodeport类型:
# kubectl -n kubernetes-dashboard get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.102.18.37 <none> 8000/TCP 69s
kubernetes-dashboard NodePort 10.110.118.188 <none> 443:30443/TCP 69s
方法二:推荐
下载yaml文件手动修改service部分
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
yaml文件会下载到当前路径下
修改yaml文件
vi recommended.yaml
修改Service部分
-----------------------------------------------
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30443
selector:
k8s-app: kubernetes-dashboard
----------------------------------------------
注意如果这里的nodePort写成nodeport或者存在其他书写问题,就会报如下的错
[root@ks-allinone k8s-ui]# kubectl apply -f recommended.yaml
namespace/kubernetes-dashboard unchanged
serviceaccount/kubernetes-dashboard unchanged
error: error validating "recommended.yaml": error validating data: ValidationError(Service.spec.ports[0]): unknown field "nodeport" in io.k8s.api.core.v1.ServicePort; if you choose to ignore these errors, turn validation off with --validate=false
更新配置
kubectl apply -f recommended.yaml
登录dashboard
浏览器访问dashboard:
https://<any_node_ip>:30443
出现如下页面
Dashboard 支持 Kubeconfig 和 Token 两种认证方式,我们这里选择Token认证方式登录。
官方参考文档:
https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
创建dashboard-adminuser.yaml:
[root@ks-allinone k8s-ui]# cat > dashboard-adminuser.yaml << EOF
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
创建登录用户
[root@ks-allinone k8s-ui]# kubectl apply -f dashboard-adminuser.yaml
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
说明:上面创建了一个叫admin-user的服务账号,并放在kubernetes-dashboard 命名空间下,并将cluster-admin角色绑定到admin-user账户,这样admin-user账户就有了管理员的权限。默认情况下,kubeadm创建集群时已经创建了cluster-admin角色,我们直接绑定即可。
查看admin-user账户的token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
[root@ks-allinone k8s-ui]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
Name: admin-user-token-k42wt
Namespace: kubernetes-dashboard
Labels: <none>
Annotations: kubernetes.io/service-account.name: admin-user
kubernetes.io/service-account.uid: 77d89b66-c70c-4784-8b8d-b18a2dc203a8
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 20 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjZUQU44UXNLREhCVm05RWZhb2h3TGRQQk5ZdF9jQjdfcnNXRVkzWldnbWcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWs0Mnd0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI3N2Q4OWI2Ni1jNzBjLTQ3ODQtOGI4ZC1iMThhMmRjMjAzYTgiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Z6Pn_bf9yi9a9wAGRe71dlAUgNqaH9gU5IksRCk0exfA-RokeU03NTNVd9ZqpH-_6w-rfeozsvDS2IymMqtIuH1F3RqNWORc9_aLw-6xTL-X8HaupGZgR5M0v3J286KjHTyU-ZqJ0Zoq1T0gGHdPSJTfwzV9WTz-tniOSjvjkkGuC-CLADmadLrdOprKfIMQ0HmkHIxOzlRX6WJc1f5vbbB0K72A_dZxXI94bRs6TtLAilBU_F3MffPiLLgHPV1GJPOwKD2AAkGz1hNrLAuxpMGlEelDsjqxWZJnRARnZ97gpma0oSkmZg7-hkYHN4dcNTmwWLhbmkhWycOXZpFEYw
把获取到的Token复制到登录界面的Token输入框中,登陆成功。
更多推荐
所有评论(0)