k8s 资源文件参数介绍

发布于:2024-05-14 ⋅ 阅读:(161) ⋅ 点赞:(0)

Kubernetes资源文件yaml参数介绍

yaml 介绍

  • yaml 是一个类似 XMLJSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点
  • 例如 SpringBoot 的配置文件 application.yml 也是一个 yaml 格式的文件

语法格式

  • 通过缩进表示层级关系
  • 不能使用tab进行缩进,只能使用空格
  • 一般开头缩进两个空格
  • 大小写敏感
  • 字符后缩进一个空格,如冒号、逗号
  • 如果需要将多段yaml配置放在一个文件中,中间要使用---分隔
  • 使用#表示注释

yaml文件的编写

  • 快速编写yaml文件,通过命令导出新的yaml文件
#创建nginx资源文件并且不启动资源
kubectl create deployment demo-nginx --image=nginx:1.23.0 -o yaml --dry-run=client > nginx.yaml

在这里插入图片描述

#查看nginx.yaml
cat nginx.yaml

在这里插入图片描述

精简版 yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: demo-nginx
  name: demo-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: demo-nginx
    spec:
      containers:
      - image: nginx:1.23.0
        name: nginx
        resources: {}
status: {}

podyaml文件示例

# pod的最基础的yaml文件最少需要以下的几个参数
apiVersion: v1 # API版本号,注意:具有多个,不同的对象可能会使用不同API
kind: Pod  # 对象类型,pod
metadata:  # 元数据
  name: string # POD名称
  namespace: string # 所属的命名空间
spec: # 资源内容的规范
  containers: # 容器列表
    - name: string # 容器名称
      image: string # 容器镜像

常用字段含义

