Kubernetes Deployment 控制器实验

实验目标

通过本实验,你将学习如何在 Kubernetes 中使用 Deployment 控制器来管理无状态应用的部署。实验内容包括:

  1. 创建 Deployment。

  2. 查看 Deployment 状态。

  3. 更新 Deployment。

  4. 回滚到之前的版本。

  5. 扩容和缩容。

  6. 清理资源

实验环境

  • Kubernetes 集群:已安装并运行的 Kubernetes 集群。

  • kubectl:Kubernetes 命令行工具,已配置并连接到集群。

  • Docker:已安装并运行的 Docker 服务,用于拉取镜像。

实验步骤

1. 创建 Deployment

1.1 编写 Deployment 配置文件

创建一个名为 deployment.yml 的文件:

使用 kubectl create 快速生成 YAML 文件

kubectl create deployment my-app --image=nginx:1.23 --dry-run=client -o yaml > deployment.yml

 基本命令格式

kubectl create <resource> <name> --image=<image> --dry-run=client -o yaml > <output-file>.yaml
  • kubectl create:Kubernetes 命令行工具的命令,用于创建资源。

  • <resource>:要创建的资源类型,例如 deploymentpodservice 等。

  • <name>:资源的名称。

  • --image=<image>:指定容器镜像,仅适用于 Pod 或 Deployment 等需要镜像的资源。

  • --dry-run=client:表示在客户端执行命令,但不实际创建资源。这允许我们在不修改集群的情况下生成配置文件。

  • -o yaml:指定输出格式为 YAML。

  • >:将输出重定向到文件。

  • <output-file>.yaml:生成的 YAML 文件名。

内容如下:

# deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: nginx:1.23
        ports:
        - containerPort: 80

说明

  • replicas: 3:指定创建 3 个 Pod 副本。

  • selector:通过标签选择器匹配 Pod。

  • template:定义 Pod 的模板,包括容器的名称、镜像和端口。

1.2 应用配置文件

运行以下命令将配置文件应用到集群中:

kubectl apply -f deployment.yml
1.3 验证 Deployment

运行以下命令查看 Deployment 的状态:

kubectl get deployment my-app

输出示例:

运行以下命令查看 Pod 的状态:

kubectl get pods

输出示例:

2. 更新 Deployment

2.1 修改镜像版本

编辑 deployment.yml 文件,将 image 字段从 nginx:1.23 更新为 nginx:latest

# deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: nginx:1.latest
        ports:
        - containerPort: 80
2.2 应用更新

运行以下命令将更新后的配置文件应用到集群中:

kubectl apply -f deployment.yml
2.3 查看更新过程

运行以下命令查看 Pod 的更新过程:

kubectl get pods -w

输出示例:

3. 回滚到之前的版本

3.1 查看历史版本

运行以下命令查看 Deployment 的历史版本:

kubectl rollout history deployment my-app

输出示例:

3.2 回滚到之前的版本

运行以下命令将 Deployment 回滚到版本 1:

kubectl rollout undo deployment my-app --to-revision=2

3.3 查看回滚结果

运行以下命令查看 Pod 的状态:

kubectl get pods

输出示例:

4. 扩容和缩容

4.1 扩容

运行以下命令将 Deployment 的副本数量从 3 扩容到 5:

kubectl scale deployment my-app --replicas=5
4.2 查看扩容结果

运行以下命令查看 Pod 的状态:

kubectl get pods

输出示例:

NAME                     READY   STATUS    RESTARTS   AGE
my-app-5d886954d4-2ckqw  1/1     Running   0          6m
my-app-5d886954d4-m8gpd  1/1     Running   0          6m
my-app-5d886954d4-s7pws  1/1     Running   0          6m
my-app-5d886954d4-tt2hz  1/1     Running   0          1m
my-app-5d886954d4-wqnvv  1/1     Running   0          1m
4.3 缩容

运行以下命令将 Deployment 的副本数量从 5 缩容到 2:

kubectl scale deployment my-app --replicas=2
4.4 查看缩容结果

运行以下命令查看 Pod 的状态:

kubectl get pods
NAME                     READY   STATUS        RESTARTS   AGE
my-app-5d886954d4-2ckqw  1/1     Running       0          7m
my-app-5d886954d4-m8gpd  1/1     Running       0          7m
my-app-5d886954d4-s7pws  1/1     Terminating   0          7m
my-app-5d886954d4-tt2hz  1/1     Terminating   0          2m
my-app-5d886954d4-wqnvv  1/1     Terminating   0          2m

5. 清理资源

5.1 删除 Deployment

运行以下命令删除 Deployment 及其管理的所有 Pod:

kubectl delete deployment my-app
5.2 验证资源已删除

运行以下命令确认 Deployment 和 Pod 已被删除:

kubectl get deployment my-app
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值