YAML语法规范;在kubernetes k8s中如何通过yaml文件创建pod,以及pod常用字段详解
YAML 语法规范
K8S 里所有的资源或者配置都可以用 yaml 或 Json 定义。YAML 是一个 JSON 的超集,任何有效的 JSON 文件也都是一个有效的YAML文件。
具体参见:「YAML 语言教程与使用案例」
通过yaml创建nginx pod对象
yaml文件
在Kubernetes的 yaml文件中,最好不要出现下划线,可以有中横线。
1 | [root@k8s-master test]# pwd |
Pod常见操作
1 | [root@k8s-master test]# pwd |
volume查看
由上可知 pod nginx-demo 被调度到了 k8s-node02 节点。那么对应的volume信息如下:
站点信息
1 | [root@k8s-node02 nginx]# ll /data/volumes/nginx/html/ # 宿主机目录已经被创建 |
日志信息
1 | [root@k8s-node02 nginx]# ll /data/volumes/nginx/log/ # 宿主机目录已经被创建,且下面的两个日志文件也是容器启动时创建的 |
nginx站点访问
查看指定pod的基本信息。得到了该pod的IP
1 | [root@k8s-master k8s_study]# kubectl get pod nginx-demo -o wide |
同时在k8s-node02节点机器也可见访问日志,信息如下:
1 | [root@k8s-node02 nginx]# cat /data/volumes/nginx/log/access.log |
K8S Pod Yaml文件参数详细说明
特别说明:注意格式,层级与缩进。
1 | apiVersion: v1 #必选,版本号,例如v1,可以用 kubectl api-versions 查询到 |
资源需求(Requests)和限制(Limits)说明
对于每一个资源,container可以指定具体的资源需求(requests)和限制(limits)。
requests申请范围是0到node节点的最大配置,而limits申请范围是requests到无限,即0 <= requests <=Node Allocatable,requests <= limits <= Infinity。
对于CPU,如果pod中服务使用CPU超过设置的limits,pod不会被kill掉但会被限制。如果没有设置limits,pod可以使用全部空闲的cpu资源。
对于内存,当一个pod使用内存超过了设置的limits,【一个Pod可能有多个container】pod中container的进程会被kernel因OOM kill掉。当container因为OOM被kill掉时,系统倾向于在其原所在的机器上重启该container或本机或其他重新创建一个pod。
volumeMounts和volumes区别
volumeMounts示例如下:
1 | volumeMounts: #定义容器挂载内容 |
volumes示例如下:
1 | volumes: #volumes字段定义了paues容器关联的宿主机或分布式文件系统存储卷 |
相关阅读
完毕!