实验环境:
基于之前搭建好的多节点集群继续操作(多节点的布置可以参考之前的博客)
推荐步骤:
1.在master上操作,创建dashborad工作目录,将dashboard的ymal文件放到目录下
[root@master ~]# cd k8s/
[root@master k8s]# mkdir dashboard
这边也可以在官网下载
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard
########dashboard服务的5个重要文件###########
dashboard-configmap.yaml:dashboard的配置文件
dashboard-rbac.yaml:K8S的授权管理
dashboard-service.yaml:dashboard核心功能模块服务文件
dashboard-controller.yaml:dashboard构建部署资源的ym文件
dashboard-secret.yaml:证书验证
2.按照顺序利用文件格式创建资源;-f:引入文件,以文件形式构建资源
创建资源有两种方式:
- 1.利用文件格式创建:Kubectl create -f yaml文件
- 2.apply创建资源:Kubectl apply -f yaml文件,但是资源重新部署,更新用apply
[root@master dashboard]# kubectl create -f dashboard-rbac.yaml ##第一先创建k8s的授权管理
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
[root@master dashboard]# kubectl create -f dashboard-secret.yaml ##第二创建证书验证
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-key-holder created
[root@master dashboard]# kubectl create -f dashboard-configmap.yaml ##第三创建dashboard的配置文件
configmap/kubernetes-dashboard-settings created
[root@master dashboard]# kubectl create -f dashboard-controller.yaml ##第四创建dashboard构建部署资源的ym文件
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
[root@master dashboard]# kubectl create -f dashboard-service.yaml ##最后创建dashboard核心文件(服务)
service/kubernetes-dashboard created
3.完成后查看创建在指定的kube-system命名空间下;-n:指命名空间
[root@master dashboard]# kubectl get pods -n kube-system
4.查看如何访问,同时查看pod和命名空间,中间用逗号隔开
[root@master dashboard]# kubectl get pods,svc -n kube-system -o wide ##svc:service的缩写
30001是https443的映射端口,供外部访问使用
5.这时打开谷歌浏览器输入https://192.168.148.140:30001/访问页面
报错原因:是谷歌浏览器的证书原因
解决方法:1.可以尝试换个浏览器访问;2.自己制作访问证书
一.这边先尝试第一种解决方法:换个火狐浏览器访问
1.先配置生成令牌
[root@master dashboard]# vim k8s-admin.yaml ##编辑创建令牌的yaml文件
apiVersion: v1
kind: ServiceAccount ##资源类型
metadata:
name: dashboard-admin
namespace: kube-system ##资源的命名空间
---
kind: ClusterRoleBinding ##clusterRole资源绑定
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@master dashboard]# kubectl apply -f k8s-admin.yaml ##创建令牌
serviceaccount/dashboard-admin created
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
2.查看令牌
[root@master dashboard]# kubectl get secret -n kube-system
NAME TYPE DATA AGE
dashboard-admin-token-dvtnn kubernetes.io/service-account-token 3 4m56s
default-token-bpgzq kubernetes.io/service-account-token 3 8h
kubernetes-dashboard-certs Opaque 0 152m
kubernetes-dashboard-key-holder Opaque 2 152m
kubernetes-dashboard-token-ltkzl kubernetes.io/service-account-token 3 150m
[root@master dashboard]# kubectl describe secret dashboard-admin-token-dvtnn -n kube-system ##查看令牌详细信息
3.我们打开虚拟机的火狐浏览器访问
二.选择第二种谷歌浏览器无法访问的解决方法:dashboard制作证书的方式
[root@master 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@master dashboard]# vim dashboard-controller.yaml ##修改dashboard构建部署资源的ym文件,添加证书两行
........
args:
# PLATFORM-SPECIFIC ARGS HERE
- --auto-generate-certificates
- --tls-key-file=dashboard-key.pem ##添加服务的密钥文件
- --tls-cert-file=dashboard.pem ##添加服务证书
[root@master dashboard]# bash dashboard-cert.sh /root/k8s/k8s-cert/ ##运行证书脚本
重新部署
[root@master dashboard]# kubectl apply -f dashboard-controller.yaml
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created