← 返回首页
一、K8s 架构
Control Plane(控制平面)
- API Server:集群入口,所有操作通过 REST API,唯一与 etcd 通信的组件
- etcd:分布式 KV 存储,保存集群所有状态数据,Raft 一致性协议
- Scheduler:将未调度的 Pod 分配到合适的 Node,考虑资源、亲和性、污点等
- Controller Manager:运行各种控制器(Deployment/ReplicaSet/Node/Job),维护期望状态
Node(工作节点)
- kubelet:节点代理,管理 Pod 生命周期,向 API Server 汇报状态
- kube-proxy:网络代理,维护 Service 的网络规则(iptables/IPVS)
- 容器运行时:containerd(主流)/ CRI-O,负责拉取镜像和运行容器
二、核心资源对象
Pod
- 最小调度单元,包含一个或多个容器,共享网络和存储
- 生命周期:Pending → Running → Succeeded/Failed,重启策略 Always/OnFailure/Never
- Init Container:在主容器启动前运行,用于初始化配置、等待依赖就绪
- 探针:livenessProbe(存活检测)/ readinessProbe(就绪检测)/ startupProbe(启动检测)
Deployment & ReplicaSet
- Deployment 管理 ReplicaSet,ReplicaSet 管理 Pod 副本数
- 滚动更新:
maxSurge(最大超出副本数)/ maxUnavailable(最大不可用数)
- 回滚:
kubectl rollout undo deployment/name,查看历史 rollout history
Service
- ClusterIP(默认):集群内部访问,虚拟 IP
- NodePort:在每个节点开放端口(30000-32767),外部可访问
- LoadBalancer:云厂商负载均衡器,自动分配外部 IP
- Headless Service:
clusterIP: None,直接返回 Pod IP,StatefulSet 常用
三、配置与存储
- ConfigMap:存储非敏感配置,挂载为文件或注入环境变量,支持热更新
- Secret:存储敏感数据(密码/Token),Base64 编码,类型 Opaque/docker-registry/tls
- PV / PVC:PersistentVolume(管理员创建存储资源)/ PersistentVolumeClaim(用户申请存储)
- StorageClass:动态供给 PV,按需自动创建,指定 provisioner(如 NFS/云盘)
- emptyDir:临时卷,Pod 删除即销毁;hostPath:挂载宿主机目录
四、调度策略
- 资源限制:
requests(调度依据,最小保证)/ limits(运行上限,超出被 OOMKill)
- nodeSelector:简单标签匹配,Pod 调度到指定标签的 Node
- Node Affinity:节点亲和性,required(硬性)/ preferred(软性),支持复杂表达式
- Pod Affinity / Anti-Affinity:Pod 间亲和/反亲和,如同一服务的 Pod 分散到不同节点
- Taint & Toleration:污点(Node 排斥 Pod)+ 容忍(Pod 允许调度到有污点的 Node)
- PriorityClass:Pod 优先级,资源不足时低优先级 Pod 被抢占
五、Ingress & 网络
- Ingress:七层(HTTP/HTTPS)路由规则,基于域名/路径转发到不同 Service
- Ingress Controller:Nginx Ingress(最常用)/ Traefik / APISIX
- 网络模型:每个 Pod 有独立 IP,Pod 间可直接通信,CNI 插件实现
- CNI 插件:Calico(网络策略强)/ Flannel(简单)/ Cilium(eBPF 高性能)
- NetworkPolicy:网络策略,控制 Pod 间的入站/出站流量,白名单机制
六、Helm & 运维
- Helm:K8s 包管理器,Chart(模板包)/ Release(部署实例)/ Repository(仓库)
- 常用命令:
helm install / upgrade / rollback / list / uninstall
- HPA:Horizontal Pod Autoscaler,基于 CPU/内存/自定义指标自动扩缩容
- 监控:Prometheus + Grafana,kube-state-metrics 采集集群指标
- 日志:EFK(Elasticsearch + Fluentd + Kibana)/ Loki + Grafana
- kubectl 常用:
get / describe / logs / exec -it / apply -f / delete