【k8s 系列】k8s 学习二十六,有状态的应用如何部署 1?

简介: 前面我们分享很多关于 K8S 的内容,有没有发现 pod 都是无状态,RS / RC 管理的 pod 也是无状态的,我们可以任意删除一个 pod,副本管理器又会马上给我们创建一个 pod那么如果咱们的这个 pod 是有挂载持久卷的,那么我们用老方法可还行?

【k8s 系列】k8s 学习二十六,有状态的应用如何部署 1?

前面我们分享很多关于 K8S 的内容,有没有发现 pod 都是无状态,RS / RC 管理的 pod 也是无状态的,我们可以任意删除一个 pod,副本管理器又会马上给我们创建一个 pod

那么如果咱们的这个 pod 是有挂载持久卷的,那么我们用老方法可还行?


有状态和无状态

简单说明一下,什么是有状态的服务,什么是无状态的服务:

有状态服务

  • 服务本身依赖于环境中的状态,可能需要数据库来持久化状态数据
  • 某一个时刻,一个请求只能被服务的某个实例处理
  • 会存储状态数据,若需要扩展实例,可能整个系统都进行变动

无状态服务

  • 服务本身不依赖自身的状态
  • 外部的任何请求到服务的任何一个实例都是可以得到正确的期望的响应
  • 可以横向扩展,能做负载均衡,自身不会存储状态机

回顾 ReplicaSet

咱们回顾一下 RS / RC ,他们都是管理的 pod 的控制器,创建出来的 pod 也都是通过预设好的模板创建出来的,这些 pod 也没有什么区别

我们上面有提到数据,如果我们在 RS 中加入一个声明的持久卷会是什么样的效果呢?

会是像这样所有 pod 共享一个持久卷声明?

image.png

还是会向这样每一个 pod 有一个独立的持久卷声明呢?

image.png

答案当然是前者

这个点可以在强调一下,感兴趣的小伙伴可以尝试一下,我们创建的是一个 RS,RS 里面会根据 pod 的副本数,来创建和删除多个 pod,若我们指定了持久卷,那么是多个 pod 共享同一个卷的

因为咱们的 pod 都是从 pod 模板生成的, pod 的模板早已指定好具体的持久卷是哪一个,无论生成多少个 pod ,都是共享一个持久卷

除非咱们创建多个 RS

那么如果我们需要就 1 个 RS 就能做到创建的每一个 pod 都可以享受独立的持久卷声明呢?

那么就抱歉了,K8S 暂时还不支持,没准后续可以支持也说不一定

回过头来看,如果我们需要 一个 pod 对应一个持久卷声明,一个持久卷,那么就得一个 RS 创建 一个 pod 才能实现了


那么我们如何进行扩容和缩容呢?

这又是一个麻烦事,这种做法不能自动的动态进行扩缩容,只能我们手动去删除 RS 或者修改 RS 的副本个数 ,而且对于以后横向扩展的时候,我们无限的改动 RS ,这真的太笨重了,云原生的做法绝对不能是这个样子的,肯定有好方法

多个 pod 共享一个持久化卷,但是使用不同的目录?


看上去感觉还不错,我们是不是就可以让多个 pod 共享一个持久化卷,但是使用不同的目录,类似于下面这种呢?

image.png

根据示意图来看,感觉可行对吧

咱们细想一下的时候,我们就知道这样子不太行嘞

对于不同的 pod ,需要动态的去指定持久卷的不同目录,那么如何做到呢?这些 pod 都是通过同一个模板创建出来的,如何动态的去改变呢?

思来想去,还是需要多个 RS,不同的 RS 指定同一个持久化卷,不同的 pod 模板指定自己需要使用的挂载路径

那么 RS 是不是就真的搞不定上面的需求呢? 创建一个 RS ,让多个 pod 有自己独立的持久化卷

是的,就是搞不定,咱们看看 K8S 还有没有其他的处理方式来处理这种需求,放心,肯定可以解决,下回见

今天就到这里,学习所得,若有偏差,还请斧正


欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
0
0
63
分享
相关文章
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
借助阿里云ACK One注册集群,充分利用阿里云强大ACS GPU算力,实现DeepSeek推理模型高效部署。
使用容器服务ACK快速部署QwQ-32B模型并实现推理智能路由
阿里云最新发布的QwQ-32B模型,通过强化学习大幅度提升了模型推理能力。QwQ-32B模型拥有320亿参数,其性能可以与DeepSeek-R1 671B媲美。
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
37 12
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
介绍如何使用ACK Edge与虚拟节点满足DeepSeek部署的弹性需求。
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等