必须存在的属性
参数名 字段类型 说明
version String k8s API的版本,可使用kubectl api-versions命令查询
kind String 指定k8s资源的类型,比如Pod、Deployment
metadata Object 元数据对象,固定写值metadata
metadata.name String 元数据对象的名字,比如命名pod的名字
metadata.namespace String 元数据对象的命名空间
spec Object 详细定义对象,固定值写Spec
spec.container[] array spec对象的容器列表定义
spec.container[].name String 容器对象的名字
spec.container[].image String 定义要用到的对象名称
spec 主要对象
spec.containers
参数名 字段类型 说明
spec.containers[].name String 定义容器的名字
spec.containers[].image String 定义要用到的镜像名称
spec.containers[].imagePullPolicy String 定义镜像拉取策略,有Always、Never、IfNotPresent三个值可选(1)Always:意思是每次都尝试重新拉取镜像 (2)Never:表示仅使用本地镜像 (3)IfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。 上面三个值都没设置的话,默认是Always。
spec.containers[].command[] list 指定容器启动命令,因为是数组可以指定多个,不指定则使用镜像打包时使用的启动命令。
spec.containers[].args[] list 指定容器启动命令参数,因为是数组可以指定多个
spec.containers[].workingDir String 指定容器的工作目录
spec.containers[].volumeMounts[].name String 指定可以被容器挂载的存储卷的名称
spec.containers[].volumeMounts[].mountPath String 指定可以被容器挂载的存储卷的路径
spec.containers[].volumeMounts[].readOnly String 设置存储卷路径的读写模式,ture 或者false,默认为读写模式
spec.containers[].ports[] list 指定容器需要用到的端口列表
spec.containers[].ports[].name String 指定端口名称
spec.containers[].ports[].containerPort String 指定容器需要监听的端口号
spec.containers[].ports[].hostPort String 指定容器所在主机需要监听的端口号,默认跟上面containerPort相同,注意设置了hostPort 同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突)
spec.containers[].ports[].protocol String 指定端口协议,支持TCP和UDP,默认值为TCP
spec.containers[].env[] list 指定容器运行前需设置的环境变量列表
spec.containers[].env[].name String 指定环境变量名称
spec.containers[].env[].value String 指定环境变量值
spec.containers[].env[].resources Object 指定资源限制和资源请求的值(这里开始就是设置容器的资源上限)
spec.containers[].env[].resources.limits Object 指定设置容器运行时资源的运行上限
spec.containers[].env[].resources.limits.cpu String 指定CPU的限制,单位为core数,将用于 docker run --cpu-shares参数
spec.containers[].resources.limits.memory String 指定MEM内存的限制,单位为MIB、GiB
spec.containers[].resources.requests Object 指定容器启动和调度时的限制设置
spec.containers[].resources.requests.cpu String CPU请求,单位为core数,容器启动时初始化可用数量
spec.containers[].resources.requests.memory String 内存请求,单位为MIB、GiB,容器启动的初始化可用数量
spec.volumes
参数名 字段类型 说明
spec.volumes[].name String 定义Pod的共享存储卷的名称,容器定义部分的spec.containers[].volumeMounts[].name的值跟这里是一样的
spec.volumes[].emptyDir Object 指定Pod的临时目录,值为一个空对象:emptyDir:{}
spec.volumes[].hostPath Object 指定挂载Pod所在宿主机的目录
spec.volumes[].hostPath.path String 指定Pod所在主机的目录,将被用于容器中mount的目录
spec.volumes[].secret Object 指定类型为secret的存储卷,secret意为私密、秘密的意思,很容易理解,它存储一些密码,token或者秘钥等敏感安全文件。挂载集群预定义的secret对象到容器内部。
spec.volumes[].configMap Object 指定类型为configMap的存储卷,表示挂载集群预定义的configMap对象到容器内部。
spec.volumes[].livenessProbe Object 指定Pod内容器健康检查的设置,当探测无响应几次后,系统将自动重启该容器。这个在前面的文章中有说,具体可以设置:exec、httpGet、tcpSocket
spec.volumes[].livenessProbe.exec Object 指定Pod内容器健康检查的设置,确定是exec方式
spec.volumes[].livenessProbe.exec.command[] String 指定exec方式后需要指定命令或者脚本,用这个参数设置
spec.volumes[].livenessProbe.httpGet Object 指定Pod内容器健康检查的设置,确定是httpGet方式
spec.volumes[].livenessProbe.tcpSocket Object 指定Pod内容器健康检查的设置,确定是tcp Socket方式
spec.volumes[].livenessProbe.initialDelaySeconds Number 容器启动完成后首次探测的时间设置,单位为s
spec.volumes[].livenessProbe.timeoutSeconds Number 对容器健康检查的探测等待响应的超时时间设置,单位为S,默认为1s。若超过该超时时间设置,则认为该容器不健康,会重启该容器。
spec.volumes[].livenessProbe.periodSeconds Number 对容器健康检查的定期探测时间设置,单位为S,默认10s探测一次。

Kubernetes常见资源类型和命令

查看资源类型和命令

#查看资源
kubectl api-resources

在这里插入图片描述

#查看命令帮助
kubectl --help

在这里插入图片描述

常用资源分类和缩写

名称 命令 缩写
节点 nodes no
名称空间 namespaces ns
pod资源 pods po
pod控制器 replicasets rs
pod控制器 deployments deploy
服务发现-统一pod对外接口 services svc
服务发现-统一pod对外接口 ingress ing
存储资源 persistentvolumes pv
存储资源 persistentvolumeclaims pvc

常用资源操作命令

命令分类 命令 翻译
基本命令 create 创建资源
delete 删除资源
edit 编辑资源
get 获取资源
patch 更新资源
explain 解释资源
运行和调试 run 运行指定的镜像
expose 暴露服务
describe 描述资源内部信息
logs 打印容器在 pod 中的日志
attach 进入运行中的容器
exec 执行容器中的一个命令
cp 在Pod内外复制文件
scale 扩容/缩容Pod的数量
autoscale 扩容/缩容Pod的数量
高级命令 apply rc
label 标签
其它命令 cluster-info 集群信息
version 版本

网站公告

今日签到

点亮在社区的每一天
去签到