Kubernetes 证书中添加负载均衡的IP

背景介绍

私有云环境中用3台虚拟机搭建了K8S的3个master节点,使用的工具是kubeasz当时搭建的时候没有选择负载均衡,当时想的是通过私有云提供的SLB来做3个master的负载+高可用。基本信息如下

角色 IP 提供服务
K8S Master 1 10.215.0.71 ETCD, API Server,Controller等
K8S Master 2 10.215.0.72 ETCD, API Server,Controller等
K8S Master 3 10.215.0.16 ETCD, API Server,Controller等
SLB 10.128.142.199 负载均衡

现象:

登录master 1 将 kube config(/root/.kube/config) 文件中的server地址修改为SLB的地址,然后运行kubectl get po ,结果报错:

错误信息: 

Unable to connect to the server: x509: certificate is valid for 10.215.0.71,127.0.0.1,10.0.0.1 ,not for 10.128.142.199

后来查看了网上资料和kubeasz的文档,解决方法是需要把SLB的地址加入到K8S API Server使用的证书中去,方法如下:

root 登录 master服务器,然后运行以下命令(三个master都要进行这样的操作

#cd /etc/kubernetes/

#cp -rp ssl ssl_bak

#cd ssl && vi kubernetes-csr.json 

#把SLB的地址加入到hosts中

[root@ai-test-k8s04 ssl]# vi kubernetes-csr.json
{
  "CN": "kubernetes",
  "hosts": [
    "10.128.142.199",
    "127.0.0.1",

#cfssl gencert -ca=./ca.pem -ca-key=./ca-key.pem -config=./ca-config.json -profile=kubernetes kubernetes-csr.json|cfssljson -bare kubernetes

运行完成以后,会生成新的证书

[root@ai-test-k8s04 ssl]# ls -ltr
total 68
-rw-r--r-- 1 root root 1391 Nov  5 11:30 admin.pem
-rw-r--r-- 1 root root 1679 Nov  5 11:30 admin-key.pem
-rw-r--r-- 1 root root 1350 Nov  5 11:30 ca.pem
-rw-r--r-- 1 root root 1675 Nov  5 11:30 ca-key.pem
-rw-r--r-- 1 root root  294 Nov  5 11:30 ca-config.json
-rw-r--r-- 1 root root  219 Nov  5 11:36 aggregator-proxy-csr.json
-rw-r--r-- 1 root root 1383 Nov  5 11:37 aggregator-proxy.pem
-rw------- 1 root root 1675 Nov  5 11:37 aggregator-proxy-key.pem
-rw-r--r-- 1 root root  997 Nov  5 11:37 aggregator-proxy.csr
-rw-r--r-- 1 root root  279 Nov  5 11:37 kubelet-csr.json
-rw-r--r-- 1 root root 1448 Nov  5 11:37 kubelet.pem
-rw------- 1 root root 1675 Nov  5 11:37 kubelet-key.pem
-rw-r--r-- 1 root root 1078 Nov  5 11:37 kubelet.csr
-rw-r--r-- 1 root root  488 Dec 24 20:07 kubernetes-csr.json
-rw-r--r-- 1 root root 1639 Dec 24 20:08 kubernetes.pem
-rw------- 1 root root 1675 Dec 24 20:08 kubernetes-key.pem
-rw-r--r-- 1 root root 1273 Dec 24 20:08 kubernetes.csr

重启K8S 的API 服务

#systemctl restart kube-apiserver

验证SLB地址作为kube config的地址入口,

[root@ai-test-k8s01 .kube]# grep server config
    server: https://10.128.142.199:6443
[root@ai-test-k8s01 .kube]# kubectl get po
NAME                                     READY   STATUS    RESTARTS   AGE
cas-client-85dbd65d7f-5pm7f              1/1     Running   1          47h
distributor-865ddd4b95-464zq             1/1     Running   1          15d
发布了20 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lwlfox/article/details/103693330