怎样浅析Kubernetes StatefulSet

发布时间:2021-12-18 17:55:15 作者:柒染
来源:亿速云 阅读:122

本篇文章给大家分享的是有关怎样浅析Kubernetes StatefulSet,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

StatefulSet和Deployment的区别

“Deployment用于部署无状态服务,StatefulSet用来部署有状态服务”。

具体的,什么场景需要使用StatefulSet呢?官方给出的建议是,如果你部署的应用满足以下一个或多个部署需求,则建议使用StatefulSet。

稳定的主要是针对Pod发生re-schedule后仍然要保持之前的网络标识和持久化存储。这里所说的网络标识包括hostname、集群内DNS中该Pod对应的A Record,并不能保证Pod re-schedule之后IP不变。要想保持Pod IP不变,我们可以借助稳定的Pod hostname定制IPAM获取固定的Pod IP。借助StatefulSet的稳定的唯一的网络标识特性,我们能比较轻松的实现Pod的固定IP需求,然后如果使用Deployment,那么将会复杂的多,你需要考虑滚动更新的过程中的参数控制(maxSurge、maxUnavailable)、每个应用的IP池预留造成的IP浪费等等问题。

因此,我想再加一个StatefulSet的使用场景:

最佳实践

如何理解稳定的网络标识

StatefulSet中反复强调的“稳定的网络标识”,主要指Pods的hostname以及对应的DNS Records。

如何理解稳定的持久化存储

部署和伸缩时与Deployment的区别

Node网络异常等情况下该如何处理

那么什么情况下会导致出现同一namespace下会出现多个相同network identity的StatefulSet Pods呢?我们考虑下Node出现网络Unreachable的情况:

那么在Kubernetes 1.5+中,如何强制从apiserver中删除该StatefulSet pods呢?有如下三种方法:

小知识:当前Node Condition有以下6种:

Node ConditionDescription
OutOfDiskTrue if there is insufficient free space on the node for adding new pods, otherwise False
ReadyTrue if the node is healthy and ready to accept pods, False if the node is not healthy and is not accepting pods, and Unknown if the node controller has not heard from the node in the last 40 seconds
MemoryPressureTrue if pressure exists on the node memory – that is, if the node memory is low; otherwise False
DiskPressureTrue if pressure exists on the disk size – that is, if the disk capacity is low; otherwise False
NetworkUnavailableTrue if the network for the node is not correctly configured, otherwise False
ConfigOKTrue if the kubelet is correctly configured, otherwise False

StatefulSet的Pod管理策略

Kubernetes 1.7+,StatefulSet开始支持Pod Management Policy配置,提供以下两种配置:

StatefulSet的更新策略

StatefulSet的更新策略(由.spec.updateStrategy.type指定)支持以下两种:

以上就是怎样浅析Kubernetes StatefulSet,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. Kubernetes针对有状态服务数据持久化之Statefu
  2. kubernetes关于statefulset的理解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kubernetes statefulset

上一篇:怎么浅析Entity Framework Core2.0的日志记录与动态查询条件

下一篇:如何进行springboot配置templates直接访问的实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》