当我们搭建完一个 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)
1、 删除默认的 secret,用自签证书创建新的 secret
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
2、修改 dashboard.yaml 文件,在 args 下面增加证书两行
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
kubeadm 部署
注意你部署 Dashboard 的命名空间(之前部署默认是 kube-system,新版是 kubernetes-dashboard)
1、删除默认的 secret,用自签证书创建新的 secret
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
2、修改 dashboard.yaml 文件,在 args 下面增加证书两行
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:
效果:
证书信息:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于