k8s集群高可用的碎碎念

比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。

目录

前言

一、vip统一入口

二、HAproxy分流

总结


前言

原以为高可用是一个很简单好做的东西,实际上捋下来思路,还是重新认识到了很多东西。里面涉及到的不只是理论,实操上也会有很多配置和k8s集群证书的问题。慢慢来吧。想填理论内容,清晰明了之后动手操作。所以,这篇也会是不断更新的一篇啦~


一、vip统一入口

VIP 的真正意义:不是负载均衡 而是:"入口稳定"

总所周知,一台master是不稳定的。所以大家都会做奇数倍的master。

node节点通过/etc/kubernetes/kubelet.conf 可以修改kubelet连接地址。这个配置文件很重要,它负责:节点注册、Pod状态上报、拉镜像、启动容器,这个配置文件有问题的话,node节点直接 NotReady。

冷知识,不同的node节点实际上可以配置不同的master ip。比如说node1配置访问master1,node2访问master1,node3、4、5访问master3。Kubernetes 本来就是这么设计的。Kubernetes control-plane 本身就是共享状态的。真正的数据在:etcd而不是某个 master。这个为连接 API Server 的入口

但是呢,实际在工作中,如果真的配置了不同node访问不同master,那么一旦有一台master坏掉,就需要批量的调整node配置文件,重启服务,比较麻烦。可是,如果配置不同node访问通一台master,又没办法真正的实现多台master访问,分散压力的效果。所以就出现了vip+HAproxy的方式。vip负责统一入口,方便运维。让所有的node节点统一写成一样的访问ip。这样配合多台master之间的keepalived漂移的作用,即使一台master挂,也不需要批量修改node节点的配置文件,更能做到让用户无感。

VIP 的目的从来不是"让 node 分散访问不同 master"而是:

"给 node 一个稳定入口"这是 Kubernetes HA 最核心的一点。

二、HAproxy分流

真正高级 HA:不是 Keepalived 漂移。而是:"请求分发"

HAProxy / SLB / Nginx / F5

复制代码
VIP -> HAProxy
           ├── master1
           ├── master2
           └── master3

node 连着 VIP。可是请求会:

  • 轮询
  • 健康检查
  • 自动切换

这才是真正意义上的:多 master 分流

真正决定请求去哪台 master 的,是 LB

🎬 Kubernetes 集群故事版

想象 Kubernetes 是一个公司办公室

  • Master 节点公司总部
    • 总部做决策、管控全公司,决定谁做什么任务。
    • 里面有三个部门:
      1. kube-apiserver前台接待员
        • 任何人(Node 或管理员)要办事,都先找前台。
        • 前台检查你的证件(证书),确认身份。
      2. kube-controller-manager管理部门
        • 确保大家按计划做事情,比如每个部门有足够的人手。
      3. kube-scheduler排班部门
        • 决定哪个员工(Node)做哪件事(Pod)。
  • etcd总部档案室
    • 记录公司所有信息:谁在做什么、库存多少、合同状态等。
    • 总部部门只读/写档案室。
    • 档案室是安全的(TLS),每个总部都有钥匙,大家保持一致(quorum)。
  • Node 节点各部门办公室
    • 员工(kubelet)执行任务(启动容器)
    • 员工会向总部前台报到(kube-apiserver),获取工作任务
    • 员工使用自己的员工卡(kubelet 证书)验证身份
  • VIP(虚拟 IP)总机电话
    • 员工打电话到总部,不用记总部每个办公室号码,只拨总机。
    • 如果某个办公室关门,总机会自动把电话转到另一个办公室(Keepalived 漂移)。
    • 注意:VIP 只是电话总机,不决定具体哪个办公室接电话,它只保证有人接。
  • HAProxy / SLB / Nginx总机话务员
    • 总机有很多电话打进来,话务员决定哪个办公室接电话。
    • 这样不会所有电话都打到同一个办公室(负载均衡)。
  • 证书身份证 / 员工卡 / 办公证件
    • 前台只允许持证件的人来办事
    • 档案室也只允许有钥匙的人进入
    • 如果你换了办公室或换了总机,你的证件必须被认可(SAN 包含 IP/VIP)

总结

重点是要分清楚vip入口和api server入口的区别

相关推荐
张忠琳3 小时前
【client-go v0.36.1】(store Part 3)Store 超深度分析 — 集成模式、完整数据流、不变量、与 DeltaFIFO 协作
云原生·kubernetes·informer·store·client-go
赵渝强老师6 小时前
【赵渝强老师】Kubernetes(K8s)中的金丝雀升级
linux·docker·云原生·容器·kubernetes
鹤落晴春6 小时前
【K8s】配置存储卷
云原生·容器·kubernetes
张忠琳7 小时前
【client-go v0.36.1】(DeltaFIFO Part 1)DeltaFIFO 超深度分析 — 模块定位、类结构、接口层次、构造与初始化
云原生·kubernetes·deltafifo·informer·client-go
原来是猿9 小时前
Docker 【 技术架构(1)】
docker·容器·架构
阿里云云原生9 小时前
实战揭秘:如何通过 AI Agent Skill 让 K8s 应用自动接入云监控?
云原生
ba_pi9 小时前
k8s删除pod
linux·容器·kubernetes
木雷坞9 小时前
Qdrant Docker 部署教程:数据卷、API Key 和集合初始化
运维·docker·容器·知识图谱
张忠琳11 小时前
【client-go v0.36.1】tools/cache 深度分析(下篇)— RealFIFO 深度、集成架构、生命周期、设计模式总结
云原生·kubernetes·cache·informer·client-go
张忠琳11 小时前
【client-go v0.36.1】(store Part 2)Store 超深度分析 — threadSafeMap 核心、索引体系、RV追踪、事务机制
云原生·kubernetes·informer·store·client-go