1. 前言
这部分主要讲了kubernetes的Gui工具 dashboard。
1. 关于 GUI元素的访问控制
1. GUI元素和仪表盘
2. 外部访问仪表盘的方法
3. 访问的限制
2. GUI元素和仪表盘遵循的原则
1. 只在需要时向外部公开服务
2. 集群内部服务/仪表板也可以使用kubectlport-forward端口转发访问。
3. 需要开启rbac权限控制,否则蒋导致权限过大
4. 对外暴露不是必须的
2. 代理的方式
1. 关于 Kubectl porxy方式
1. create a proxy server between localhost and the kubernetes api server 在 localhost和kubernetes api服务器之间创建代理服务器
2. uses connection as configured in the kubeconfig 使用kubeconfig中配置的连接
3. allows to access api locally just over http and without authentication 允许通过HTTP本地访问api,无需身份验证
2. 关于kubectl port-forward
1. 将本地主机端口的连接转发到pod端口
2. 比使用kubectl代理更为通用
3. 可以用于所有tcp通信而不仅仅是http
3. ingress代理的方式,ingress-nginx traefik等等都可以![image.png](https://i-blog.csdnimg.cn/blog_migrate/97a52468531504734f5b58e99f3247b2.png)
3. 安装和登陆dashboard gui
1.安装dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml
2. 使dashboard对外暴露(使用http的方式,在生产中这是禁止的)
root@cks-master:~/work/dashboard# kubectl get pod,svc -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
pod/dashboard-metrics-scraper-79c5968bdc-mbgk7 1/1 Running 0 19m
pod/kubernetes-dashboard-6568c7684c-9n6vp 1/1 Running 3 3m41s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dashboard-metrics-scraper ClusterIP 10.97.159.164 <none> 8000/TCP 19m
service/kubernetes-dashboard NodePort 10.97.34.204 <none> 9090:32740/TCP 19m
NodePort端口可以用master或者work节点任意一IP+端口方式访问
4. 练习-用于仪表板的RBAC
我觉得关于rolebinding clusterrolebinding两个的区别有必要强调一下啊,一个是针对于命名空间的,另外一个是针对所有空间的。
#针对与一个命名空间
kubectl -n kubernetes-dashboard create rolebinding insecure --serviceaccount kubernetes-dashboard:kubernetes-dashboard --clusterrole view
#针对于所有空间
kubectl create clusterrolebinding insecure --serviceaccount kubernetes-dashboard:kubernetes-dashboard --clusterrole view
5. so正常的部署方式
#部署
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml
#修改网络类型NodePort
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
https方式登陆
获取token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk ‘{print $1}’)
将token复制进去 oK登陆成功
至于kuberconfig的方式就不去试了,因为config里面都设置的内网ip。apiserver没有对外暴露
4. 总结:
- 尽在你需要的时候对外暴露,并且要保障足够的安全
- 弃用RBAC限制
- 实施用户认证
- 凭据要经常更改