kubeadm使用命令行更新apiserver的certSANs

背景

从合作伙伴那里接手了一套华为私有云上的kubeadm部署的k8s节点,单master节点,4个node。
短期任务:master高可用,剩余的机器加入至集群中
LB IP地址:10.17.3.79
master1 IP地址: 10.17.3.154

思路

私有云上有一个LB资源,考虑将扩容后的master节点上的apiserver服务绑定至lb上,做高可用。需要把apiserver得ca证书中的X509v3 Subject Alternative Name即SAN字段中添加lb的IP地址

遇到的问题:

由于集群中安装了kubesphere后,由kubeadm生成的cr被kubesphere的ks-install覆盖了,不能使用网上的传统的kubeadm导出配置文件,添加ip,重新应用至集群这种方法失效。

解决思路:
查阅RTFM可以使用参数--apiserver-cert-extra-sans解决

实施

先查看单节点中的apiserver的证书中是不包含lb的IP地址的

root@k8s-master01:/etc/kubernetes/pki
openssl x509 -in apiserver.crt -noout -text
            X509v3 Subject Alternative Name: 
                DNS:k8s-master01, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:10.96.0.1, IP Address:10.17.3.154,

集群中已无kubeadm相关资源

root@k8s-master01:~# kubectl api-resources |grep kubeadm
# 输出结果为空
root@k8s-master01:~# kubectl api-resources |grep -i clusterconfig
clusterconfigurations               cc           installer.kubesphere.io/v1alpha1     true         ClusterConfiguration

这里输出的APIVERSION字段应该是kubeadm的,但被ks覆盖掉了

先移除证书

mkdir -pv /tmp/api-certs;mv /etc/kubernetes/pki/apiserver.{crt,key} /tmp/api-certs/

执行如下命令增加lb IP地址至san中

kubeadm init phase certs apiserver --apiserver-cert-extra-sans "10.17.3.79"

验证

root@k8s-master01:~# openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text
X509v3 Subject Alternative Name: 
                DNS:k8s-master01, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:10.96.0.1, IP Address:10.17.3.154, IP Address:10.17.3.79

删除apiserver pod等待自动重建来实现重启

kubectl delete pod kube-apiserver-k8s-master01 -n kube-system

LB上配置监听端口,后端服务器组,后端服务器组业务端口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用LB的IP地址添加其他master节点

kubeadm join 10.17.3.79:6443 --token 3y1wwy.ga3xxvjvh --discovery-token-ca-cert-hash sha256:624d766924e944ece611574aec334xx8d2f5 --node-name=10.17.3.42 --control-plane --certificate-key 2aecf278f5a16e244a707xxx028dbd13be22b84a7c1 --v=9

验证

root@k8s-master01:~# kubectl get node -o wide |grep 3.42
10.17.3.42     Ready                      control-plane   5d21h   v1.30.3   10.17.3.42    <none>        Ubuntu 18.04.3 LTS   4.15.0-70-generic   containerd://1.7.20

reference
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/
https://blog.csdn.net/weixin_44070095/article/details/125478908

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值