我正在寻找一个(或多或少科学的)文档/演示文稿,解释为什么“Kubernbetes 语言”的开发人员选择将应用程序定义(例如)分段在多个 yaml 文件中,而不是使用以下命令编写单个 yaml 文件应用程序部署的所有详细信息(所有部署、卷……)?
我认为这与可重用性、可维护性和可读性有关,但最好有一个更结构化的论证(我想到会议论文或会议中的演示,例如 kubecon 或 dockercon)
首先,Kubernetes 没有自己的语言,最常用的语言是 YAML,但您可以使用 JSON,甚至 XML(如果支持的话)。 YAML 更易于人类阅读,并且可以跨多种编程语言移植。 Kubernetes 很复杂,因为我们想做复杂的事情。如果我们将部署拆分为多个 YAML 文件,那么事情就会变得更易于管理,因为程序员将不同的文件用于不同的目的。而且,当发生修改时,您仅 kubectl 应用一个“小”文件。 为什么他们实际上选择 YAML 并分离文件是受到 Google 的 Borg 系统的影响,Kubernetes 从中汲取了很多概念。
为什么“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 页面。