文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

云原生之K8S系列:Kubernetes控制器之Deployment

2024-11-29 21:49

关注

一、什么是 Deployment?

Deployment 是 Kubernetes 中的一个控制器,它管理 Pod 的副本集(ReplicaSet)。通过定义 Deployment,用户可以描述一个应用的期望状态,例如需要多少个副本、使用什么镜像以及如何进行滚动更新。Deployment 会根据这些定义自动创建和管理 Pod,确保应用始终处于期望状态。

Deployment 控制器可以确保无状态应用的高可用性和一致性,支持:

二、工作原理

Deployment 控制器通过 ReplicaSet(副本集控制器)来管理 Pod 的生命周期。ReplicaSet 确保指定数量的 Pod 副本始终运行。

Deployment 控制器的工作流程如下:

三、Deployment 的实际案例

接下来,通过一个实际案例来演示如何使用Deployment管理 Nginx 应用。

1.创建 Nginx Deployment

以下是一个用于创建 Nginx Deployment 的 YAML 文件:

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

2.部署 Nginx Deployment

使用 kubectl 命令可以在 Kubernetes 集群中部署这个 Deployment:

kubectl apply -f nginx-deployment.yaml

这个命令会读取 nginx-deployment.yaml 文件并在 Kubernetes 集群中创建一个 Nginx Deployment。

3.查看 Deployment 状态

使用以下命令查看 Deployment 的状态:

kubectl get deployments

输出示例:

这表明 Nginx Deployment 已成功创建并运行了三个副本。

4.更新 Nginx Deployment

假设我们需要将 Nginx 镜像更新到新版本 nginx:1.20.0,可以编辑 nginx-deployment.yaml 文件,修改镜像版本:

...
      containers:
      - name: nginx
        image: nginx:1.20.0
        ports:
        - containerPort: 80
...

然后再次应用配置:

kubectl apply -f nginx-deployment.yaml

Kubernetes 会自动执行滚动更新,逐步替换旧版本的 Pod 为新版本的 Pod。

5.回滚 Deployment

在Kubernetes中,你可以使用kubectl rollout undo命令来回滚一个deployment到其前一个版本。如果你想要回滚到特定的版本,你可以使用--to-revision参数。以下是回滚deployment到其前一个版本的命令:

kubectl rollout undo deployment/nginx-deployment

这个命令会将 Nginx Deployment 回滚到之前的版本,确保应用正常运行。

可以通过以下命令查看可回滚版本的版本:

kubectl rollout history deployment nginx-deployment

执行上述的命令后,输出结果如下:

6.扩展和缩减 Deployment

可以根据需要调整 Pod 的副本数量。例如,将副本数量扩展到 5:

kubectl scale deployment/nginx-deployment --replicas=5

查看 Deployment 状态:

kubectl get deployments

输出示例:

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   5/5     5            5           10m

总结

Kubernetes Deployment 是管理应用生命周期的强大工具。通过声明性的方式定义 Deployment,可以轻松实现应用的滚动更新、回滚和扩展等操作。本文通过 Nginx 的实际案例展示了如何使用 Deployment,希望能帮助读者更好地理解和应用 Kubernetes Deployment。

来源:攻城狮成长日记内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