使用 Deployments 扩展和管理 Pods

KubernetesBeginner
立即练习

介绍

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

启动 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 回滚到上一个版本。