K8s介绍(1)
一、Kubernetes 核心组件有哪些分别是做什么的创建 Pod 流程是什么✅ 1. Control Plane控制平面组件组件作用kube-apiserverK8s 的唯一入口所有资源增删改查都通过它认证 / 鉴权 / 准入控制etcd分布式键值存储保存集群所有资源状态Pod、Service、RS 等kube-scheduler调度 Pod根据 CPU/内存/亲和性/污点等选出合适的 Nodekube-controller-manager运行多种控制器Deployment / RS / Node / Namespace 等保证期望状态一致Master 节点 apiserver etcd scheduler controller-manager✅ 2. Node工作节点组件组件作用kubelet每个 Node 一个监听 apiserver根据 PodSpec 拉镜像、启容器、汇报状态kube-proxy维护iptables / IPVS 规则实现 Service → Pod 流量转发Container Runtime真正跑容器的containerd / docker / CRI-O✅ 3. 创建一个 Pod 的完整流程经典面试题以kubectl create -f pod.yaml为例kubectl校验 YAML调用kube-apiserverREST APIkube-apiserver认证证书 / token鉴权RBAC准入控制Admission将 Pod 对象写入etcd状态Pendingkube-scheduler监听未调度的 Pod经过过滤Filter 打分Score选定 Node更新 Pod.spec.nodeName→ apiserver → etcdkubelet对应 Node监听到有 Pod 绑定到自己调用 Container Runtime 拉镜像创建容器、启动容器上报 Pod 状态Running→ apiserver → etcd✅Pod 创建完成二、Pod 是怎么“发布出来”被访问的今天的话术流程你写的这个思路是对的标准访问链路话术如下纯文本纯文本Pod ↓ ServiceClusterIP / NodePort / LoadBalancer ↓ kube-proxyiptables / IPVS ↓ 物理网卡如 ens33→ 转发到 Pod 的 veth 详细解释口述版Pod有独立 IPCNI 插件分配如 Calico/Flannel只在集群内可达Service提供稳定虚拟 IPVIP和端口通过 LabelSelector 关联一组 PodEndpoints 记录真实 Pod IPkube-proxy监听 Service / Endpoints在 Node 上写iptables 或 IPVS 规则把Service IP:Port负载均衡到后端 Pod IPens33宿主机网卡NodePort / LB 类型时外部流量进入 Nodekube-proxy 规则把流量转到 Pod经过 cni0 / veth✅用户访问 Service → 实际访问 Pod三、控制器管理 Pod 的逻辑Deployment ReplicaSet你写的层级完全正确纯文本纯文本Deployment → ReplicaSet → Pod✅ 详细工作原理1️⃣ Deployment声明应用期望版本 副本数管理ReplicaSet 的版本滚动更新 / 回滚不直接创建 Podyamlyamldeployment.spec.replicas 3 deployment.spec.template Pod模板修改镜像 → Deployment 创建新 ReplicaSet逐步 scale 新 RS ↑ / 旧 RS ↓RollingUpdate2️⃣ ReplicaSetRS确保指定数量的 Pod 副本始终存在通过 LabelSelector 管理 Pod如果 Pod 挂了 → RS 新建 Pod⚠️ RS 一般由 Deployment 创建不建议手动写 RS3️⃣ Pod最终被 kubelet 创建并运行无自愈能力RS / Deployment 负责自愈✅ 控制器工作逻辑核心思想期望状态Spec vs 实际状态StatusController 通过List-Watch 监听 apiserver实际 Pod 数 replicas → 创建 Pod实际 Pod 数 replicas → 删除 PodPod 与 RS selector 不匹配 → 不管✅ 面试一句话总结高分答法Kubernetes 由 apiserver / etcd / scheduler / controller-manager 和 node 上的 kubelet / kube-proxy / runtime 组成Pod 由 Deployment → ReplicaSet → Pod 管理经 apiserver 写入 etcdscheduler 调度kubelet 拉起外部通过 Service → kube-proxy(iptables/IPVS) → Node 网卡 → Pod 访问应用。