背景提要
k3s/K8S集群部署成功了,如何对集群进行可视化管理呢?搭建kubernetes-dashboard来解决这个问题。
目前网络上流传太多个人色彩的监控解决方案,但是操作手册良莠不齐,很多时候这样的文章反而会造成用户的使用成本指数增加,本人很讨厌虎头蛇尾的文章编辑,我综合整理了比较通用的容器化集群管理方案的落地实践手册,希望可以给初入云原生领域的同学一些参考指导。
安装部署dashboard
- 1.预检集群
kubectl get cs
kubectl get pods -A -o wide
image
- 2.获取资源
# 获取部署资源
mkdir -p /home/work/k3s-dashboard && cd /home/work/k3s-dashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
# 自定义证书文件
mkdir dashboard-certs
# 管理员用户
touch dashboard-admin.yaml
# 为管理员用户赋权
touch dashboard-admin-bind-cluster-role.yaml
image
说明: 可以调整获取资源的版本号从而获取到不同的版本信息资源,从而进行产品升级部署。
- 3.资源编辑
vim recommended.yaml
需要修改的内容如下所示。
---
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: 30000 #增加
selector:
k8s-app: kubernetes-dashboard
---
#因为自动生成的证书很多浏览器无法使用,所以我们自己创建,如果存在就注释掉kubernetes-dashboard-certs对象声明
---
- 4.部署检查
************ 创建证书 ************
mkdir dashboard-certs
cd dashboard-certs/
# 创建命名空间
kubectl create namespace kubernetes-dashboard
# 创建key文件
openssl genrsa -out dashboard.key 2048
# 证书请求
openssl req -days 36000 -new -out dashboard.csr -key dashboard.key -subj '/CN=dashboard-cert'
# 自签证书
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
# 创建kubernetes-dashboard-certs对象
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
# 安装kubernetes-dashboard
cd ../
kubectl create -f recommended.yaml
注: 这是因为我们在创建证书时,已经创建了kubernetes-dashboard命名空间,如果有命名空间已存在的报错,直接忽略即可。
资源检查:
image
- 5.创建管理用户
# 创建dashboard-admin.yaml文件。
vim dashboard-admin.yaml
# 保存退出后执行如下命令创建管理员。
kubectl create -f ./dashboard-admin.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: dashboard-admin
namespace: kubernetes-dashboard
# 创建dashboard-admin-bind-cluster-role.yaml文件。
vim dashboard-admin-bind-cluster-role.yaml
# 保存退出后执行如下命令为用户分配权限。
kubectl create -f ./dashboard-admin-bind-cluster-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin-bind-cluster-role
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kubernetes-dashboard
- 6.获取登录信息
# 在命令行执行如下命令
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
# 具体执行情况如下所示
[root@vm3290 k3s-dashboard]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
Name: dashboard-admin-token-65w26
Namespace: kubernetes-dashboard
Labels: <none>
Annotations: kubernetes.io/service-account.name: dashboard-admin
kubernetes.io/service-account.uid: 7aed6a0e-3c24-475a-a50b-a70b9193788d
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 570 bytes
namespace: 20 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6InZYVjV1NHJxU3hZNk9SZmdpMWdvU01
# 可以看到,此时的Token值为:
eyJhbGciOiJSUzI1NiIsImtpZCI6InZYVjV1NHJxU3hZNk9SZmdpMWdvU01
-
7.管理平台
在浏览器中打开链接 https://可以访问到的集群ip:30000 ,如下所示。
image
扩展阅读
问题点:
网上流传了太多别人整理的文档,但是因为没有深入,所以没有吃透证书的配置,导致了,打开页面无法登录访问的窘境。
kubernetes-dashboard 的证书需要自己手动生成以后用于访问才可以,这个点很关键,最然可以通过流量代理的方案进行映射,但是毕竟是外门邪道,反而让入门的同学觉得讨厌。
treafik 如何配置带有证书的配置,我们需要深入探讨下,但是建议 kubernetes-dashboard 不要通过 ingress 对外暴露,直接通过 Ip:Port对外访问效果会比较好。
关于集群配置文件的位置:
# k8s配置文件位置
/etc/kubernetes/admin.conf
# k3s配置文件位置
/etc/rancher/k3s.k3s.yaml
# 改变配置文件的服务器地址
如果不是集群主机访问集群,就需要修改配置文件的server字段,只需将server的IP改成master的主机IP即可
网友评论