k8s初探(5)-kubernetes Deployment(1)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: k8s初探(5)-kubernetes Deployment(1)

什么是deployment


我们已经初步了解了podreplicaset,我们可以思考这样一个问题,我怎么管理我的replicaset中的pod更新,首先来看下我们一般的更新部署计划,我们抽象出来,大概可以分为以下几步

image.png

我们假设线上已经有了一个拥有三副本的ReplicaSet,我们由于更新了镜像,所以我们得更新一下正在运行的pod,我们想想,我们应当如何更新呢?


假设我们已有架构如下

image.png


当我们需要更新时候,可以先将负载均衡取消掉,例如,我们想更新Pod B,我们可以将其负载均衡给拿掉

image.png


然后删除Pod B,根据replicaSet基本原理,删除Pod后,由于阈值个数不足,所以kubernetes得创建新的,可以理解为

image.png

然后再将负载均衡建立到Pod B上,并且将Pod A的负载均衡给拿掉,这样再更新Pod A就不会影响正在执行的用户了。


image.png


这几个操作步骤,若是让我们手动输入,多多少少有点难为我们,好在,kubernetes提供了我们一个新的资源deployment,正好就解决上面问题的。正如k8s官网所言,将replicaset交由deployment管理,你就安安心心的吧。


其概念可以理解为如下图

image.png



deployment 操作


介绍了那么多,我们先来看一下deployment提供的描述文档,根据后续查就可以了

image.png


为了更好的模拟deployment,我们尝试写一个2个web服务

web程序1

image.png


我们将其打包成镜像 juejinpdudoweb:v1

web程序2

image.png

我们将其打包成镜像 juejinpdudoweb:v2

查看镜像

image.png



创建deployment


创建deployment


image.png


使用apply创建之后,我们可以deploymentrs以及pod的具体信息

image.png


尝试请求pod:9090端口


image.png



更新deployment


更新有2种方式,第一种是执行kubectl edit修改,第二种便是执行kubectl set镜像修改

例如,我们想将该deployment镜像更新下,我们可以使用kubectl set进行更新即可

image.png


通过查询rs可得,deployment更新了一个版本的rs


image.png

查看pod

image.png


再次请求访问

image.png


回退deployment


如上所述,rs更新后,并没有删除掉,所以,我们还可以通过deployment进行回退

查看版本

image.png

我们查看第一个版本


image.png


确定无误,我们可以回退到第一个版本

image.png

我们通过比对rs可以得出结论,已经回退成功了

image.png


查看pod,再次访问网页

image.png

image.png



总结


对于无状态服务而言,我们使用replicaset进行绑定并且对外服务,可以有效解决流量分配 和 故障修复等,不过随之而来的问题便是我们如何更新replicaset管理下的pod,我们手动更新,麻烦且kubernetes负载均衡难以操作,好在kubernetes提供了deployment供我们调用且管理replicaset,作为运维而言,我们仅需管理deployment即可,无需关注和直接操作replicasetdeployment对于版本而言,方便我们更新/回退/查看版本 等。



相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2天前
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
41 19
|
12天前
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
131 10
|
16天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
1月前
|
Kubernetes Cloud Native API
深入理解Kubernetes——容器编排的王者之道
深入理解Kubernetes——容器编排的王者之道
44 1
|
1月前
|
Kubernetes Cloud Native 持续交付
深入理解Kubernetes:容器编排的基石
深入理解Kubernetes:容器编排的基石
|
1月前
|
Kubernetes 应用服务中间件 nginx
【赵渝强老师】K8s中的Deployment控制器
Kubernetes中的Deployment用于部署无状态应用程序,管理Pod的数量、更新方式和资源限制。通过创建和管理ReplicaSet,Deployment可以实现Pod的自动扩缩容、滚动更新和回滚。本文介绍了Deployment的基本概念,并通过一个具体的示例演示了如何使用Deployment创建、更新和管理Pod。
|
1月前
|
存储 Kubernetes 调度
【赵渝强老师】K8s中Deployment控制器与StatefulSet控制器的区别
K8s中的Deployment控制器用于管理无状态应用程序,关注Pod数量、更新方式等;而StatefulSets控制器则管理有状态应用程序,提供持久存储和唯一标识符,适用于需要稳定网络标识符和持久化存储的场景。两者的主要区别在于是否维护状态和顺序。
|
Kubernetes 容器
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
161 0
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
|
Kubernetes 容器
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
139 0
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
|
Kubernetes 应用服务中间件 API
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(二)
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(二)
156 0
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(二)

热门文章

最新文章