k8s 资源文件参数介绍

ops/2024/9/25 8:31:06/

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: nulllabels:app: demo-nginxname: demo-nginx
spec:replicas: 1selector:matchLabels:app: demo-nginxstrategy: {}template:metadata:creationTimestamp: nulllabels:app: demo-nginxspec:containers:- image: nginx:1.23.0name: nginxresources: {}
status: {}

podyaml文件示例

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

常用字段含义

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

Kubernetes常见资源类型和命令

查看资源类型和命令

#查看资源
kubectl api-resources

在这里插入图片描述

#查看命令帮助
kubectl --help

在这里插入图片描述

常用资源分类和缩写

名称命令缩写
节点nodesno
名称空间namespacesns
pod资源podspo
pod控制器replicasetsrs
pod控制器deploymentsdeploy
服务发现-统一pod对外接口servicessvc
服务发现-统一pod对外接口ingressing
存储资源persistentvolumespv
存储资源persistentvolumeclaimspvc

常用资源操作命令

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

http://www.ppmy.cn/ops/36258.html

相关文章

Windows系统安装MySQL数据库详细教程

【确认本地是否安装mysql】 (1)按【winr】快捷键打开运行; (2)输入services.msc,点击【确定】; (3)在打开的服务列表中查找mysql服务,如果没有mysql服务&am…

element-plus el-time-picker 时间段选择(可多选)

实现一个如图的时间段选择器 处理好时间回显逻辑&#xff0c;组件内[‘’,‘’],后端数据[{startTime:‘’,endTime:‘’}]处理好加和减的显示逻辑 <template><div><div v-for"(item, index) in currentChoose" :key"index" class"fl…

ubuntu20部署3d高斯

3d高斯的链接&#xff1a;https://github.com/graphdeco-inria/gaussian-splatting 系统环境 ubuntu20的系统环境&#xff0c;打算只运行训练的代码&#xff0c;而不去进行麻烦的可视化&#xff0c;可视化直接在windows上用他们预编译好的exe去可视化。&#xff08;因为看的很…

JAVA每日面试题(二)

Java高级面试问题及答案 问题1: 请解释Java内存模型(JMM)及其重要性 答案&#xff1a; Java内存模型&#xff08;JMM&#xff09;是一个抽象的概念&#xff0c;它定义了Java程序中各种变量&#xff08;线程共享变量&#xff09;的访问规则&#xff0c;以及在并发环境下如何保…

30万买智驾车,选特斯拉还是华为?

文 | AUTO芯球 作者 | 雷歌 我真是佩服马斯克&#xff0c; 一趟24小时的北京出差&#xff0c;就解除了Model车系进入机关单位禁令的问题&#xff0c; 也打开了特斯拉FSD完全自动驾驶进入中国市场的大门&#xff0c; 给我我一天时间&#xff0c;估计一部剧都追不完&#xf…

深度学习实战76-基于目标检测YOLOv5模型的迁移学习使用方法,YOLOv5的原理与结构

大家好,我是微学AI,今天给大家介绍一下深度学习实战76-基于目标检测YOLOv5模型的迁移学习使用方法,YOLOv5的原理与结构。YOLOv5(You Only Look Once version 5)是一种先进的目标检测算法,基于深度学习的单阶段目标检测模型。它的主要原理是通过一次前向传播就同时预测图像…

力扣每日一题114:二叉树展开为链表

题目 中等 提示 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同…

如何创建git并上传

Git的配置和上传主要涉及以下步骤&#xff1a; 一、Git的配置 安装Git&#xff1a;首先&#xff0c;你需要在你的计算机上安装Git。这通常可以通过访问Git的官方网站并按照其提供的安装指南来完成。 注册GitHub账户&#xff08;如果你还没有的话&#xff09;&#xff1a;在Gi…