首页 > 其他分享 >kubeadm 部署的 k8s 增加 ip 并重新生成证书

kubeadm 部署的 k8s 增加 ip 并重新生成证书

时间:2023-02-02 18:25:20浏览次数:65  
标签:IP k8s kubernetes ip 192.168 etc Address kubeadm pki

目录

上集回顾

  • 上一篇文章 利用 member update 实现 etcd 灾难恢复 [ 也可实现 etcd 集群迁移 ] 经历了许多,这一篇文章,也是由上一篇的事故引起的
  • 原因是客户环境为双网卡环境,对内和对外有两个不同的网段,因为前期的部署 [那肯定不是我部署的,是我部署,我也不一定注意的到],因为本机路由不对,没有走对外的网卡,而加入控制节点的时候,没有指定 ip,导致走的默认路由,后期发现了问题,现在需要重新生成证书来修复 etcd 和 apiserver 因为修改 ip 而引发的一系列问题

正片开始

证书的修改,必须要 apiserver 服务可用

备份 kubernetes 目录

cp -r /etc/kubernetes{,-bak}

查看证书内的 ip

for i in $(find /etc/kubernetes/pki -type f -name "*.crt");do echo ${i} && openssl x509 -in ${i} -text | grep 'DNS:';done

可以看到,只有 apiserver 和 etcd 的证书里面是包含了 ip 的

/etc/kubernetes/pki/ca.crt
/etc/kubernetes/pki/front-proxy-ca.crt
/etc/kubernetes/pki/etcd/ca.crt
/etc/kubernetes/pki/etcd/server.crt
                DNS:master-03, DNS:localhost, IP Address:192.168.11.135, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1
/etc/kubernetes/pki/etcd/healthcheck-client.crt
/etc/kubernetes/pki/etcd/peer.crt
                DNS:master-03, DNS:localhost, IP Address:192.168.11.135, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1
/etc/kubernetes/pki/apiserver.crt
                DNS:master-03, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, DNS:lb-vip, IP Address:10.96.0.1, IP Address:192.168.11.135
/etc/kubernetes/pki/apiserver-kubelet-client.crt
/etc/kubernetes/pki/front-proxy-client.crt
/etc/kubernetes/pki/apiserver-etcd-client.crt

生成集群配置

kubeadm config view > /root/kubeadm.yaml

增加 ip

vim kubeadm.yaml
apiServer:
  extraArgs:
    authorization-mode: Node,RBAC
  timeoutForControlPlane: 4m0s
  # 增加下面的配置
  certSANs:
  - 192.168.11.131
  - 192.168.11.134
  - 192.168.11.136
  # 增加上面的配置
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: lb-vip:6443
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
    # 增加下面的配置
    serverCertSANs:
    - 192.168.11.131
    - 192.168.11.135
    - 192.168.11.136
    peerCertSANs:
    - 192.168.11.131
    - 192.168.11.135
    - 192.168.11.136
    # 增加上面的配置
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.17.3
networking:
  dnsDomain: cluster.local
  podSubnet: 172.10.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}

删除原有的证书

需要保留 ca ,sa,front-proxy 这三个证书

rm -rf /etc/kubernetes/pki/{apiserver*,front-proxy-client*}
rm -rf /etc/kubernetes/pki/etcd/{healthcheck*,peer*,server*}

重新生成证书

kubeadm init phase certs all --config /root/kubeadm.yaml

再次查看证书内的 ip

for i in $(find /etc/kubernetes/pki -type f -name "*.crt");do echo ${i} && openssl x509 -in ${i} -text | grep 'DNS:';done

这里可以得到验证,不会覆盖之前证书内已经有的 ip,会将新的 ip 追加到后面

/etc/kubernetes/pki/etcd/ca.crt
/etc/kubernetes/pki/etcd/server.crt
                DNS:master-02, DNS:localhost, IP Address:192.168.11.134, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1, IP Address:192.168.11.131, IP Address:192.168.11.134, IP Address:192.168.11.136
/etc/kubernetes/pki/etcd/peer.crt
                DNS:master-02, DNS:localhost, IP Address:192.168.11.134, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1, IP Address:192.168.11.131, IP Address:192.168.11.134, IP Address:192.168.11.136
/etc/kubernetes/pki/etcd/healthcheck-client.crt
/etc/kubernetes/pki/ca.crt
/etc/kubernetes/pki/front-proxy-ca.crt
/etc/kubernetes/pki/apiserver.crt
                DNS:master-02, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, DNS:lb-vip, IP Address:10.96.0.1, IP Address:192.168.11.134, IP Address:192.168.11.131, IP Address:192.168.11.134, IP Address:192.168.11.136
/etc/kubernetes/pki/apiserver-kubelet-client.crt
/etc/kubernetes/pki/front-proxy-client.crt
/etc/kubernetes/pki/apiserver-etcd-client.crt

将配置更新到 configmap 中

这样,以后有升级,或者增加其他 ip 时,也会将配置的 CertSANs 的 ip 保留下来,方便以后删减

kubeadm init phase upload-config kubeadm --config kubeadm.yaml

标签:IP,k8s,kubernetes,ip,192.168,etc,Address,kubeadm,pki
From: https://www.cnblogs.com/chen2ha/p/17086938.html

相关文章

  • k8s namespace 一直处于 Terminating 状态的解决方法
    目录json格式导出namespace信息修改json文件开启proxy服务调用接口删除namespace以下的tool为Terminating状态的namespace,下面相关的一些操作记得将tool......
  • 解决执行mvn spring-boot:run报错jar时出错; zip file is empty
    问题描述在执行mvnspring-boot:run的时候,报错[ERROR]读取/Users/diandianxiyu_geek/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.54/tomcat-embed-......
  • ip
     iplink:iplinksetdev<ifname>name<NAME>网卡down时,可改名  ipaddr:ipaddradddevtun010.1.1.1/24broadcast10.1.1.255  ipr......
  • IPv6 地址规划
    IP地址规划是网络设计中非常重要的一个环节,地址规划的设计直接影响到路由设计、隧道设计和安全设计等内容,一个好的地址规划可以给业务的开通以及网络的运维带来极大的便利。......
  • linux网络知识:路由策略(ip rule,ip route)
    一,路由策略(使用iprule命令操作路由策略数据库)基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小,应用或IP源地......
  • 高防ip简单便捷提供更好的保护
    高防IP是高防产品中使用最方便的,买了就可以用,WEB和游戏等一些业务都可以使用。高防IP没有服务器那样的桌面操作也不能远程登陆,只有一个控制面板当作设置界面。当源服务器......
  • [Typescript] Function overload: For default value arguement
    import{Equal,Expect}from"../helpers/type-utils";constobj={a:1,b:2,c:3,}asconst;typeObjKey=keyoftypeofobj;//Ifdon'tpassin......
  • [Typescript] Function overload: Data hook problem
    RequirementisifpassininitialData,thenreturntypeshouldnotcontainundefined,otherwise,itshould.import{it}from"vitest";import{Equal,Expect......
  • mat 和IPIImage之间的转换
    Mat::operatorIplImageCreatestheIplImageheaderforthematrix.C++:Mat::operatorIplImage()constTheoperatorcreates theIplImageheaderforthematrixwi......
  • JavaScript的this指向详解
    一、概念:函数的上下文(this)由调用函数的方式决定,function是“运行时上下文”策略;函数如果不调用,则不能确定函数的上下文。二、规则:对象打点调用它的方法函数,......