K8s——UI界面的部署(4)

前言:

接上一篇负载均衡部署(3)部署UI界面
yaml下载:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard

部署环境

负载均衡
Nginx1:192.168.13.128/24
Nginx2:192.168.13.129/24
Master节点
master1:192.168.13.131/24 kube-apiserver kube-controller-manager kube-scheduler etcd
master2:192.168.13.130/24 kube-apiserver kube-controller-manager kube-scheduler etcd
Node节点
node1:192.168.13.132/24 kubelet kube-proxy docker flannel etcd
node2:192.168.13.133/24 kubelet kube-proxy docker flannel etcd

1,在master01上创建dashboard

[root@master01 ~]# cd k8s/
[root@master01 k8s]# mkdir dashboard  ##创建工作目录
[root@master01 k8s]# cd dashboard/
[root@master01 dashboard]# rz -E  ##上传dashboard的yaml文件
[root@master01 dashboard]# ls
dashboard-configmap.yaml   ##配置应用
dashboard-rbac.yaml         ##授权访问api
dashboard-service.yaml    ##发布应用
dashboard-controller.yaml  ##控制器
dashboard-secret.yaml       ##安全加密
k8s-admin.yaml     ##生成令牌
[root@master01 dashboard]# kubectl create -f dashboard-rbac.yaml  ##创建api授权
[root@master01 dashboard]# kubectl create -f dashboard-secret.yaml   ##创建安全加密
[root@master01 dashboard]# kubectl create -f dashboard-configmap.yaml  ##创建配置
[root@master01 dashboard]# kubectl create -f dashboard-controller.yaml   ##创建应用
[root@master01 dashboard]# kubectl create -f dashboard-service.yaml   ##创建发布
[root@master01 dashboard]# kubectl get pods -n kube-system  
##查看创建在指定的kube-system命名空间
NAME                                    READY   STATUS    RESTARTS   AGE
kubernetes-dashboard-65f974f565-xwhcb   1/1     Running   0          2m31s
[root@master01 dashboard]# kubectl get pods,svc -n kube-system  ##查看如何访问
NAME                                        READY   STATUS    RESTARTS   AGE
pod/kubernetes-dashboard-65f974f565-xwhcb   1/1     Running   0          4m55s

NAME                           TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
service/kubernetes-dashboard   NodePort   10.0.0.119   <none>        443:30001/TCP   4m51s

2,用浏览器访问node节点ip(Google浏览器无法访问的问题)

##更多工具——开发者工具——security

3,进行自签证书

[root@master01 dashboard]# vim dashboard-cert.sh   ##创建证书脚本文件
cat > dashboard-csr.json <<EOF
{
	 "CN": "Dashboard",
	 "hosts": [],
	 "key": {
			 "algo": "rsa",
			 "size": 2048
	 },
	 "names": [
			 {
					 "C": "CN",
					 "L": "BeiJing",
					 "ST": "BeiJing"
			 }
	 ]
}
EOF

K8S_CA=$1
cfssl gencert -ca=$K8S_CA/ca.pem -ca-key=$K8S_CA/ca-key.pem -config=$K8S_CA/ca-config.json -profile=kubernetes dashboard-csr.json | cfssljson -bare dashboard
kubectl delete secret kubernetes-dashboard-certs -n kube-system
kubectl create secret generic kubernetes-dashboard-certs --from-file=./ -n kube-system
[root@master01 dashboard]# bash dashboard-cert.sh /root/k8s/k8s-cert/  
##执行证书脚本,指定证书的应用
[root@master01 dashboard]# ls   ##查看生成的证书
dashboard-cert.sh          dashboard-csr.json   dashboard-secret.yaml
dashboard-configmap.yaml   dashboard-key.pem    dashboard-service.yaml
dashboard-controller.yaml  dashboard.pem        k8s-admin.yaml
dashboard.csr              dashboard-rbac.yaml
[root@master01 dashboard]# vim dashboard-controller.yaml  ##修改应用配置文件
 45         args:
 46           # PLATFORM-SPECIFIC ARGS HERE
 47           - --auto-generate-certificates
 48           - --tls-key-file=dashboard-key.pem  ##添加证书文件
 49           - --tls-cert-file=dashboard.pem        ##添加证书文件
 [root@master01 dashboard]# kubectl apply -f dashboard-controller.yaml  ##重新部署

4,重新用浏览器访问node1节点地址

5,生成令牌,进行使用UI界面


 vim k8s-admin.yaml  ##证书生成的yaml配置文件
 apiVersion: v1
kind: ServiceAccount
metadata:
	name: dashboard-admin
	namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
	name: dashboard-admin
subjects:
	- kind: ServiceAccount
		name: dashboard-admin
		namespace: kube-system
roleRef:
	kind: ClusterRole
	name: cluster-admin
	apiGroup: rbac.authorization.k8s.io

