代码改变世界

详细介绍:K8s实践中的重点知识

2025-10-10 12:29  tlnshuju  阅读(3)  评论(0)    收藏  举报

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 关联
    1. 开发者提交代码到 Git 仓库,触发 CI 流水线。
    2. CI 工具自动编译代码、运行测试,构建并推送镜像到仓库(如 Harbor)。
    3. CD 工具(如 ArgoCD)检测到镜像更新,自动更新 K8s 中的Deployment配置(引用新镜像)。
    4. Deployment 触发滚动更新,使用新镜像创建 Pod,通过SVC提供服务,同时挂载ConfigMap/Secret 配置和 PVC 存储。

总结:核心关联流程

  1. 开发者编写代码,经过CI 流程构建成 镜像并推送到仓库。
  2. 在 K8s 中,通过DeploymentStatefulSet定义应用,指定使用的镜像、副本数等。
  3. 应用要求的配置依据ConfigMap(非敏感)和Secret(敏感)注入。
  4. 持久化素材通过PVC申请存储,绑定到PV后挂载到 Pod。
  5. 通过 SVC为应用提供稳定访问入口,外部流量可通过 Ingress 路由到 SVC。
  6. 当镜像更新时,CD程序自动同步 Deployment 配置,触发应用更新,实现全流程自动化。

这些概念共同构成了 K8s 环境下应用的 “构建 - 部署 - 运行 - 维护” 闭环,是云原生和 DevOps 实践的基础。