跳转到内容

K3s:高可用“云原生”戏台

🌱 创建: 2026/04/12 ⏱️ 更新: 2026/05/22

“只要我的 VIP 还能漂移,这篇关于高可用的博客就没有烂尾。”

欢迎来到赛博工地的“云原生混沌工程(Chaos Engineering)测试区”。

必须澄清一点:这个拥有 3 个 Master 节点的 Kubernetes 集群绝不承载任何家庭核心生产业务(真正的核心服务都安安稳稳地跑在我的另一套 K3s 生产集群里)。这个靶场集群的诞生,纯粹是为了让我体验“全盘接管 eBPF”、“干掉 kube-proxy”的极客快感,以及为我的视频和博客提供最硬核的架构素材。

在这里,节点假死是常规操作,VIP 漂移是保留节目。这是一套为了“被破坏”而精心设计的高可用实验室。


🚧 进场必读:K8s 基础图纸自修指南

Section titled “🚧 进场必读:K8s 基础图纸自修指南”

在正式拉起这支“云原生特种部队”之前,我得先交个底。这套架构绝对不是给纯新手准备的保姆级教程

我们上来就会暴力拆解 K3s 的默认网络组件,直接介入内核态的 eBPF,并强行接管二层 ARP 广播。如果你连 Docker 容器怎么跑都还没搞懂,这篇教程的排错环节大概率会让你当场“道心破碎”。

为了让你在这片“赛博工地”里不至于迷路,强烈建议在往下敲命令之前,先去恶补以下几个 Kubernetes 核心概念(请自行查阅 Kubernetes 官方中英对照文档 或 B 站优质教程):

  • 🧱 Pod(容器组):K8s 世界里最小的“砖块”。忘掉传统虚拟机的思维,理解为什么几个容器要挤在一个 Pod 里共享网络和生命周期。
  • 🧠 Control Plane & Node(控制平面与工作节点):控制平面是发号施令的“包工头”,Node 是承载业务的“牛马”。本篇的核心,就是打造 3 个不死不灭的“包工头”。
  • 💾 etcd 与 Quorum(共识机制):集群的“记忆中枢”。你必须搞懂高可用集群为什么必须是奇数个(3、5、7),以及什么是可怕的“脑裂(Split-Brain)”。
  • 🔌 CNI(容器网络接口):本教程的重头戏。你需要知道 K3s 默认的 Flannel 是怎么走 VXLAN 隧道的,才能体会到我们换上 Cilium (eBPF) 进行原生直通路由时那份性能起飞的爽感。
  • 🚦 Service (Svc):重点搞懂 ClusterIPNodePortLoadBalancer 的区别。理解了它,你才会明白本教程后半段,我们为什么要给 Cilium 发放一本“IP 支票簿”。
  • 🚪 Ingress(入口网关):与 Service 搞四层不同,它主要管七层(HTTP/HTTPS)的域名路由。这也是我们后续部署独立版 Traefik 的核心。

🎬 演员就位:集群节点与核心组件清单 (Node & Component List)

Section titled “🎬 演员就位:集群节点与核心组件清单 (Node & Component List)”

在这个集群里,没有老旧的 iptables 历史包袱。一切网络流量都由 eBPF 在内核态极速转发,而这几台 Ubuntu 虚拟机,就是随时准备被我“拔网线”的赛博演员。

cyberbuilder@mac-mini:~# kubectl get nodes -o wide && cilium status
节点 / 类型算力配额 (vCPU/RAM)角色剧本 (Role & CNI)网络寻址 (IP/VIP)演艺状态 & 包工头备注
kube-vip
🛡️ Virtual IP

逻辑存在
👑 API 守门员10.0.10.2
TCP 6443
🟢 金牌护卫
拥有系统最高调度优先级。只要还有一台 Master 活着,它就死死咬住 6443 端口不撒手。
k3s-m1
🖥️ Master 01
2 Core
2GB RAM
☸️ 火种节点10.0.10.10
VLAN 10
🟡 首当其冲
集群初始化的奠基人。也是我在进行“节点断电混沌测试”时,最喜欢优先干掉的受害者。
k3s-m2
🖥️ Master 02
2 Core
2GB RAM
☸️ 备用主控10.0.10.20
VLAN 10
🟢 随时接管
etcd 共识机制的基石之一。平时岁月静好,M1 宕机时瞬间接管 VIP 开始疯狂输出。
k3s-m3
🖥️ Master 03
2 Core
2GB RAM
☸️ 备用主控10.0.10.30
VLAN 10
🟢 凑数选举
用来满足 etcd 奇数节点选举要求的工具人。没有它,这出高可用的大戏就唱不下去。
cilium-pool
🐝 eBPF L2
Kernel
Native
🔀 数据面发牌员10.0.10.50-100
LB IPAM
🔵 疯狂发牌
彻底干掉了 Klipper 和 kube-proxy。专职负责在二层网络里大声广播:“这个服务的 IP 归我管!”

💡 破坏驱动型运维 (Destruction-Driven Ops)

Section titled “💡 破坏驱动型运维 (Destruction-Driven Ops)”

作为一个合格的“赛博包工头”,建好楼只是第一步,怎么把楼拆得有技术含量才是我的核心诉求。

这套架构最精妙的地方在于它的职责分离kube-vip 专职护驾控制平面,Cilium 凭借 eBPF 完全接管数据平面的 LoadBalancer。这种原生直连的底层设计,让我可以在这 3 台虚拟机上肆无忌惮地进行混沌工程测试(Chaos Engineering)

无论是暴力重启 PVE 宿主机的虚拟机进程,还是强行修改系统时间制造 etcd 脑裂,这套集群最终都能在几秒钟的短暂波动后,重新推选出 Leader 并恢复服务。

毕竟,写架构博客最缺的不是代码,而是那些花钱都买不到的真实报错日志和灾备自愈截图。