Kubernetes管理容器——yaml文件的生成与重要参数详解
yaml文件的生成
格式:kubectl run 自定义pod名称 --image=自定义镜像名称 --dry-run=client(这里还可以定义为server但是推荐client) -o yaml > 自定义名称.yaml
例:kubectl run nginx --image=nginx --dry-run=client -o yaml > pod1.yaml
这样我们就定义好了一个yaml文件基础模板在当前目录下,剩下的工作就是在模板内修改部分参数并运行这个yaml文件即可。
查看yaml文件内各个参数的值
例:kubectl explain pods.spec.containers
kubectl explain pods
kubectl explain pods.metadata.labels.run
参数之imagePullPolicy
作用是指定镜像的下载位置(本地/网络)
此参数默认有三个值:(默认为Always)
Always为总是从网络下载镜像
Never为总是从本地下载镜像
IfNotPresent优先从本地下载,本地没有则从网上下载【建议用IfNotPresent】
此参数为containers的副参数
格式如下:
参数之command(args)
作用是在运行这个容器时同时运行一条或多条shell命令
此参数为containers的副参数,两种写法,第一种写法格式如下:
第二种格式如下:
同时command可以换成args,同样作用,注意!
参数之env(变量)
作用就是在容器内插入变量,可以定义多个变量
此参数为containers的副参数
例如mysql容器创建定义root密码、wordpress等等
格式如下:
参数之namespace(命名空间)
作用就是指定此yaml创建出来的所有容器运行在哪个命名空间(ns)内,不指定则运行在默认的ns内。
此参数为metadata的副参数
格式如下:
**
pod状态
running:正常运行
completed:正常退出
Error:非正常错误
CrashLoopBackOff:创建的时候就出错,属于内部原因
imagePullerror :创建pod的时候,镜像下载失败
Pending:因为其他的原因导致pod准备开始创建,还没有创建(卡住了)
参数之restartPolicy(容器生命期)
作用是定义容器的生命期
此参数为spec下副参数
此参数默认有三个值分别为:(默认为Always,如果不设置)
Always:容器只要退出,就重新运行
Onfailure:容器非正常退出,才会重新运行(正常退不会运行)
Never:容器只要退出就不运行(正常/非正常退出都不运行)
格式如下:
**
参数之nodeSelector(容器标签)
作用是定义容器的标签,使得kubernetes能*的选择将容器运行在哪台node(worker)上面
查看node/pod标签:kubectl get pods/nodes --show-labels
设置node的标签:kubectl label nodes node1 aa=xyz #aa=xyz等号前后均可以自定义
设置标签的第二种方法:kubectl edit nodes node1
取消node的标签:kubectl label nodes nodes1 aa- # “ - ” 是取消符号必不可少
设置所有node的标签:kubectl label nodes -all bb=fgh #bb=fgh等号前后均可以自定义
yaml文件内定义pod的标签:
参数之volumes(存储)
volumes参数下面可以定义很多副参数
emptyDir:物理存储目录(一般不指定存储目录)
属性是当删除容器时,会删除对应物理机上的目录
没有定义物理机存储路径的格式为:
hostPath:物理存储目录(一般指定存储目录)
属性是当删除容器时,保留物理存储目录
定义了物理机存储路径的格式为: