YAML 基础
YAML(Yet Another Markup Language) 不是一种标志语言。它的应用很广泛,在这里着重讲一讲,在 Kubernetes 中的一些内容。使用 YAML 用于 k8s 的定义将给你一些好处,包括:
- 便捷性:你将不再需要添加大量的参数到命令行中执行命令
- 可维护性:YAML 文件可以通过源头控制,可以跟踪每次的操作
- 灵活性:通过 YAML 你将可以创建比命令行更加复杂的结构 YAML 是一个 JSON 的超集,意味着任何有效 JSON 文件也都是一个 YAML 文件。关于 Kubernetes 中 YAML 的使用,只需要知道两种类型:
- Maps
- Lists
YAML Maps
咱们先来看看 YAML Maps 这种类型。Maps 可以将键值组合,从而可以更加方便的去配置信息。像下面这样,你可能会有这样一个配置信息:
--- apiVersion: v1 kind: Service
第一行是分隔符,并且是可选的。如果在单个文件中只定义了一个服务,那么这种情况下,第一行的分隔符就可以忽略不计。在上面的例子中,可以看出有两个值: v1 和 Service ,对应它们的键是 apiVersion 和 kind
YAML Lists
接下来介绍一下 YAML Lists。其实它就是一个序列的对象,例如:
args - sleep - "1000" - message
我们可以看到,可以有任何数量的项在列表中,项的定义以破折号(-)开头,并且和父元素之间存在缩进。但是要注意一点:在 YAML 文件中绝对不要使用 tab 键来进行缩进。
实际中的运用
基本上,不管我们想要什么样的结构,都可以通过这两个结构去组合实现。接下来我就以我在项目中使用的 yaml 文件为例来进行讲解一下(#后面内容为注释内容):
apiVersion: v1 kind: ReplicationController #类型是一个RC metadata: name: nginx-controller spec: replicas: 2 #我想要2个RC selector: name: mynginx template: metadata: labels: name: mynginx spec: containers: - name: mynginx image: reg。zll。com/web/nginx:1。12。2 #前端需要部署在nginx上,这里是对应的nginx的镜像。 volumeMounts: - name: httpd-storage mountPath: /etc/nginx/nginx。conf #镜像中nginx的配置文件地址,用下面的path:/home/nginx。conf去代替此路径。 - name: httpd-storag mountPath: /usr/local/dist ports: - containerPort: 80 volumes: - name: httpd-storage hostPath: path: /home/nginx。conf #自定义的nginx的配置文件,挂载到服务器上的这一路径下,去代替镜像中nginx的配置 - name: httpd-storag hostPath: path: /usr/local/dist #前端打包好的文件,放置的路径,去代替上放的mountPath:/usr/local/dist --- apiVersion: v1 kind: Service #类型是个service metadata: name: nginx-service-nodeport spec: ports: - port: 8000 targetPort: 80 nodePort: 30080 #暴露出来可供访问的IP。 protocol: TCP type: NodePort selector: name: mynginx
就我目前知识,研究到了这种程度,感谢您的阅读~
欢迎加入我们的知识星球,一起成长,交流经验。加入方式,长按下方二维码噢
最后,我想重复一句话:选择和一群优秀的人一起成长,你成长的速度绝对会不一样!