我是K8的新手,所以仍然想尽一切办法。我一直在看deployments,可以体会到它们的用处。但是,我不明白为什么它们不支持服务(仅副本集和Pod)。
这是为什么?这是否意味着服务通常会部署在部署之外?
答案 0 :(得分:1)
为回答您的问题,Kubernetes部署用于管理在集群中运行的无状态服务,而不是为有状态应用程序运行时构建的StatefulSets。实际上,通过部署,您可以描述实施期间必须创建的所有基础对象的更新策略和路线图,因此,我们可以通过描述以下内容来区分用于确定某些对象的单独规范字段,例如所需的Pod副本数,用于Pod的模板容器应放在Pod等中的列表。
但是,正如@P Ekambaram在回答中提到的那样,Services代表Kubernetes集群内部网络通信模型的抽象层,并且它们声明了一种通过对应的Endpoints访问集群中Pod的方法。由于服务的任务是为嵌套的Pod动态提供特定的网络行为,而不会通过适当的服务Types进行任何通信修改,因此不影响或重新启动它们,因此它们与部署对象清单规范分开。
答案 1 :(得分:0)
是的,应该将服务部署为单独的对象。请注意,部署用于升级或回滚映像,并且可以在ReplicaSet
之上运行Kubernetes豆荚是凡人。他们是天生的,死后不会复活。特别是ReplicaSets可动态创建和销毁Pod(例如在向外扩展或向内扩展时)。尽管每个Pod都有自己的IP地址,但即使是那些IP地址,也无法长期保持稳定。这就带来了一个问题:如果某个Pod集(我们称其为后端)为Kubernetes集群中的其他Pod(我们称其为前端)提供了功能,那么这些前端如何找出并跟踪该集中的哪些后端?
Services.com来了。 Kubernetes服务是一种抽象,定义了Pod的逻辑集合和访问Pod的策略。服务所针对的Pod集(通常)由标签选择器确定
答案 2 :(得分:0)
我认为它打算解耦和细化。
答案 3 :(得分:0)
我刚刚了解到的问题与我的问题有些相关:同一yaml文件中可以包含多个K8s对象,用---
分隔。像这样:
apiVersion: v1
kind: Deployment
# other stuff here
---
apiVersion: v1
kind: Service
# other stuff here