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

相关推荐
MarcoPage8 分钟前
Python 字典推导式入门:一行构建键值对映射
java·linux·python
埃伊蟹黄面1 小时前
计算机的“身体”与“灵魂”:冯·诺依曼架构与操作系统
linux
橙色云-智橙协同研发3 小时前
【PLM实施专家宝典】离散制造企业MBD与无纸化制造实施方案:从“图纸驱动”到“数据驱动”的革命
云原生·解决方案·数字化转型·plm·国产plm·专家经验·无纸化
winner88813 小时前
Linux 软件安装 “命令密码本”:yum/apt/brew 一网打尽
linux·运维·服务器
victory04314 小时前
K8S重启之后无法启动故障排查 与 修复
云原生·容器·kubernetes
思麟呀5 小时前
Linux的基础IO流
linux·运维·服务器·开发语言·c++
winner88815 小时前
嵌入式Linux驱动开发全流程:工具协作+核心概念拆解(从入门到理解)
linux·运维·驱动开发
ShiinaKaze5 小时前
fatal error: bits/c++config.h: No such file or directory
linux·gcc·g++
研究司马懿6 小时前
【ETCD】ETCD常用命令
网络·数据库·云原生·oracle·自动化·运维开发·etcd
Archy_Wang_16 小时前
脚本自动生成专业Linux巡检报告
linux·运维·服务器