【kubernetes】kubernetes Deployment 详解

server/2024/11/14 20:23:23/

Deployment 详解

    • kubernetes Deployment 详解
      • 更新/回滚/缩放/暂停/恢复部署操作
    • 发布策略
    • 1、在zs命名空间下创建3个httpd副本并查看结果
    • 2、尝试删除其中一个副本并查看结果
    • 3、删除所有副本并查看结果
    • 4、使用k8s做金丝雀发布测试

kubernetes_Deployment__1">kubernetes Deployment 详解

更新/回滚/缩放/暂停/恢复部署操作

Kubernetes是一种用于容器编排和管理的开源平台。在Kubernetes中,使用Deployment对象来定义和管理应用程序的部署。

更新部署操作:
要更新Deployment对象,可以通过修改Deployment的定义文件或使用kubectl命令进行更新。更新可以包括更改容器的镜像、环境变量、资源限制等。

  1. 使用kubectl命令进行更新:
    kubectl apply -f deployment.yaml
    
    这将检查Deployment对象的定义文件并应用任何更改。

回滚部署操作:
如果更新后的部署出现问题,可以回滚到先前的版本。Kubernetes会自动保存最近几个Deployment版本的状态。

  1. 使用kubectl命令进行回滚:
    kubectl rollout undo deployment/<deployment-name>
    
    这将回滚到上一个版本。

缩放部署操作:
可以通过修改Deployment的副本数来缩放应用程序的部署。

  1. 使用kubectl命令进行缩放:
    kubectl scale deployment/<deployment-name> --replicas=<new-replica-count>
    
    这将将Deployment的副本数更改为指定的数量。

暂停部署操作:
在某些情况下,可能需要暂停Deployment的更新。Kubernetes提供了暂停和恢复部署的功能。

  1. 使用kubectl命令进行暂停:
    kubectl rollout pause deployment/<deployment-name>
    
    这将暂停Deployment的更新。

恢复部署操作:
在暂停部署后,可以恢复更新。

  1. 使用kubectl命令进行恢复:
    kubectl rollout resume deployment/<deployment-name>
    
    这将恢复Deployment的更新。

总结:
通过使用kubectl命令或修改Deployment的定义文件,可以进行更新、回滚、缩放、暂停和恢复部署操作。这些操作可以帮助您更好地管理和控制应用程序的部署和更新。

发布策略

在发布应用程序到Kubernetes集群时,可以采用以下几种发布策略:

  1. 重复集(ReplicaSet):使用ReplicaSet控制器可以创建和管理多个副本(Pod)的集合。通过指定副本数,可以确保在集群中运行指定数量的Pod。

  2. 扩展和缩小:Kubernetes可以根据应用程序的负载自动扩展和缩小副本数。可以使用水平自动扩展(Horizontal Pod Autoscaler)来监控应用程序的负载并自动调整副本数。

  3. 滚动升级(Rolling Update):Kubernetes支持滚动升级应用程序,可以逐步替换旧版本的Pod为新版本。这样可以确保应用程序在升级过程中不中断。

  4. 蓝绿部署(Blue/Green Deployment):蓝绿部署是一种发布策略,可以在Kubernetes集群中同时运行两个版本的应用程序。通过将流量逐渐切换到新版本的应用程序,可以实现无缝的升级。

  5. 金丝雀部署(Canary Deployment):金丝雀部署是一种渐进式发布策略,可以在部署新版本应用程序之前先将一小部分流量引导到新版本,以测试新版本的稳定性和性能。

  6. 虚拟DNS(Virtual DNS):Kubernetes可以使用虚拟DNS(例如,Kubernetes DNS)来管理应用程序的访问。通过使用虚拟DNS,可以轻松地将请求路由到正确的服务和Pod。

以上是一些常见的Kubernetes发布策略,可以根据具体的需求选择合适的发布策略来管理和部署应用程序。
下面是一些常见的k8s发布策略及其命令。

  1. Rolling Update(逐步更新):

    • 逐步更新是最常见的发布策略,它会逐步替换旧的Pod副本为新的Pod副本。
    • 命令:kubectl set image deployment/<deployment-name> <container-name>=<new-image>
    • 该命令将会更新指定Deployment中的所有Pod副本的容器镜像。
  2. Blue-Green Deployment(蓝绿部署):

    • 蓝绿部署通过将新的版本部署在一个独立的环境中,然后将流量切换到新的环境,从而实现零停机的部署。
    • 命令:kubectl apply -f <new-deployment.yaml>
    • 该命令将会创建一个新的Deployment,然后你可以根据需要将流量切换到新的Deployment。
  3. Canary Deployment(金丝雀部署):

    • 金丝雀部署是逐渐将新版本的Pod逐渐引入到现有的环境中,以降低部署风险。
    • 命令:
