K8S 创建pod yaml文件详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S 创建pod yaml文件详解相关的知识,希望对你有一定的参考价值。
参考技术A以下参数的解释由于是分段的,所以具体所处的层级,对基础的必选参数了解后,进行分辨
在容器列表containers中的各项定义
健康检查有三种方式分别是通过脚本或命令、通过httpGet、通过tcp检测
Pod 定义详解
文章目录
Yaml 格式的 Pod 定义文件的完整内容如下
apiVersion: v1
kind: Pod
metadate:
name: string
namespace: string
labels:
- name: string
annotations:
- name: string
spce:
containers:
- name: string
image: string
imagePullPolicy: [Always | Never | IfNotPresent]
command: [string]
args: [string]
workingDir: string
vilumnMounts:
- name: string
mountsPath: string
readOnly: boolean
ports:
- name: string
containerPort: int
hostPort: int
protocol: string
env:
- name: string
value: string
resource:
limits:
cpu: string
memory: string
requests:
cpu: string
memory: string
livenessProbe:
exec:
command: [string]
httpGet:
path: string
port: string
host: string
scheme: string
httpHeaders:
- name: string
values: string
tcpSocket:
port: number
initialDelaySeconds: 0
timeoutSeconds: 0
successThreshold: 0
failureThreshold: 0
securityContext:
privileged: false
restartPolicy: [Always | Never | OnFailure]
nodeSelector: object
imagePullSecrets:
- name: string
hostNetwork: false
Volumes:
- name: string
emptyDir:
hostPath:
path: string
secret:
secretName: string
items:
- key:string
path: string
configMap:
name: string
items:
- key: string
path: string
对 Pod 定义文件模板中各属性的详细说明
属性名称 | 取值类型 | 是否必选 | 取值说明 | 备注 |
---|---|---|---|---|
apiVersion | string | Required | 版本号 | |
kind | string | Required | 资源类型 | |
meatdate | object | Required | 元数据 | |
m.name | string | Required | pod 名称 | |
m.namespace | string | Required | pod 所属命名空间 | 默认为 default |
m.labels | list | 自定义标签列表 | ||
m.annotations | list | 自定义注解列表 | ||
spec | object | Required | pod 中容器的详细定义 | |
s.containers | list | Required | pod 中的容器列表 | |
s.c.name | string | Required | 容器名称 | |
s.c.image | string | Required | 容器镜像 | |
s.c.imagePullPolicy | string | 容器拉取策略: | Always(默认) | IfNotPresent | Never | |
s.c.command | list | 容器启动命令列表 | 如果不指定,则使用镜像打包时设定的启动命令 | |
s.c.args | list | 容器启动命令参数列表 | ||
s.c.workingDir | string | 容器的工作目录 | ||
s.c.volumeMounts | list | 挂载到容器内部的存储卷配置 | ||
s.c.v.name | string | 引用 pod 定义的共享存储卷名称 | ||
s.c.v.mountPath | string | 存储卷在容器内挂载的绝对路径 | ||
s.c.v.readOnly | boolean | 是否为只读模式 | 默认为读写模式 | |
s.c.ports | list | 容器的端口号列表 | ||
s.c.p.name | string | 端口的名称 | ||
s.c.p.containerPort | string | 容器需要监听的端口号 | ||
s.c.p.hostPost | string | 容器所在的主机需要监听的端口号 | 设置该项,同一台宿主机将无法启动该容器的第二份副本 | |
s.c.p.protocol | string | 端口协议,支持 TCP 和 UDP,默认使用 TCP | ||
s.c.env | list | 容器运行前虚设置的环境变量列表 | ||
s.c.e.name | string | 环境变量的名称 | ||
s.c.e.value | string | 环境变量的值 | ||
s.c.resources | object | 资源限制和资源请求的设置 | ||
s.c.r.limits | object | 资源限制的设置 | ||
s.c.r.l.cpu | string | CPU 限制,单位为 core 核数 | ||
s.c.r.l.memory | string | 内存限制,单位可以为 MiB,GiB 等 | ||
s.c.r.requests | object | 资源请求的设置 | ||
s.c.r.r.cpu | string | CPU 请求 | ||
s.c.r.r.memory | string | 内存请求 | ||
s.volumes | list | 在该 pod 上定义的共享存储列表 | ||
s.v.name | string | 共享存储卷的名称 | 1 | |
s.v.emptyDir | object | 类型为 emptyDir 的存储卷 | ||
s.v.hostPath | object | 类型为 hostPath 的存储卷 | ||
s.v.h.path | string | Pod 容器挂载的宿主机目录 | ||
s.v.secret | object | 类型为 secret 的存储卷 | 表示挂载集群预定义的 Secret 到容器内部 | |
s.v.configMap | object | 类型为 configMap 的存储卷 | 表示挂载集群预定义的 ConfigMap 到容器内部 | |
s.livenessProbe | object | 对 Pod 内各容器健康检查的设置 | 当探测几次无反应后,将依据重启策略干活 | |
s.l.exec | object | 对 Pod 内各容器健康检查的设置,exec 方式 | ||
s.l.e.command | string | exec 方式需要制定的命令或脚本 | ||
s.l.httpGet | object | 对 Pod 内各容器健康检查的设置,httpGet 方式 | ||
s.l.tcpSocket | object | 对 Pod 内各容器健康检查的设置,tcpSocket 方式 | ||
s.l.initDelaySeconds | number | 容器启动完成后首次探测的时间 | ||
s.l.timeoutSeconds | number | 对容器健康检查的探测等待超时时间,默认为1s | ||
s.l.periodSeconds | number | 对容器健康的定期探测时间设置,默认 10 s 一次 | ||
s.restartPolicy | string | Pod 的重启方式 | Always | Never | OnFailure,默认为 Always | |
s.nodeSelector | object | 设置 node 的 label,pod 将被指定到具有这些 Label 的 node 上 | ||
s.imagePullSecrets | object | pull 推送镜像时使用的 Secret 名称 | ||
s.hostNetwork | boolean | 是否使用主机网络模式,默认为false | 使用主机网络模式,该 Pod 将无法在宿主机上启动第二个副本 |
如果记不住
如果上面的详细清单记不住,可以使用如下kubectl explain工具随时查看:
#小提示:
# 在这里,可通过一个命令来查看每种资源的可配置项
# kubectl explain 资源类型 查看某种资源可以配置的一级属性
# kubectl explain 资源类型.属性 查看属性的子属性
[root@k8s-master01 ~]# kubectl explain pod
KIND: Pod
VERSION: v1
FIELDS:
apiVersion <string>
kind <string>
metadata <Object>
spec <Object>
status <Object>
[root@k8s-master01 ~]# kubectl explain pod.metadata
KIND: Pod
VERSION: v1
RESOURCE: metadata <Object>
FIELDS:
annotations <map[string]string>
clusterName <string>
creationTimestamp <string>
deletionGracePeriodSeconds <integer>
deletionTimestamp <string>
finalizers <[]string>
generateName <string>
generation <integer>
labels <map[string]string>
managedFields <[]Object>
name <string>
namespace <string>
ownerReferences <[]Object>
resourceVersion <string>
selfLink <string>
uid <string>
以上是关于K8S 创建pod yaml文件详解的主要内容,如果未能解决你的问题,请参考以下文章
K8S中 yaml 文件详解(poddeploymentservice)