k8s工作原理

工作原理:

通过Deployment webcluster(Deployment不直接创建 Pod,只管理 ReplicaSet,kubectl apply -f deploy.yaml提交 Deployment 到 APIServer,apiserver 校验 yaml 格式,把 Deployment 资源存入 etcd 数据库,Deployment 控制器发现:期望副本replicas:2,当前没有ReplicaSet,创建一个 ReplicaSet 资源,RS 模板完全复制 Deployment 的 pod 模板,RS 控制器读取自己的配置:

spec.replicas:2 期望 2 个 Pod,spec.selector.matchLabels: app:webcluster 筛选属于自己的 Pod

查询 etcd:当前没有匹配标签的 Pod,于是 RS 按照 template,构造 2 个 Pod 对象,提交给 apiserver 存入 etcd。kube‑scheduler调度器发现一批 spec.nodeName(主机名) 为空的Pending Pod,调度算法选出节点,把节点名写入Pod.spec.nodeName,已经把 Pod 绑定到该节点,更新etcd。kubelet 监听 apiserver 的 Pod 资源变化,收到事件:有一个 Pod,spec.nodeName = 当前节点主机名,这个 Pod 归我管理。!!真正开始在节点构建 Pod!!kubelet 开始干活:①拉取镜像 myapp:v1②准备存储、环境变量③调用 CNI‑flannel 分配 PodIP,配置 veth‑pair 网络④调用容器运行时 (containerd/docker)

  

↓创建2个Pod

给每个Pod的 metadata.labels = app:webcluster

  ↓CNI(flannel)给每个Pod分配PodIP

Pod Ready=True

  ↓Endpoints控制器读取Service.spec.selector(app:webcluster)

筛选出这两个Pod,取出PodIP + targetPort(80)

  ↓存入同名Endpoints资源(webservice)

  ↓Service iptables/ipvs读取Endpoints列表做负载均衡

curl ClusterIP → 轮流转发到 10.244.2.8:80 / 10.244.5.95:80

相关推荐
whyutianict_vv16 分钟前
云计算 HCIE 认证体系解析:HCIA/HCIP/HCIE 三级科目与知识边界
linux·运维·云计算
0+1117 小时前
Linux --从 poll 到 epoll多路转接
linux·服务器·1024程序员节
青瓦梦滋7 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
桌面运维家8 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang133830890758 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻8 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
2601_9498477510 小时前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu
m0_6399069410 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
今天重构了吗11 小时前
Linux 上 rm -rf 删错了能找回吗
运维·服务器
KaiwuDB11 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式