k8s yaml文件类型和介绍
官方文档:https://kubernetes.p2hp.com/docs/tasks/configure-pod-container/assign-memory-resource/
这个是官方文档,可以根据需求和拓展进行了解
yaml
apiVersion: v1
kind: Pod
metadata:
name: memory-demo
namespace: mem-example
spec:
containers:
- name: memory-demo-ctr
image: polinux/stress
resources:
requests:
memory: "100Mi"
limits:
memory: "200Mi"
command: ["stress"]
args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]
这是自己在网上找的大佬的文档
参数名 | 类别 | 字段说明 |
---|---|---|
apiVersion | String | k8s API的版本,可以用kubectl api versions的命令查询 |
kind | String | yam 文件定义的资源类型和角色 |
metadata | Object | 元数据对象,下面是他的属性 |
metadata.name | String | 元数据对象的名字,比如说pod的名称 |
Spec | Object | 详细定义对象 |
spec.containers[] | list | 定义Spec对象的容器列表 |
spec.containers[].name | String | 为列表中的某个容器定义名称 |
spec.containers[].image | String | 为列表中的某个容器定义需要的镜像名称 |
spec.containers[].imagePullPolicy | String | 定义镜像的拉取策略,有Always、Never、lfNotPresent - Always(默认):意思是每次都尝试重新拉取镜像 - Nerver:表示仅使用本地镜像 -lfNotpresent:如果本地有镜像就使用本地镜像,如果没有就在线拉取镜像 |
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 | string | 设置存储卷路径的读写模式,ture或者false,默认是读写模式 |
spec.containers[].ports[] | list | 指定容器需要用到的端口列表 |
spec.containers[].ports[].protocol | string | 指定端口协议,支持TCP和UDP,默认值为TCP |
spec.containers[].env[] | list | 指定容器运行前需要设置的环境变量列表 |
spec.containers[].env[].name | string | 指定环境变量的名称 |
spec.containers[].env[].value | string | 指定环境变量的值 |
spec.containers[].resources | Object | 指定资源限制和资源请求的值(这里开始就是设置容器的资源上线) |
spec.containers[].resources[].limits | Object | 指定容器运行时资源的运行上限 |
spec.containers[].resourtces[].limits[].cpu | string | 指定cpu的限制,单位为Core数,将用于docker run-cpu-shares参数 |
spec.containers[].resourtces[].limits[].memory | string | 指定内存的限制,单位为MIB,GiB |
spec.containers[].resourtces[].requests | Object | 指定容器启动和调度时的限制设置 |
spec.containers[].resourtces[].requests[].cpu | string | CPU请求,单位为core数,容器启动时初始化可用数量 |
spec.containers[].resourtces[].requests[].memory | string | 内存请求,单位为MiB,GiB,容器启动的初始化可用数量 |
spec.restartPolicy | string | 定义pod的重启策略,可选值为Always、ONfailure、Never,默认值为Alays -Alays:pod一旦终止运行,则无论容器是如何终止的,kubelet服务都将重启他 -ONfailure:只有pod以非零退出码终止时,kubelet才会重启该容器,如果容器正常结束(退出码为0),则不会重启该容器 -Never:pod终止后,kubelet将退出码报告给master,不会重启该pod |
spec.nodeSelector | Object | 定义Node的label过滤标签,以key:value格式指定 |
spec.imagePullSecrets | Object | 定义pull镜像时使用secret名称,以name:secretkey格式指定 |
spec.hostNetwork | Boolean | 定义是否使用主机网络模式,默认值为false。设置true表示使用宿主机网络,不使用docker网桥,同时设置了true将无法再同一台宿主机上启动第二个副本 |
yaml
apiVersion: v1 # API 版本
kind: Pod # 资源对象类型,这里是 Pod
metadata:
name: nginx-demo # Pod 的名称
labels: # Pod 的标签
type: app # 自定义 label 标签,名字为 type,值为 app
version: 1.0.0 # 自定义 label 标签,描述 pod 版本号
namespace: 'default' # 命名空间
spec:
containers: # Pod 中的容器描述
- name: nginx # 容器的名称
image: nginx:1.7.9 # 使用的 Docker 镜像及版本
imagePullPolicy: IfNotPresent # 镜像拉取策略,表示本地没有时才拉取
command: # 容器启动命令
- nginx
- '-g'
- 'daemon off;' # 使 nginx 在前台运行,避免容器退出
workingDir: /usr/share/nginx/html # 容器的工作目录
ports: # 容器暴露的端口
- name: http # 端口名称
containerPort: 80 # 容器内暴露的端口
protocol: TCP # 使用的协议
env: # 容器的环境变量
- name: JVM_OPTS
value: '-Xms128m -Xmx128m' # 设置 JVM 启动参数
resources: # 资源请求和限制
requests: # 最少需要多少资源
cpu: 100m # 请求最少 CPU 0.1 核
memory: 128Mi # 请求最少内存 128Mi
limits: # 最大可使用资源
cpu: 200m # 限制最多 CPU 0.2 核
memory: 256Mi # 限制最多内存 256Mi
restartPolicy: OnFailure # 重启策略,仅在失败时重启
然后运行这个yaml文件让其进行构建即可
yaml
kubectl apply -f 文件名