这部分主要讲了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通信而不仅仅是http3. ingress代理的方式,ingress-nginx traefik等等都可以3. 安装和登陆dashboard gui1.安装dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml2. 使dashboard对外暴露(使用http的方式,在生产中这是禁止的)
root@cks-master:~/work/dashboard# kubectl get pod,svc -n kubernetes-dashboardNAME READY STATUS RESTARTS AGEpod/dashboard-metrics-scraper-79c5968bdc-mbgk7 1/1 Running 0 19mpod/kubernetes-dashboard-6568c7684c-9n6vp 1/1 Running 3 3m41sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/dashboard-metrics-scraper ClusterIP 10.97.159.164 <none> 8000/TCP 19mservice/kubernetes-dashboard NodePort 10.97.34.204 <none> 9090:32740/TCP 19m
NodePort端口可以用master或者work节点任意一IP+端口方式访问
我觉得关于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 view5. so正常的部署方式
#部署kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml#修改网络类型NodePortkubectl edit svc kubernetes-dash����,����board -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没有对外暴露
- 尽在你需要的时候对外暴露,并且要保障足够的安全
- 弃用RBAC限制
- 实施用户认证
- 凭据要经常更改