为什么 Kubernetes 对每个“资源”使用一个 yaml 文件

问题描述 投票:0回答:2

我正在寻找一个(或多或少科学的)文档/演示文稿,解释为什么“Kubernbetes 语言”的开发人员选择将应用程序定义(例如)分段在多个 yaml 文件中,而不是使用以下命令编写单个 yaml 文件应用程序部署的所有详细信息(所有部署、卷……)?

我认为这与可重用性、可维护性和可读性有关,但最好有一个更结构化的论证(我想到会议论文或会议中的演示,例如 kubecon 或 dockercon)

kubernetes
2个回答
2
投票

首先,Kubernetes 没有自己的语言,最常用的语言是 YAML,但您可以使用 JSON,甚至 XML(如果支持的话)。 YAML 更易于人类阅读,并且可以跨多种编程语言移植。 Kubernetes 很复杂,因为我们想做复杂的事情。如果我们将部署拆分为多个 YAML 文件,那么事情就会变得更易于管理,因为程序员将不同的文件用于不同的目的。而且,当发生修改时,您仅 kubectl 应用一个“小”文件。 为什么他们实际上选择 YAML 并分离文件是受到 Google 的 Borg 系统的影响,Kubernetes 从中汲取了很多概念。


2
投票

为什么“Kubernbetes 语言”的开发人员选择将应用程序定义(例如)分段到多个 yaml 文件中,而不是编写包含应用程序部署的所有详细信息(所有部署、卷等)的单个 yaml 文件。 )?

这使得我们可以更轻松地修改 Kubernetes 对象的配置。因此,例如,您不必遍历整个集群配置 yaml 文件来对服务后端进行小的更改。是的,开发和维护一堆文件更容易,每个文件包含一些对象或一组相关对象。

请记住,您可以在配置文件目录上调用 kubectl apply 命令:

kubectl apply -f <directory>

只要有意义,就将相关的 k8s 对象分组到单个文件中。所以,更容易管理。

但是您绝对可以使用此语法将整个集群配置放入一个 yaml 文件中(注意 ---)。

apiVersion: v1
kind: Service
metadata:
# skip

---
apiVersion: apps/v1
kind: Deployment
metadata:
# skip

Kubernetes 开发人员建议使用 YAML 而不是 JSON 编写配置文件。尽管这些格式在几乎所有场景中都可以互换使用,但 YAML 往往更加用户友好。

配置最佳实践上有一个很好的 Kubernetes 页面。

© www.soinside.com 2019 - 2024. All rights reserved.