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 关联
    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 实践的基础。

相关推荐
程序员老舅19 分钟前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华32 分钟前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
爱吃生蚝的于勒1 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森1 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
翼龙云_cloud1 小时前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
纤纡.2 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
好好学习天天向上~~2 小时前
6_Linux学习总结_自动化构建
linux·学习·自动化
冉佳驹2 小时前
Linux ——— 静态库和动态库的设计与使用
linux·动态库·静态库·fpic
陌上花开缓缓归以2 小时前
linux mtd-utils使用源码分析(ubuntu测试版)
linux·arm开发·ubuntu
wangjialelele3 小时前
Linux下的IO操作以及ext系列文件系统
linux·运维·服务器·c语言·c++·个人开发