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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 前面我们分享很多关于 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搭建和管理企业级网站应用
相关文章
|
24天前
|
存储 Kubernetes 持续交付
介绍一下Kubernetes的应用场景
【10月更文挑战第18天】介绍一下Kubernetes的应用场景。
110 3
|
1月前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
120 60
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
204 62
|
5天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
5天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
13天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
52 1
|
22天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
1月前
|
存储 Kubernetes 调度
|
24天前
|
存储 Kubernetes 监控
深度解析Kubernetes在微服务架构中的应用与优化
【10月更文挑战第18天】深度解析Kubernetes在微服务架构中的应用与优化
92 0