[root@master01 dashboard]# kubectl create -f k8s-admin.yaml  ##生成令牌
[root@master01 dashboard]# kubectl get secret -n kube-system  ##保存令牌
NAME                               TYPE                                  DATA   AGE
dashboard-admin-token-489x2        kubernetes.io/service-account-token   3      2m2s
[root@master01 dashboard]# kubectl describe secret dashboard-admin-token-489x2 -n kube-system
##查看令牌

token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tNDg5eDIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiY2Q2NzQ4NGYtNGJjZi0xMWVhLThkZTAtMDAwYzI5ZjNiNTNiIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.lXmRZS2TSk5HHmXzrjvp8ISj4fna_anekJDCZW5NV7vB45s-IZTq7VLG1qd8MfMP0MCOQgKdE-1ulg9b6ql3a6zbUJe848mk99yVOIwKbZTN2M-SG848ljSAjCt66rUkilbcTqByK719rTLbwTtmibgI7jy1NXeZXp_Q_8QE8aXAfJz1EnxI3kbz7Qr1FetZ1O1hTnzc-hEwCgUOMhMZsheBBry9SahXj-3fYNRyK1MpuhkDleNyjQnuNfdsSmgrJI1HvVNczw_tYNQb1QqpppegAdLNvIArMmIDA15q_vL9Wg7h9nb8Ay3KSss7IgHkqN1YxTNdWZyeMpEt9pPQOw

6,利用令牌进行登录


##成功访问到UI界面


k8s部署全部完成,谢谢阅读!!!

外链图片转存中…(img-uTzfJknZ-1581401225726)]
##成功访问到UI界面
[外链图片转存中…(img-UEXAzHEO-1581401225728)]


k8s部署全部完成,谢谢阅读!!!

### 在 Kubernetes 中部署 k8s Dashboard 要在 Kubernetes (k8s) 集群中成功部署 Dashboard 可视化面板,可以按照以下方法操作: #### 1. 确认版本兼容性 在开始之前,请确认所使用的 Kubernetes 和 Dashboard 的版本是相互兼容的。例如,在本案例中提到的是 Kubernetes v1.22.5 对应 Dashboard v2.5.0[^1]。 #### 2. 安装 Kubernetes Dashboard 可以通过官方 YAML 文件来安装 Dashboard。执行以下命令下载并应用配置文件: ```bash kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml ``` 这一步会创建必要的资源对象,包括 Deployment、ServiceAccount、ClusterRoleBinding 等[^2]。 #### 3. 创建管理员用户和服务账户 为了安全访问 Dashboard,建议创建一个新的服务账户以及绑定相应的权限角色。以下是 `dashboard-adminuser.yaml` 的内容示例: ```yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard ``` 通过以下命令将其应用于集群: ```bash kubectl apply -f dashboard-adminuser.yaml ``` 该步骤确保新创建的服务账户拥有足够的权限去管理和监控整个集群的状态[^3]。 #### 4. 查看 Pod 运行状态 一旦完成上述设置,可通过以下指令验证 Dashboard 是否正常启动: ```bash kubectl get po -n kubernetes-dashboard ``` 如果一切顺利,则应该看到两个 Pods 均处于 Running 状态,类似于这样的输出结果: ``` NAME READY STATUS RESTARTS AGE dashboard-metrics-scraper-7d9bdfcdd-lqzgj 1/1 Running 0 1h kubernetes-dashboard-6dbbbdcff-pwvmt 1/1 Running 0 1h ``` #### 5. 访问 Dashboard UI 默认情况下,Dashboard 是通过 NodePort 方式暴露给外部网络访问的。查询其具体端口号可运行如下命令: ```bash kubectl get svc -n kubernetes-dashboard ``` 通常返回的结果可能像这样显示外网可用地址和端口映射关系: ``` NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-dashboard NodePort 10.0.0.128 <none> 443:31000/TCP 1h ``` 此时即可打开浏览器输入形如 http(s)://<Node_IP>:31000 地址尝试连接到界面。 #### 6. 登录认证方式选择 当首次进入页面时会被提示多种登录选项之一——Token 或者 kubeconfig 文件形式的身份验证机制。对于前面定义好的自定义 SA 用户来说推荐采用 Token 方法获取令牌字符串作为凭证提交进去实现身份校验过程。 生成 token 使用下面这条语句提取出来供后续登陆环节调用: ```bash kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}') ``` --- ### 注意事项 - 如果遇到任何错误或者异常情况,请及时查阅日志排查问题所在位置;比如针对某个特定 pod 能够利用 `kubectl logs <pod_name>` 获取更多信息帮助诊断故障原因。 - 不要忘记考虑安全性因素,生产环境中应当启用 HTTPS 加密传输数据保护敏感信息不被窃取泄露风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值