使用 Deployments 扩展和管理 Pods

KubernetesKubernetesBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何使用 Kubernetes 中的 Deployments 来扩展和管理 Pods。Deployments 是一种更高层次的抽象,允许你以声明式的方式管理和扩展 Pods 的副本集。通过使用 Deployments,你可以轻松地将应用程序更新到新版本、回滚到以前的版本,并根据需求的变化扩展或缩减应用程序的规模。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("`Kubernetes`")) -.-> kubernetes/BasicsGroup(["`Basics`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/BasicCommandsGroup(["`Basic Commands`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/AdvancedCommandsGroup(["`Advanced Commands`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/AdvancedDeploymentGroup(["`Advanced Deployment`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["`Troubleshooting and Debugging Commands`"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("`Initialization`") kubernetes/BasicCommandsGroup -.-> kubernetes/get("`Get`") kubernetes/BasicCommandsGroup -.-> kubernetes/create("`Create`") kubernetes/BasicCommandsGroup -.-> kubernetes/delete("`Delete`") kubernetes/BasicCommandsGroup -.-> kubernetes/edit("`Edit`") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("`Apply`") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/rollout("`Rollout`") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/scale("`Scale`") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("`Describe`") subgraph Lab Skills kubernetes/initialization -.-> lab-9675{{"`使用 Deployments 扩展和管理 Pods`"}} kubernetes/get -.-> lab-9675{{"`使用 Deployments 扩展和管理 Pods`"}} kubernetes/create -.-> lab-9675{{"`使用 Deployments 扩展和管理 Pods`"}} kubernetes/delete -.-> lab-9675{{"`使用 Deployments 扩展和管理 Pods`"}} kubernetes/edit -.-> lab-9675{{"`使用 Deployments 扩展和管理 Pods`"}} kubernetes/apply -.-> lab-9675{{"`使用 Deployments 扩展和管理 Pods`"}} kubernetes/rollout -.-> lab-9675{{"`使用 Deployments 扩展和管理 Pods`"}} kubernetes/scale -.-> lab-9675{{"`使用 Deployments 扩展和管理 Pods`"}} kubernetes/describe -.-> lab-9675{{"`使用 Deployments 扩展和管理 Pods`"}} end

启动 Minikube 集群

在创建资源之前,你需要一个正在运行的 Kubernetes 集群。Minikube 是一个轻量级的 Kubernetes 环境,可以在你的本地机器上运行。

  1. 导航到工作目录

    打开终端并导航到默认的项目文件夹:

    cd /home/labex/project
  2. 启动 Minikube

    启动 Minikube 以初始化一个 Kubernetes 集群:

    minikube start
    • 此命令将在你的本地机器上设置一个单节点的 Kubernetes 集群。
    • 根据系统性能,Minikube 可能需要几分钟才能启动。
  3. 验证 Minikube 是否正在运行

    检查 Minikube 集群的状态:

    minikube status
    • 查找 kubeletapiserver 等组件是否显示为 Running
    • 如果集群未运行,请重新运行 minikube start

如果启动 Minikube 时遇到问题,可以使用 minikube delete 来重置环境(如有需要)。

创建 Deployment

  1. /home/labex/project/ 目录下创建一个名为 my-deployment.yaml 的文件,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: nginx:latest
          ports:
            - containerPort: 80

此 YAML 文件定义了一个包含 3 个副本的 Deployment,运行一个 Nginx 容器。selector 字段根据 app 标签选择由 Deployment 控制的 Pods。

  1. 部署 my-deployment Deployment:
kubectl apply -f my-deployment.yaml

这将创建 my-deployment Deployment 及其关联的 ReplicaSets 和 Pods。

  1. 验证 Deployment 是否已创建:
kubectl get deployments

这将显示集群中的 Deployments,包括 my-deployment Deployment。

扩展 Deployment

  1. my-deployment Deployment 扩展到 5 个副本:
kubectl scale deployment my-deployment --replicas=5

这将把 my-deployment Deployment 的副本数量增加到 5 个。

  1. 验证 Deployment 是否已扩展:
kubectl get deployments

这将显示集群中的 Deployments,包括具有 5 个副本的 my-deployment Deployment。

更新 Deployment

  1. 编辑 my-deployment Deployment 以使用 nginx:1.19 镜像:
kubectl edit deployment my-deployment

这将在默认文本编辑器中打开 Deployment。将 image 字段更改为 nginx:1.19 并保存文件。

  1. 验证 Deployment 是否已更新:
kubectl rollout status deployment/my-deployment

这将显示 my-deployment Deployment 的最新滚动更新状态。

回滚 Deployment

  1. my-deployment Deployment 回滚到上一个版本:
kubectl rollout undo deployment/my-deployment

这将把 my-deployment Deployment 回滚到上一个版本。

  1. 验证 Deployment 是否已回滚:
kubectl rollout status deployment/my-deployment

这将显示 my-deployment Deployment 的最新滚动更新状态。

清理

  1. 删除 my-deployment Deployment:
kubectl delete deployment my-deployment

这将删除 my-deployment Deployment 及其关联的 ReplicaSets 和 Pods。

总结

在本实验中,你学习了如何在 Kubernetes 中创建和管理 Deployments。你创建了一个包含 3 个副本的 Deployment,将 Deployment 扩展到 5 个副本,更新 Deployment 以使用不同的镜像,并将 Deployment 回滚到上一个版本。

您可能感兴趣的其他 Kubernetes 教程