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

相关推荐
BD_Marathon6 小时前
【Zookeeper】zk_客户端API_创建节点
分布式·zookeeper·云原生
BD_Marathon6 小时前
【Zookeeper】监听器原理
linux·分布式·zookeeper
稚辉君.MCA_P8_Java7 小时前
Gemini永久会员 快速排序(Quick Sort) 基于分治思想的高效排序算法
java·linux·数据结构·spring·排序算法
x***44017 小时前
linux 设置tomcat开机启动
linux·运维·tomcat
正在努力的小河7 小时前
Linux 块设备驱动实验
linux·运维·服务器
代码游侠8 小时前
学习笔记——数据结构学习
linux·开发语言·数据结构·笔记·学习
j***49568 小时前
Linux(CentOS)安装 Nginx
linux·nginx·centos
xuanzdhc8 小时前
Gitgit
java·linux·运维·服务器·c++·git
laocooon5238578868 小时前
win下制作一个简单的Cmake,完成运行效果
linux·运维·服务器
北顾南栀倾寒8 小时前
[杂学笔记]HTTP与HTTPS的区别、HTTPS进行TLS握手的过程、HTTPS如何防止中间人攻击、HTTP1.1与HTTP2.0的区别、TCP的拥塞控制
linux·服务器