k8s学习-要点总结
一、核心定位
-
容器编排与自动化运维平台,由 Google 开源,基于 Borg 系统演进而来,解决大规模容器的部署、扩展、管理、自愈问题。
-
核心逻辑是 “声明式配置”:用户通过 YAML 定义 “期望状态”(如 3 个 Nginx 副本),K8s 通过控制器持续比对实际状态,自动调整至期望状态,无需手动干预。
二、核心组件与架构

-
集群节点:
-
Master 节点(控制平面):
-
kube-apiserver:所有操作的统一入口,提供 REST API,负责认证、授权和请求处理。
-
etcd:分布式键值数据库,存储集群所有配置和状态数据(如 Pod 数量、Service IP),是集群的 “大脑”。
-
kube-scheduler:根据节点资源(CPU / 内存)、亲和性规则等,智能选择 Pod 运行的 Worker 节点。
-
kube-controller-manager:包含多种控制器(如 Deployment 控制器、Node 控制器),实现自愈、扩缩容等核心功能。
-
-
Worker 节点(工作节点):
-
kubelet:监听 apiserver 指令,管理本节点 Pod 的生命周期(创建、启动、停止),并定期向 Master 汇报节点状态。
-
kube-proxy:维护节点网络规则,实现 Service 的负载均衡和跨节点通信。
-
容器引擎(如 containerd):负责容器的实际创建和运行,K8s 通过 CRI(容器运行时接口)与其交互。
-
-
三、核心资源对象

-
Pod:最小部署单元,包含 1 个或多个紧密关联的容器(如应用容器 + 日志收集容器)。所有容器共享 Pod 的网络(localhost通信)和存储,Pod 重启后 IP 会变化,因此不直接对外提供服务。
-
Service:为一组相同功能的 Pod 提供固定访问入口,通过标签选择器关联 Pod。类型包括 ClusterIP(集群内访问)、NodePort(节点端口暴露)、LoadBalancer(结合云负载均衡器),自动实现请求分发(负载均衡)。
-
Deployment:最常用的无状态应用控制器,通过管理 ReplicaSet 实现 Pod 的扩缩容(
kubectl scale)、滚动更新(逐个替换旧 Pod,零停机)和版本回滚(kubectl rollout undo)。适用于 web 服务、API 等无本地状态依赖的应用。 -
StatefulSet:用于管理有状态应用(如 MySQL、Redis 集群),每个 Pod 有固定名称(如 mysql-0、mysql-1)和网络标识,结合 PVC 实现存储持久化,支持有序部署、扩展和更新。
-
ConfigMap/Secret:
-
ConfigMap:存储非敏感配置(如数据库地址、日志级别),通过环境变量或文件挂载注入 Pod,修改后无需重新构建镜像。
-
Secret:存储敏感信息(如密码、证书),内容经 Base64 编码(需配合加密工具增强安全性),使用方式与 ConfigMap 类似。
- PV/PVC:
-
PV(PersistentVolume):集群级别的存储资源,由管理员创建,可关联物理磁盘、NFS、云存储等。
-
PVC(PersistentVolumeClaim):用户对存储的请求(如 10GB 空间、读写权限),K8s 自动匹配合适的 PV 并绑定,实现存储 “供给” 与 “需求” 的解耦。
- Ingress:通过 Ingress Controller(如 Nginx Ingress)实现集群外部访问的统一入口,支持基于域名(如api.example.com)或路径(如 /example/shop)的请求路由,可配置 HTTPS 证书,替代多个 NodePort 的繁琐管理。
四、核心能力与应用场景
-
核心能力:自动化部署、弹性扩缩容(基于 CPU / 自定义指标)、自愈(Pod 故障重启、节点宕机迁移)、服务发现与负载均衡、滚动更新与回滚、资源隔离与调度。
-
典型场景:微服务架构部署(Spring Cloud/Dubbo)、大规模容器化应用运维、云原生应用开发、CI/CD 流水线集成(自动部署到 K8s)。
五、常用操作与工具
-
kubectl:命令行工具,核心操作:
-
查看资源:
kubectl get pods/services/deployments(-o wide 查看详情,-n 指定命名空间)。 -
创建 / 更新资源:
kubectl apply -f xxx.yaml(推荐,支持增量更新)。 -
排查问题:
kubectl describe pod <name>(查看事件和状态)、kubectl logs <name>(查看日志)、kubectl exec -it <name> -- bash(进入容器)。
-
-
辅助工具:Minikube/Kind(本地集群搭建)、kube-ps1(命令行显示当前集群 / 命名空间)、Lens(图形化管理界面)。
六、其他
-
理解 “控制器模式”:K8s 的自愈、扩缩容等能力均基于控制器的 “调谐循环”(监控→对比→调整)。
-
掌握 Pod、Service、Deployment 的联动关系:Deployment 管理 Pod,Service 关联 Pod 并提供访问入口,这是 K8s 的基础工作流。
-
重视实践:通过部署实际应用(如 Nginx+MySQL)理解资源对象的配置和交互,遇到问题优先查阅官方文档或排查 etcd 数据、kubelet 日志。
更多推荐


所有评论(0)