kubectl create deployment nginx --image=nginx:1.14 -n zs --replicas=3
kubectl set image deployment nginx nginx=nginx:1.16 -n zs && kubectl rollout pause deployment nginx -n zs
  • 该命令将会更新指定Deployment中的一部分Pod副本的容器镜像。
  1. Rollback(回滚):

    • 如果发布出现问题,你可以回滚到之前的版本。
    • 命令:kubectl rollout undo deployment/<deployment-name>
    • 该命令将会回滚指定Deployment的更新。
  2. Pause and Resume(暂停和恢复):

    • 如果你希望先暂停发布更新,然后再恢复,可以使用暂停和恢复命令。
    • 命令:kubectl rollout pause deployment/<deployment-name>kubectl rollout resume deployment/<deployment-name>
    • pause命令将会暂停指定Deployment的更新,而resume命令将会恢复更新。

这些是一些常见的k8s发布策略及其命令。根据实际需求,你可以选择适合你的发布策略来部署和更新你的应用程序。

1、在zs命名空间下创建3个httpd副本并查看结果

kubectl create ns zs  
kubectl create deployment httpd --image=httpd -n zs --replicas=3 
kubectl get po -n zs 

在这里插入图片描述

2、尝试删除其中一个副本并查看结果

kubectl delete pod httpd-757fb56c8d-5jnb7  -n zs

在这里插入图片描述
在这里插入图片描述

3、删除所有副本并查看结果

kubectl delete deployments.apps httpd  -n zs

在这里插入图片描述

4、使用k8s做金丝雀发布测试

kubectl create deployment nginx --image=nginx:1.14 -n zs --replicas=3
kubectl set image deployment nginx nginx=nginx:1.16 -n zs && kubectl rollout pause deployment nginx -n zs

另一个终端

kubectl get po -n zs -w

在这里插入图片描述

在这里插入图片描述

kubectl expose deployment nginx --port=81 --target-port=80 -n zs --name=nginxzs-service --type=NodePort

在这里插入图片描述

curl -I 192.168.99.172:31392

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/server/108364.html

相关文章

C# opencv识别二维码

新建桌面程序 安装opencvsharp 拖拽设计页面 选择图片识别代码 using OpenCvSharp; using System.Text;namespace QRcodeIdentity {public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary>/// 选择图片/// </summary>/// <pa…

物联网安全框架:构建安全互联的未来世界

在数字化浪潮的推动下&#xff0c;物联网&#xff08;IoT&#xff09;技术已经深入我们生活的方方面面&#xff0c;从智能家居到工业自动化&#xff0c;从医疗健康到智能交通&#xff0c;物联网的触角无处不在。然而&#xff0c;随着物联网设备的爆炸式增长&#xff0c;其安全问…

数据结构-符号表

1.概述 符号表最主要的目的就是将一个键和一个值联系起来&#xff0c;符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据&#xff0c;我们可以根据键来查找对应的值。 符号表中&#xff0c;键具有唯一性,符号表在实际生活中的使用场景是非常广泛的&#xff0c;见…

数据结构——树

文章目录 二叉树和**BST**树与二叉树基本概念常见例子相关术语二叉树 二叉搜索树&#xff08;**BST**&#xff09;二叉树&#xff08;**BST**&#xff09;的算法二叉树&#xff08;**BST**&#xff09;完整实现 二叉树和BST 树与二叉树 基本概念 树是一种非线性结构&#xf…

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏 导读 本系列涵盖从 3D Slicer 医学图像查看器的基础使用到高级自动分割扩展程序的内容&#xff08;从入门到高阶&#xff01;&#xff09;&#xff0c;具体包括软件安装、基础使用教程&#xff0c;自动分割扩展&#x…

网络安全的历史

如今&#xff0c;网络安全几乎成为各大公司和利益相关者关注的焦点。但在早期&#xff0c;网络安全的概念非常模糊。 直到多年以后&#xff0c;由于网络攻击和危险实体威胁的频繁发生&#xff0c;网络安全的发展才受到重视。这些措施的发展成为了网络安全的演变。 网络安全起…

Go语言Time包的使用

原文链接&#xff0c;关注可获取更新 time包 Go语言中有关于时间和日期的方法都在time包里面&#xff0c;Go语言的time包为开发者提供了一套全面而简洁的工具来处理时间相关的操作。包括解析和格式化时间字符串&#xff0c;计算时间差和时区转换等&#xff0c;time包时Go语言…

【数据结构篇】~链式二叉树(附源码)

链式二叉树 前言&#xff08;含头文件&#xff09;头文件 1.链式二叉树的组成2.前、中、后、层序遍历1.前序遍历2.中序遍历3.后序遍历 3.结点个数以及高度等​4.判断二叉树是否为完全二叉树 前言&#xff08;含头文件&#xff09; 之前的堆是特殊的二叉树是顺序结构的二叉树&a…