当前位置: 首页 > news >正文

使用 vip 加入两台 master 节点

        在一个 一主三从 的k8s 集群,新加两台master,加入之前与已有的master节点做好 keepalive ,然后使用 vip 去加入集群

1、三台 master 搭建 keepalive

2、修改 kubeadm-config 文件

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.32.200  # 修改为负载均衡器或 API Server IPbindPort: 6443
nodeRegistration:criSocket: unix:///var/run/cri-dockerd.sockimagePullPolicy: IfNotPresentname: master-1taints: null
---
apiServer:certSANs:  # 添加证书 SAN 列表- "192.168.32.200"  # 负载均衡器或 API Server IP- "192.168.32.61"   # 原 master 节点 IP- "10.96.0.1"        # 服务网络 IP- "localhost"        # 本地访问(可选)- "kubernetes"       # 集群内部域名(可选)timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.28.0
controlPlaneEndpoint: "192.168.32.200:6443"  # 启用并设置为负载均衡器或 API Server
networking:dnsDomain: cluster.localpodSubnet: 10.244.0.0/16serviceSubnet: 10.96.0.0/12
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

3、备份现有证书(重要!)

sudo cp -r /etc/kubernetes/pki /etc/kubernetes/pki.bak-$(date +%s)

4、删除需要重新生成的证书

sudo rm -f /etc/kubernetes/pki/apiserver.*
sudo rm -f /etc/kubernetes/pki/apiserver-etcd-client.*

5、重新生成证书

使用修改后的配置文件重新生成证书:

kubeadm init phase certs all --config=kubeadm-config.yaml

6、验证新证书的 SAN

[root@master-1 ~]# openssl x509 -noout -text -in /etc/kubernetes/pki/apiserver.crt | grep "IP Address"DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, DNS:master-1, IP Address:10.96.0.1, IP Address:192.168.32.200, IP Address:192.168.32.61

确保输出包含:

IP Address:10.96.0.1, IP Address:192.168.32.200, IP Address:192.168.32.61

7、重启 kube-apiserver 和 kubelet

systemctl restart kubelet
kubectl delete pod -n kube-syetem kube-apiserver-master-1

8、验证集群访问

kubectl get node -o wide

9、两个新节点依次加入集群

在 master-1 上查看加入集群的信息

kubeadm token create --ttl 0 --print-join-commandkubeadm init phase upload-certs --upload-certs

拼接一下得出加入命令:

kubeadm join 192.168.32.61:6443 --token aw9t1c.vvadgb18mp72hg7l --discovery-token-ca-cert-hash sha256:710cd98096f3797bc6873e063b22385f52135bf1c5e2671e62977725e3ee28b3 \--control-plane --certificate-key  4aebb50871ebc2daabcf2527bace79c46be7392f59fc7472c2f574468def630f  --cri-socket=unix:///var/run/cri-dockerd.sock

在两个新节点分别执行加入的命令

10、验证高可用

现在 vip 在master-1 上,要把他关机

关机后,vip 飘到了 另一太控制节点,另一台控制节点通过vip接管k8s管理

master-1 开机,vip 又回到本机(抢占模式)

 

相关文章:

  • 精益数据分析(77/126):问题-解决方案画布——创业团队的周度聚焦与迭代利器
  • 《Android 应用开发基础教程》——第十四章:Android 多线程编程与异步任务机制(Handler、AsyncTask、线程池等)
  • python、R、shell兼容1
  • PARSCALE:大语言模型的第三种扩展范式
  • GraphPad Prism工作表的基本操作
  • 第二届帕鲁杯 solar_Linux后门排查 WP
  • C++ 日志系统实战第五步:日志器的设计
  • 《C++ list详解》
  • vscode包含工程文件路径
  • 【VScode】python初学者的有力工具
  • java后端-海外登录(谷歌/FaceBook)
  • ETL 代表什么?ETL 开发主要做什么?
  • DeepSeek:以开源之力,引领AI技术新风潮
  • ShenNiusModularity项目源码学习(28:ShenNius.Admin.Mvc项目分析-13)
  • IPv4 地址嵌入 IPv6 的前缀转换方式详解
  • 2025年全国青少年信息素养大赛C++小学全年级初赛试题(解析版)
  • flutter getx路由管理、状态管理、路由守卫中间件、永久储存get_storage
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的管理与运营策略研究
  • flutter dart 函数语法
  • CAD如何导出PDF?PDF如何转CAD?详细教程来了
  • 宁波网站建设设计/百度推广客户端下载
  • 做塑料哪个网站好/惠州seo排名
  • 产品展示类网站/外贸网站推广费用
  • 团购汽车最便宜的网站建设/百度通用网址
  • 企业网站的建设企业/上海哪家seo公司好
  • 如何运营自己的网店/seo店铺描述例子