ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Kubernetes资源管理方式

Kubernetes资源管理方式

1. 命令式对象管理 (Imperative Commands)

这种方式直接使用 kubectl 命令在集群中执行操作,无需配置文件

  • 特点:直接、快速,但不留痕迹,难以追溯和复制。
  • 常见命令
    • kubectl run nginx-pod --image=nginx:latest --port=80(创建一个运行 Nginx 的 Pod)
    • kubectl expose deployment nginx-deployment --name=nginx-service --type=ClusterIP --port=80 --target-port=80(创建一个 Service)
    • kubectl scale deployment nginx-deployment --replicas=5(扩展 Deployment 的副本数)
    • kubectl delete pod nginx-pod(删除一个 Pod)
  • 适用场景:适合临时调试快速实验学习阶段。对于生产环境的严肃工作,通常不推荐,因为它缺乏版本控制和可重复性。

2. 命令式对象配置 (Imperative Object Configuration)

这种方式通过配置文件(YAML 或 JSON)和命令式命令来管理资源。

  • 特点:配置被记录在文件中,可以存入版本控制系统(如 Git),提高了可重复性和可审计性。
  • 常见命令
    • kubectl create -f nginx-pod.yaml(根据配置文件创建资源)
    • kubectl replace -f nginx-pod.yaml(替换现有资源配置,要求资源已存在
    • kubectl delete -f nginx-pod.yaml(删除配置文件定义的资源)
  • 缺点kubectl replace 执行的是 “全量替换”。如果其他人或进程在你不知情的情况下修改了资源的其他字段(例如通过 kubectl edit),这些修改会被你的 replace 操作覆盖,因为它只遵循你提供的 YAML 文件。

3. 声明式对象配置 (Declarative Object Configuration)

这是 Kubernetes 推荐的管理方式,尤其适用于生产环境。你只需要声明资源的“期望状态”(在 YAML 文件中),Kubernetes 会自动计算并实施从当前状态到期望状态所需的更改。

  • 核心命令
    • kubectl apply -f <filename-or-directory>(创建或更新资源以匹配配置)
    • 可以对一个文件、一个目录(递归处理所有配置文件)甚至一个 URL 使用 apply
  • 特点
    • 幂等性 (Idempotent):可以安全地多次执行 kubectl apply,结果是一致的。
    • 差异合并 (Merge Patch)apply 操作会智能地合并你对配置文件的更改和资源的当前状态,而不是简单替换。这避免了意外覆盖其他字段的问题。
    • 状态驱动 (State-Driven):你关心的是“What”(期望状态),而不是“How”(如何达到这个状态),Kubernetes 会帮你处理细节。
  • 适用场景所有严肃环境,特别是团队协作GitOps 工作流和需要审计追踪的场景。配置文件就是你的“基础设施即代码 (Infrastructure as Code)”。
返回列表