K8s实践中的重点知识
1. 镜像(Image)
- 定义:容器的 “模板”,包含运行应用所需的代码、依赖、配置等,是应用打包的标准格式(如 Docker 镜像)。
- 作用:确保应用在任何环境(开发、测试、生产)中运行一致,是 K8s 部署的基础。
- 示例:
nginx:1.25
(Nginx 官方镜像)、myapp:v1.0
(自定义业务镜像)。
2. Deployment(Deploy,部署)
- 定义:K8s 中管理无状态应用的核心控制器,通过 ReplicaSet 确保指定数量的 Pod 副本运行,并支持滚动更新、版本回滚。
- 核心功能:
- 维护 Pod 副本数(如 3 个 Nginx 实例)。
- 升级应用时,逐个替换旧 Pod 为新 Pod(零停机更新)。
- 出错时可回滚到上一稳定版本。
- 关联:Deployment 使用镜像创建 Pod,通过 Service(SVC) 暴露访问入口。
3. StatefulSet(STS,有状态集)
- 定义:管理有状态应用的控制器,为 Pod 提供稳定的网络标识(固定主机名、DNS)和持久存储。
- 适用场景:数据库(MySQL、PostgreSQL)、分布式系统(Kafka、ZooKeeper)等需要稳定身份和数据持久化的服务。
- 关联:通常与 PV/PVC 结合使用,确保 Pod 重建后仍能访问原数据;通过 Headless Service 提供网络标识。
4. Service(SVC,服务)
- 定义:为一组 Pod 提供稳定的访问入口和负载均衡,屏蔽 Pod 动态变化(IP 变动、重建)的影响。
- 类型:
- ClusterIP:仅集群内部访问(默认)。
- NodePort:通过节点 IP + 固定端口暴露给外部。
- LoadBalancer:结合云厂商负载均衡器(如 AWS ELB)暴露公网访问。
- 关联:通过标签选择器关联 Deployment/StatefulSet 管理的 Pod,是应用访问的 “桥梁”。
5. PersistentVolume(PV,持久卷)
- 定义:集群级别的 “存储资源池”,由管理员创建,代表实际的存储设备(如本地磁盘、云硬盘、Ceph 卷)。
- 作用:抽象底层存储细节,提供统一的存储接口。
6. PersistentVolumeClaim(PVC,持久卷声明)
- 定义:用户对存储的 “请求”,声明所需的存储大小、访问模式(如读写、只读),K8s 自动匹配可用的 PV 并绑定。
- 关联:PVC 绑定 PV 后,可被 Pod/StatefulSet 挂载使用,实现数据持久化(如数据库数据存储)。
7. ConfigMap(配置映射)
- 定义:存储非敏感配置信息(如应用配置文件、环境变量)的资源,实现 “配置与代码分离”。
- 用法:通过环境变量或文件挂载注入 Pod,修改 ConfigMap 后可动态更新应用配置(需重启或热加载)。
- 示例:存储 Nginx 的
nginx.conf
、微服务的application.properties
。
8. Secret(密钥)
- 定义:存储敏感信息(如数据库密码、API 密钥、SSL 证书),数据以 Base64 编码存储(需配合权限控制确保安全)。
- 用法:与 ConfigMap 类似,可通过环境变量或文件挂载注入 Pod,避免敏感信息硬编码到镜像或代码中。
9. CI/CD(持续集成 / 持续交付)
- 定义:DevOps 的核心实践,通过自动化工具链实现代码从提交到部署的全流程自动化。
- CI(持续集成):代码提交后自动构建、测试,生成镜像(如通过 GitLab CI、Jenkins)。
- CD(持续交付):将镜像自动部署到测试 / 预发 / 生产环境(如通过 ArgoCD、Flux 同步 K8s 资源)。
- 与 K8s 关联:
- 开发者提交代码到 Git 仓库,触发 CI 流水线。
- CI 工具自动编译代码、运行测试,构建并推送镜像到仓库(如 Harbor)。
- CD 工具(如 ArgoCD)检测到镜像更新,自动更新 K8s 中的 Deployment 配置(引用新镜像)。
- Deployment 触发滚动更新,使用新镜像创建 Pod,通过 SVC 提供服务,同时挂载 ConfigMap/Secret 配置和 PVC 存储。
总结:核心关联流程
- 开发者编写代码,通过 CI 流程构建成 镜像 并推送到仓库。
- 在 K8s 中,通过 Deployment 或 StatefulSet 定义应用,指定使用的镜像、副本数等。
- 应用需要的配置通过 ConfigMap(非敏感)和 Secret(敏感)注入。
- 持久化数据通过 PVC 申请存储,绑定到 PV 后挂载到 Pod。
- 通过 SVC 为应用提供稳定访问入口,外部流量可通过 Ingress 路由到 SVC。
- 当镜像更新时,CD 工具自动同步 Deployment 配置,触发应用更新,实现全流程自动化。
这些概念共同构成了 K8s 环境下应用的 “构建 - 部署 - 运行 - 维护” 闭环,是云原生和 DevOps 实践的基础。