常用字段解释
apiVersion(string) : 表示API的版本号。根据集群的版本输入,1.17及以上版本的集群中无状态应用apiVersion格式为apps/v1, 1.15及以下版本的集群中无状态应用apiVersion格式为extensions/v1beta1
kind(string): 指定资源类型,如Pod,Deploymentm,Service等
metadata(object): 自定义metadata
metadata.name(string): deployment的名称
metadata.labels(可选): 为对象添加Label
metadata.namespace(可选):对象的命名空间,由用户自定义
spec(object): 对象的详细信息
spec.restartPolicy(string): pod重启策略。Always: pod一旦退出就要进行重启,OnFailure:只要非正常退出才进行重启, Never: 退出后不再拉起
spec.hostNetwork(bool): 是否使用主机网络,默认值为false,设置为true,表示与主机在同一个网络空间
spec.nodeSelector(object): 标签选择器,k-v形式
spec.containers[](list) : 容器对象列表
spec.containers[].name(string): 容器的名称
spec.containers[].image(string): 容器使用的镜像
spec.containers[].imagePullPolicy(string): Always(每次都重新下载)、IfNotPresent(如果本地存在则使用本地镜像,不重新拉取)、Never(表示仅使用本地镜像)
spec.containers[].command[](list):指定容器启动命令,可以是多个命令,如果不指定则使用镜像中启动命令
spec.containers[].args[](list):启动命令参数,可以多个
spec.containers[].workingDir(string):容器的工作目录
spec.containers[].volumeMounts[](list):指定容器的挂载卷,可以多个
spec.containers[].volumeMounts[].name(string):挂载卷名称
spec.containers[].volumeMounts[].mountPath(string):挂载卷路径
spec.containers[].volumeMounts[].readOnly(bool):读写模式,true只读(默认值),false读写
spec.containers[].ports[](list):容器用到端口
spec.containers[].ports[].name(string): 端口名称
spec.containers[].ports[].containerPort(number):端口号
spec.containers[].ports[].hostPort(number):指定host主机使用端口。主要适用于端口映射,默认值是和容器内端口相同
spec.containers[].resources(object):用于设置资源限制和资源请求
spec.containers[].resources.limits.cpu(string):对cpu的限制,k8s将一个逻辑cpu划分为1000个millicore(毫核)。例如 limits.cpu=500m相当于0.5个cpu。limits.cpu=2表示占用2个cpu
spec.containers[].resources.limits.memory(string):对内存的限制
spec.containers[].resources.requests(object):容器启动和调度时的限制设置
spec.containers[].resources.requests.cpu(string):对cpu的限制,k8s将一个逻辑cpu划分为1000个millicore(毫核)。例如 limits.cpu=500m相当于0.5个cpu。limits.cpu=2表示占用2个cpu
spec.containers[].resources.requests.memory(string):对内存的限制
示例
apiVersion: extensions/v1beta1 # 指定api版本,此值必须在kubectl apiversion中
kind: Pod # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
name: web04-pod # 资源的名字,在同一个namespace中必须唯一
labels: # 设定资源的标签
k8s-app: apache
version: v1
kubernetes.io/cluster-service: "true"
annotations: # 自定义注解列表
- name: String # 自定义注解名字
spec: # 指定该资源的内容
restartPolicy: Always # 表明该容器一直运行,默认k8s的策略,在此容器退出后,会立刻创建一个相同的容器
nodeSelector: # 节点选择,先给主机打标签kubectl label nodes kube-node1 zone=node1
zone: node1
containers:
- name: web04-pod # 容器的名字
image: webapache # 容器使用的镜像地址
imagePullPolicy: Never # 三个选择Always、Never、IfNotPresent,每次启动时检查和更新(从registery)images的策略,
# Always,每次都检查
# Never,每次都不检查(不管本地是否有)
# IfNotPresent,如果本地有就不检查,如果没有就拉取
command: ['sh'] # 启动容器的运行命令,将覆盖容器中的Entrypoint,对应Dockfile中的ENTRYPOINT
args: ["$(str)"] # 启动容器的命令参数,对应Dockerfile中CMD参数
env: # 指定容器中的环境变量
- name : str # 变量的名字
value: "/etc/run.sh" #变量的值
resources: # 资源管理
requests: # 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
cpu: 0.1 # CPU资源(核数),两种方式,浮点数或者是整数+m,0.1=100m,最少值为0.001核(1m)
memory: 32Mi # 内存使用量
limits: # 资源限制
cpu: 0.5
memory: 32Mi
ports:
- containerPort: 80 # 容器开发对外的端口
name: httpd # 名称
protocol: TCP
livenessProbe: # pod内容器健康检查的设置
httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常
path: / # URI地址
port: 80
host: 127.0.0.1 # 主机地址
scheme # HTTP
initialDelaySeconds: 180 # 表明第一次检测在容器启动后多长时间后开始
timeoutSeconds: 5 # 检测的超时时间
periodSeconds: 15 # 检查间隔时间
# 也可以用这种方法
# exec: # 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常
# command:
# - cat
# - /tmp/health
# 也可以用这种方法
# tcpSocket: // 通过tcpSocket检查健康
# port: number
lifecycle: # 生命周期管理
postStart: # 容器运行之前运行的任务
exec:
command:
- 'sh'
- 'yum upgrade -y'
preStop: # 容器关闭之前运行的任务
exec:
command: ['service httpd stop']
volumeMounts:
- name: volume # 挂载设备的名字,与volumes[*].name 需要对应
mountPath: /data # 挂载到容器的某个路径下
readOnly: True
volumes: # 定义一组挂载设备
- name: volume # 定义一个挂载设备的名字
# meptyDir: {}
hostPath:
path: /opt # 挂载设备类型为hostPath,路径为宿主机下的/opt,这里设备类型支持很多种
本文详细解释了Kubernetes YAML文件中的关键字段,包括apiVersion、kind、metadata、spec及其子字段,如restartPolicy、nodeSelector、containers的配置,如image、command、volumeMounts和resources的CPU与内存限制。这些字段对于理解和配置K8s资源至关重要。
3989

被折叠的 条评论
为什么被折叠?



