当我们搭建完一个k8s集群并且使用官方dashboard-yaml文件创建好k8s-dashboard之后发现,只有火狐浏览器可以打开dashbaord界面,chrome和IE浏览器都无法访问
原因是部署UI的镜像中默认自带的证书是一个不可信任的证书
由此可以发现,该证书的很多信息都没有,并且证书的时间也都不正常,这就导致了大部分浏览器不认这个证书,但是我们自己生成的证书大部分浏览器都是可以访问的,那是因为我们自己签发的证书是符合校验字段的
下面介绍两种k8s集群搭建方式对应的解决方案(主要是将自带的证书替换成我们自己签发的证书)
对于自签证书,我们可以使用openssl
或者cfssl
工具生成证书,或者直接使用k8s证书(/etc/kubernetes/pki
)
kubeadm和二进制部署的k8s集群一般都有两套证书(2个ca签发),一套是apiserver,一套是etcd,如果想使用现成的证书,这两套都可以。
k8s-dashboard证书是存储在k8s中的:
可以发现,certs后面的数据是空的,这就说明在这个secret中并没有存储任何东西,只不过有这个资源创建了,证书在镜像中自带,那么我们需要做的就是需要在这个secret去签发证书,随后在重新创建dashboard的pod即可
注意你部署Dashboard的命名空间(之前部署默认是kube-system,新版是kubernetes-dashboard)
kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
kubectl create secret generic kubernetes-dashboard-certs \
--from-file=/opt/kubernetes/ssl/server-key.pem --from-file=/opt/kubernetes/ssl/server.pem -n kubernetes-dashboard
args:
# PLATFORM-SPECIFIC ARGS HERE
- --auto-generate-certificates
- --tls-key-file=server-key.pem
- --tls-cert-file=server.pem
kubectl apply -f kubernetes-dashboard.yaml
注意你部署Dashboard的命名空间(之前部署默认是kube-system,新版是kubernetes-dashboard)
kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
kubectl create secret generic kubernetes-dashboard-certs \
--from-file=/etc/kubernetes/pki/apiserver.key --from-file=/etc/kubernetes/pki/apiserver.crt -n kubernetes-dashboard
args:
# PLATFORM-SPECIFIC ARGS HERE
- --auto-generate-certificates
- --tls-key-file=apiserver.key
- --tls-cert-file=apiserver.crt
kubectl apply -f kubernetes-dashboard.yaml
查看secret:
效果:
证书信息:
“The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.” – Tom Cargill
标 题:解决Kubernetes-Dashboard在chrome浏览器上无法打开(证书不可信任)的问题