第十一 dashboard展示
一直使用kubectl命令操作apiserver实现
dashboard作为k8s核心附件存在的,
官网部署:https://github.com/kubernetes/dashboard
根据教程,还是安装老版本的镜像吧
[root@k8s-master dashboard]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yaml
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
[root@k8s-master dashboard]# kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 6d5h
kubernetes-dashboard ClusterIP 10.107.11.100 <none> 443/TCP 2m
需要提前下载镜像,国外站点下载不了,master节点上操作即可
[root@k8s-master ~]# docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.8.3
[root@k8s-master ~]# docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.8.3
[root@k8s-master ~]# docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.8.3 k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
现在外部需要访问,怎么做
第一种,改成nodeport方式运行,
直接patch打补丁,定义service访问模式
[root@k8s-master dashboard]#
[root@k8s-master dashboard]# kubectl patch svc kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}' -n kube-system
service/kubernetes-dashboard patched
[root@k8s-master dashboard]# kubectl get svc -n kube-system -owide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 6d5h k8s-app=kube-dns
kubernetes-dashboard NodePort 10.107.11.100 <none> 443:32519/TCP 7m2s k8s-app=kubernetes-dashboard
浏览器访问https://192.168.1.202:32519/#!/login,需要认证, Kubeconfig或者 令牌认证。
这种https访问形式,一定是使用了源k8s里面的ca证书。新版本 需要注意。
第一种 Kubeconfig认证比较复杂
做证书,ca签证,tls证,sa, clusterbinding
查看token,登录发现效果跟没有使用token一致,登录之后都没有操作权限。
[root@k8s-master ~]# kubectl describe secret kubernetes-dashboard-token-wg6mt -n kube-system # 查看默认令牌
...
ca.crt: 1025 bytes
namespace: 11 bytes
token: ...
重建dashboard服务,还是没有操作权限,后面发现创建的用户管理员信息,所以看不到。
第二种方式
以kubeconfig配置文件形式访问。
创建只对默认ns有权限,不能访问其他命名空间。
[root@master configmap]# kubectl create serviceaccount def-ns-admin -n default
serviceaccount/def-ns-admin created
[root@master configmap]# kubectl create rolebinding def-ns-admin --clusterrole=admin --serviceaccount=default:def-ns-admin
rolebinding.rbac.authorization.k8s.io/def-ns-admin created