在学习干货前,客官请留步——

【“云”住民生存训练营--玩转k8s】本周五,即将在线上开播,扫码一键预约直播!

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._云计算

当我们使用 k8s 的各种 resource 时,常常会感到 yaml 元素项目繁多、难以记忆,例如api, meta data, spec,template等等。我们在记忆某个选项或者是自己在编写这个选项的时候,可能会感觉比较困难。

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._云计算_02

事实上,k8s 的 resource 描述方式自有其规律在其中。如果能用模块化的方法拆解一下,可以更好地理解记忆它们的相同与不同之处。

云资源优化服务 SpotMax无缝集成了Kubernetes,可便捷实现容器的管理与自动化发布。==>>戳链接了解SpotMax

StatefulSet  Deployment 作为我们在 k8s 中常用的控制器(工作负载),以不同方式管理着 Pod。通常情况下,StatefulSet用于部署有状态应用,Deployment 则用于部署无状态应用。

这一期“云端跟我学”,我们将以StatefulSet和Deployment为例,用模块化的方式进行对比记忆,并认知其中的规律。

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._云原生_03

对比一下 Statefulset和 deployment,可以看到有module这种概念。

例如Statefulset中有kind、有 spec,共2个module:

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._docker_04

具体来看一下 kind中包含的模块,kind支持Deployment、DaemonSet、StatefulSet、Job、CronJob等。

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._kubernetes_05

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._云原生_06

按照模块化的方式来抽象和拆解,认知记忆这些元素就会容易很多。

如下图,可以左右对比一下StatefulSet与Deployment:两边都有 kind、 spec( spec部分有一些区别,如图),其他如 selector还有 template的部分都是一样的。

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._kubernetes_07

 二者重点的区别主要集中于更新策略(strategy)部分,如下图:

【StatefulSet】

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._k8s_08

【Deployment】

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._docker_09

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._云计算_10

我们可以进一步对template部分做一下拆分和抽象:

【云端技能包】k8s 知识- 模块化方式认识Statefulset和Deployment._docker_11

以上就是我们对k8s resource的理解和记忆小窍门,可以采用模块化、抽象化的方式,认知共性,找出区别,方便大家的学习和使用。