kubernetes有状态和无状态怎么理解?

無名 发表于: 2021-08-17   最后更新时间: 2021-09-05 23:14:53   3,287 游览

kubernetes(k8s)有状态服务和无状态服务怎么理解呢?

发表于 2021-08-17

无状态:deployment

  • 所有pod都是一样的,不具备与其他实例有不同的关系。
  • 没有顺序的要求。
  • 不用考虑再哪个Node运行。
  • 随意扩容缩容。

有状态:SatefulSet

  • 集群节点之间的关系。
  • 数据不完全一致。
  • 实例之间不对等的关系。
  • 依靠外部存储的应用。
  • 通过dns维持身份

简单理解,说下各自应用场景。
(1)无状态:比如某个应用需要部署2个节点,然后通过一个负载均衡器代理,供外部访问。这种情况采用Deployment部署,后端的两个节点通过Service(负载均衡)将服务暴露出去,默认使用轮询策略像两个节点转发请求,节点无优先级,pod名称后面会拼接类似随机字符串,名称不固定;
(2)有状态:部署一主一从2个节点的MySQL数据库集群,从节点永远只能再主节点取数据然后同步过来,对外提供数据库服务,写操作只能指定到主节点,而读操作可以是两个节点轮询转发请求。这种情况下两个节点担负责任不一样,且有优先级。只能使用StatefulSet并配合无头服务,才能指定访问到后端的主节点。pod名称默认按照数字顺序,如:pod名称-0、pod名称-1、pod名称-2等,或者说你需要一个固定的pod名称这种需求。

你的答案

查看kubernetes相关的其他问题或提一个您自己的问题