Kubernetes手记(15)- dashboard
【摘要】 十五 dashboard它作为 k8s 集群的附件存在,是 kubernetes 官方的项目之一,详见:https://github.com/kubernetes/dashboard 15.1 部署流程为 dashboard 提供 ssl 证书# 生成私钥(umask 077; openssl genrsa -out dashboard.key 2048)# 生成一个自签证书,注意 CN ...
十五 dashboard
它作为 k8s 集群的附件存在,是 kubernetes 官方的项目之一,详见:https://github.com/kubernetes/dashboard
15.1 部署流程
- 为 dashboard 提供 ssl 证书
# 生成私钥
(umask 077; openssl genrsa -out dashboard.key 2048)
# 生成一个自签证书,注意 CN 的值必须要与自己的域名完全一致
openssl req -new -x509 -key dashboard.key -out dashboard.crt -subj "/O=dashboard/CN=k8s.dashboard.com"
# 查看证书
openssl x509 -in dashboard.crt -text -noout
- 下载 dashboard 的清单文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
- 为 dashboard 创建 secret 对象
kubectl -n kube-system create secret generic kubernetes-dashboard-certs --from-file=dashboard.crt=./dashboard.crt --from-file=dashboard.key=./dashboard.key
- 修改 dashboard 清单中 service 的工作模式为 nodeport
sed -i '/targetPort: 8443/a\ \ type: NodePort' kubernetes-dashboard.yaml
- 注释掉 kubernetes-dashboard.yaml 清单文件中的 Dashboard Secret 这个证书的清单定义
# ------------------- Dashboard Secret ------------------- #
#apiVersion: v1
#kind: Secret
#metadata:
# labels:
# k8s-app: kubernetes-dashboard
# name: kubernetes-dashboard-certs
# namespace: kube-system
#type: Opaque
#---
- 部署 dashboard 清单
kubectl apply -f kubernetes-dashboard.yaml
- 取得 service 运行的端口
kubectl get service -n kube-system
- 使用 chrome 访问 dashboard
https://172.16.100.102:31097/
15.2 使用令牌登录
- 为 POD 创建一个 serviceaccount 对象,它是 POD 访问 apiserver 的凭证
kubectl create serviceaccount dashborad-admin -n kube-system
- 创建 clusterrolebinding 将用户绑定至 cluster-admin 集群管理员(最高权限)
kubectl create clusterrolebinding dashborad-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashborad-admin
- 找到刚才创建的 serviceaccount 对象
kubectl get secret -n kube-system
- 得到 serviceaccount 对象中的 Token
kubectl describe secret -n kube-system dashborad-admin
15.3 分级管理
现在需要创建一个只能管理 default 名称空间的用户,那么我们可以用 rolebinding 去绑定 admin 这个 clusterrolue 对象,那么就获得了当前名称空间的管理员权限了。
- 创建 serviceaccount 登录
kubectl create serviceaccount def-ns-admin -n default
- 使用 rolebinding 对象,将 default 名称空间的 def-ns-admin 这个 serviceaccunt 与 admin 这个 clusterrole 绑定
kubectl create rolebinding def-ns-admin --clusterrole=admin --serviceaccount=default:def-ns-admin
- 找到刚才创建的 serviceaccount 对象
kubectl get secret -n kube-system
- 得到 serviceaccount 对象中的 Token
kubectl describe secret def-ns-admin
15.4 配置文件认证
与之前基于 SSL 证书的 config 文件不同,这次使用是基于 Token 的 config 文件,可以不用创建证书了,使用已有的 serviceaccount 对象的 token。
- 设置集群的连接的 ca 机构证书,–kubeconfig 可以指定 kubectl 使用的配置文件位置,默认为用户家目录 .kube 目录中的 config
kubectl config set-cluster k8s-cluster --server=https://172.16.100.101:6443 --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true --kubeconfig=/tmp/test.conf
- 取得一个已经绑定角色的 serviceaccount 对象的 Token
kubectl describe secret def-ns-admin
- 使用 Token 来创建配置文件中的用户
kubectl config set-credentials def-ns-admin --token=<TOKEN> --kubeconfig=/tmp/test.conf
- 创建上下文对象,授权 kaliarch 用户访问名称为 kubernetes 的集群
kubectl config set-context def-ns-admin@k8s-cluster --cluster=k8s-cluster --user=def-ns-admin --kubeconfig=/tmp/test.conf
- 切换当前使用的上下文,到授权 kaliarch 到 kubernetes 的上下文上
kubectl config use-context def-ns-admin@k8s-cluster --kubeconfig=/tmp/test.conf
- 复制 /tmp/test.conf 这个文件到 dashboard 中就可以登录了
15.5 其他管理平台
K8s dashboard本质还是调用底层API,为方便用户提供GUI操作,方便快捷,降低K8s使用复杂性,但其没有涉及更多的云原生中的一些web功能。
还有很多优秀的容器管理平台,例如老牌的rancher,国人开发的kubesphere等,社区活跃,产品集成服务治理/监控/告警/devops等众多特性,让用户体验私滑的容器体验。
其他
自己将手记发在:https://github.com/redhatxl/awesome-kubernetes-notes
欢迎一键三连
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)