Kubernetes 无状态服务和有状态服务
无状态服务
- 是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的。
- 多个实例可以共享相同的持久化数据。例如:nginx实例,tomcat实例等
- 相关的k8s资源有:ReplicaSet、ReplicationController、Deployment等,由于是无状态服务,所以这些控制器创建的pod序号都是随机值。并且在缩容的时候并不会明确缩容某一个pod,而是随机的,因为所有实例得到的返回值都是一样,所以缩容任何一个pod都可以。
有状态服务
- 宠物和牛的类比,农场主的牛如果病了可以丢掉再重新买一头,如果宠物主的宠物病死了是没法找到一头一模一样的宠物的。
- 有状态服务 可以说是 需要数据存储功能的服务、或者指多线程类型的服务,队列等。(mysql数据库、kafka、zookeeper等)每个实例都需要有自己独立的持久化存储,并且在k8s中是通过申明模板来进行定义。持久卷申明模板在创建pod之前创建,绑定到pod中,模板可以定义多个。
volumeClaimTemplates:- metadata:name: zookeeperspec:selector:matchLabels:app: zookeeperaccessModes: [ "ReadWriteOnce" ]resources:requests:storage: 3Gi
说明: 有状态的 pod是用来运行有状态应用的,所以其在数据卷上存储的数据非常重要,在 Statefulset缩容时删除这个声明将是灾难性的,特别是对于 Statefulset来说,缩容就像减少其 replicas 数值一样简单。基于这个原因,当你需要释放特定的持久卷时,需要手动删除对应的持久卷声明。
相关的k8s资源为:statefulSet,由于是有状态的服务,所以每个pod都有特定的名称和网络标识。比如pod名是由statefulSet名+有序的数字组成(0、1、2..)
在进行缩容操作的时候,可以明确知道会缩容哪一个pod,从数字最大的开始。并且Stat巳fulset 在有实例不健康的情况下是不允许做缩容操作的。StatefulSet 缩容任何时候只会操作 一个 pod 实例,所以有状态应用的缩容不会很迅速。举例来说, 一个分布式存储应用若同时下线多个节点 ,则可能导致其数据丢失 。 比如说一个数据项副本数设置为 2 的数据存储应用, 若 同时有两个节点下线,一份数据记录就会丢失,如果它正好保存在这两个节点上 。 若缩容是线性的 ,则分布式存储应用就有时间把丢失的副本复制到其他节点 ,保证数据不会丢失。
Kubernetes 无状态服务和有状态服务相关推荐
- 无状态服务和有状态服务
对服务器程序来说,究竟是有状态服务,还是无状态服务,其判断依旧是指两个来自相同发起者的请求在服务器端是否具备上下文关系.如果是状态化请求,那么服务器端一般都要保存请求的相关信息,每个请求可以默认地使用 ...
- linux netstat服务,linux netstat查看服务和端口状态
netstat可以查看linux系统中正在使用的服务和端口情况 常见参数 -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相 ...
- nginx 根据目录指定root_部署Nginx网站服务实现访问状态统计以及访问控制功能
Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单个物理服务器可支持30000-50000个并发请求. Nginx的安装文件可以从官方网站h ...
- 【转】“数据提供程序或其他服务返回 E_FAIL 状态” 或者 Data provider or other service returned an E_FAIL status.
"数据提供程序或其他服务返回 E_FAIL 状态" 或者 Data provider or other service returned an E_FAIL status. 使 ...
- Oracle gsd服务是什么,如何处理11gR2 RAC下oc4j和gsd服务为OFFLINE状态
满意答案 那么,是我们的RAC配置有问题吗?这两类服务没有ONLINE会不会影响RAC数据库呢?我们又该如何启动这些服务呢? 其实,我们的RAC配置是没有问题的,也不会影响数据库正常运行.在默认情况下 ...
- Oracle gsd服务是什么,如何处理11gR2 RAC下oc4j和gsd服务为OFFLINE状态 | 旺旺知识库
在CentOS 5.9 X86_64位的机器上配置完11gR2 RAC后,grid用户执行crs_stat -t查看服务状态时,我们会看到有一些服务是OFFLINE状态,其中就包括ora.oc4j和o ...
- nginx php返回500错误,解决Nginx服务返回500状态码问题
文章目录 [隐藏] 发现问题 分析并解决问题 最近鼓捣博客服务器,不经意间误操作改了一些目录的用户组及权限,导致博客文件上传功能失败,周末检查了一天依然没有解决问题,在不经意间意识到了问题所在,其实有 ...
- 魔坊APP项目-22-种植园,种植栏的功能实现,客户端根据激活状态和未激活状态分别显示树桩、服务端提供种植植物的相关数据、解锁树桩、植物相关道具使用
种植园 一.种植栏的功能实现 1. 客户端需要的植物相关参数: 总树桩数量, 当前用户激活树桩数量, 当前种植的树桩数量, 树桩列表状态 2. 客户端根据激活状态和未激活状态分别显示树桩 3. 服务端 ...
- Android10定位服务的开启状态判断和申请
AndroidQ新增定位权限: <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION ...
最新文章
- 【转】 Android中退出程序的提示框
- Linux中的中断处理
- Lync 小技巧-48-Lync 语音邮箱-英文提示-自动助理-中文提示
- GAN生成对抗网络基本概念及基于mnist数据集的代码实现
- 你见过工资高的程序员炫富 来7拍一下
- 实时“头发-面部皮肤”分割与人脸肤色分类
- 与女儿谈商业模式 (4):戴尔的成功秘诀
- mui(APP)全屏展示
- 大数据如何应用于食品追溯管理
- 一文了解预训练语言模型!
- Android Fragment + ViewPater + Fragment嵌套Fragment实战
- jQuery总结或者锋利的jQuery笔记一
- 神经网络和机器学习基础入门分享
- linux下swp文件
- 哈希表的画法_2018年流行什么眉型
- ncbi-genome-download在NCBI上批量下载基因组
- 关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解
- 惠普服务器SPP包制作方法
- Java实现蓝桥杯调和级数
- 【sdx12】PC电脑不更新IPv6地址导致单独IPv6拨号的时候,PC无法访问外网问题分析及解决方案(sdx12使用SLAAC IPv6)