YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。
YAML语法规则:
Map顾名思义指的是字典,即一个Key:Value 的键值对信息。例如:
Maps的value既能够对应字符串也能够对应一个Maps。例如:
注:上述的YAML文件中,metadata这个KEY对应的值为一个Maps,而嵌套的labels这个KEY的值又是一个Map。实际使用中可视情况进行多层嵌套。
YAML处理器根据行缩进来知道内容之间的关联。上述例子中,使用两个空格作为缩进,但空格的数据量并不重要,只是至少要求一个空格并且所有缩进保持一致的空格数 。例如,name和labels是相同缩进级别,因此YAML处理器知道他们属于同一map;它知道app是lables的值因为app的缩进更大。
注意:在YAML文件中绝对不要使用tab键
List即列表,说白了就是数组,例如:
可以指定任何数量的项在列表中,每个项的定义以破折号(-)开头,并且与父元素之间存在缩进。在JSON格式中,表示如下:
当然Lists的子项也可以是Maps,Maps的子项也可以是List,例如:
如上述文件所示,定义一个containers的List对象,每个子项都由name、image、ports组成,每个ports都有一个KEY为containerPort的Map组成,转成JSON格式文件:
定义配置时,指定最新稳定版API
配置文件应该存储在集群之外的版本控制仓库中。如果需要,可以快速回滚配置、重新创建和恢复
应该使用YAML格式编写配置文件,而不是json。YAML对用户更加友好
可以将相关对象组合成单个文件,通常会更容易管理
不要没必要指定默认值,简单和最小配置减小错误
在注释中说明一个对象描述更好维护
apiVersion:此处值是v1,这个版本号需要根据安装的Kubernetes版本和资源类型进行变化,记住不是写死的。
kind:此处创建的是Pod,根据实际情况,此处资源类型可以是Deployment、Job、Ingress、Service等。
metadata:包含Pod的一些meta信息,比如名称、namespace、标签等信息。
spec:包括一些container,storage,volume以及其他Kubernetes需要的参数,以及诸如是否在容器失败时重新启动容器的属性。可在特定Kubernetes API找到完整的Kubernetes Pod的属性。
(1)查看apiVersion
(2)下面是一个典型的容器定义:
上述例子只是一个简单的最小定义:一个名字(front-end)、基于nginx的镜像,以及容器将会监听的指定端口号(80)。
除了上述的基本属性外,还能够指定复杂的属性,包括容器启动运行的命令、使用的参数、工作目录以及每次实例化是否拉取新的副本。 还可以指定更深入的信息,例如容器的退出日志的位置。容器可选的设置属性包括:
name、image、command、args、workingDir、ports、env、resource、volumeMounts、livenessProbe、readinessProbe、livecycle、terminationMessagePath、imagePullPolicy、securityContext、stdin、stdinOnce、tty
(3)kubectl创建Pod
名词解释
(1)创建一个yaml文件
(2)创建deployment
(3)查看标签
(4)通过标签查找Pod
(5)deployment创建过程
Deployment 管理的是replicaset-controller,RC会创建Pod。Pod自身会下载镜像并启动镜像
(6)升级镜像(nginx1.10–>nginx1.11)
升级镜像的过程是逐步进行的,pod不会一下子全部关闭,而是一个一个升级
(7)查看发布状态
(8)查看deployment历史修订版本
(8)编辑deployment
升级过程:
(10)扩容/缩容(指定–replicas的数量)
(11)创建Service提供对外访问的接口
创建service
查看service(访问Pod是有负载均衡的)
对service的描述
(12)回滚到以前的版本
(13)回滚到指定版本
本文转自: https://blog.csdn.net/BigData_Mining/article/details/
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/10295.html