下载官方文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
修改文件,去除自建的secret
#---
## 由于证书问题,只能firefox浏览器才能打开,通过修改证书的方式,使得所有浏览器都能打开
#apiVersion: v1
#kind: Secret
#metadata:
# labels:
# k8s-app: kubernetes-dashboard
# name: kubernetes-dashboard-certs #生成证书会用到该名字
# namespace: kubernetes-dashboard #生成证书使用该命名空间
#type: Opaque
修改service为NodePort方式
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: 32000
selector:
k8s-app: kubernetes-dashboard
创建自签名证书
# 创建目录使用证书
mkdir key && cd key
# 查看是否存在namespace为kubernetes-dashboard
kubectl get namespaces
# 不存在namespace为创建kubernetes-dashboard创建namespace
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=**192.168.100.10**'
# 生成自签证书
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
# 目录结构
[root@k8smaster key]# ll
total 12
-rw-r--r-- 1 root root 1001 Oct 23 22:21 dashboard.crt
-rw-r--r-- 1 root root 903 Oct 23 22:20 dashboard.csr
-rw-r--r-- 1 root root 1679 Oct 23 22:20 dashboard.key
# 使用自签证书创建secret
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kubernetes-dashboard
应用配置文件
kubectl create -f recommend.yaml
添加管理员并绑定管理员权限
# 创建sa
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
# 绑定集群管理员
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
获取登录token
kubectl describe secrets $(kubectl get secrets -n kubernetes-dashboard | awk '/dashboard-admin-token/{print $1}' ) -n kubernetes-dashboard |sed -n '/token:.*/p'
浏览器访问https://IP:32000
如果Chrome浏览器仍然显示非安全连接,且详细信息中没有继续前往按钮,请用safari打开该连接,点击详细信息中的继续前往,按照系统只是操作,最后发现该自签名证书会被添加到钥匙串中,之后在用chrome浏览器打卡就不会出现无法访问的情况了。