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

相关推荐
k***92161 小时前
【Linux】进程概念(五):详解环境变量的本质
linux·运维·服务器
世转神风-1 小时前
VMware-挂载报错:no mountpoint specified
linux
KakiNakajima1 小时前
CentOS 7 x86系统安装EMQX 【kaki备忘录】
linux·运维·centos
zz-zjx2 小时前
Kubernetes 的部署方式 (二)通过 kubeasz部署单机版1.34.1
云原生·容器·kubernetes
少年、潜行2 小时前
F1C100/200S学习笔记(1)-- 核心板和验证板硬件设计
linux·驱动开发·f1c200s
东木君_2 小时前
Linux 驱动框架中 Class 机制完整讲解(以 ov13855 摄像头为例)
linux
yiSty3 小时前
linux命令行下使用百度云网盘【自用】
linux·运维·百度云
超绝振刀怪3 小时前
【Linux工具】环境基石:软件包管理器 yum 与 Vim 编辑器详解
linux·编辑器·vim
福尔摩斯张3 小时前
插件式架构:解耦与扩展的艺术与实践(超详细)
linux·服务器·网络·网络协议·tcp/ip
是小崔啊3 小时前
叩丁狼k8s - 组件篇
云原生·容器·kubernetes