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

相关推荐
Sumlll_7 小时前
Ubuntu系统下QEMU的安装与RISC-V的测试
linux·ubuntu·risc-v
猫头虎7 小时前
2025最新OpenEuler系统安装MySQL的详细教程
linux·服务器·数据库·sql·mysql·macos·openeuler
晚风吹人醒.8 小时前
SSH远程管理及访问控制
linux·运维·ssh·scp·xshell·访问控制·远程管理
Uncertainty!!10 小时前
Linux多用户情况下个别用户输入密码后黑屏
linux·远程连接
necessary65310 小时前
使用Clion查看linux环境中的PG源码
linux·运维·服务器
Mr_sun.11 小时前
微服务框架课程
微服务·云原生·架构
小猪佩奇TONY11 小时前
Linux 内核学习(14) --- linux x86-32 虚拟地址空间
linux·学习
Lam㊣11 小时前
Centos 7 系统docker:更换镜像源
linux·docker·centos
FL162386312912 小时前
win11+WSL+Ubuntu-xrdp+远程桌面闪退+黑屏闪退解决
linux·运维·ubuntu
石头53012 小时前
Kubernetes监控全栈解决方案:从零搭建Prometheus+Grafana监控体系
linux