kubernetes系列(六) - 资源清单

1. kubernetes中的资源#

1.1 定义#

kubernetes中所有的内容都抽象为资源,资源实例化之后叫对象

1.2 资源类型#

1.2.1 工作负载型资源对象(workload)#

Copy
Pod,ReplicaSet,Deployment,StatefulSet DaemonSet,Job,Cronjob ...

1.2.2 服务发现及均衡资源对象#

Copy
Service,Ingress ...

1.2.3 配置与存储资源对象#

Copy
Volume(存储卷) CSI(容器存储接口,可以扩展各种各样的第三方存储卷) ConfigMap(当配置中心来使用的资源类型) Secret(保存敏感数据) DownwardAPI(把外部环境中的信息输出给容器)

1.2.4 集群级资源#

Copy
Namespace,Node,Role,ClusterRole RoleBinding,ClusterRoleBinding

1.2.5 元数据型资源#

定义

根据一些指标来进行操作

具体有

Copy
HPA,PodTemplate,LimitRange

2. 资源清单定义#

在kubernetes中,一般使用yaml格式的文件来创建我们预期期望的pod,这样的yaml文件我们一般称为资源清单


3. 常用字段解释说明(以pod为例)#

3.1 必须存在的属性#

参数名 字段类型 说明
version String 这里是指的是K8SAPI的版本,具体可以用kubectl api-versions查询,目前基本是v1
kind String 这里指的是yam文件定义的资源类型和角色,比如:Pod
metadata Object 元数据对象,固定值就写metadata
metadata.name String 元数据对象的名字,这里由我们编写,比如命名Pod的名字
metadata.namespace String 元数据对象的命名空间,由我们自身定义,如果不定义的话则默认是default名称空间
Spec Object 详细定义对象,固定值就写Spec
spec.containers[] List 这里是Spec对象的容器列表定义,是个列表
spec.containers[].name String 这里定义容器的名字
spec.containers[].image String 这里定义要用到的镜像名称

3.2 主要对象(这些属性比较重要,如果不指定的话系统会自动补充默认值)#

参数名 字段类型 说明
spec.containers[].name String 这里定义容器的名字
spec.containers[].image String 这里定义要用到的镜像名称
spec.containers[].imagePullPolicy String 定义镜像拉取策略,有Always、Never、IfNotPresent三个值可选
(1)Always:意思是每次都尝试重新拉取镜像
(2)Never:表示仅使用本地镜像
(3)lfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。
上面三个值都没设置的话,默认是Always
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 设置存储卷路经的读写模式,true或者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[].resources Object 指定资源限制和资源请求的值.这里开始就是设置容器的资源上限
spec.containers[].resources.limits Object 指定设置容器运行时资源的运行上限
spec.containers[].resources.limits.cpu String 指定CPU的限制,单位为core数,将用于docker run --cpu-shares参数,这里前面文章Pod资源限制有讲过
spec.containers[].resources.limits.memory String 指定MEM内存的限制,单位为MlB、GiB
spec.containers[].resources.requests Object 指定容器启动和调度时的限制设置
spec.containers[].resources.requests.cpu String CPU请求,单位为core数,容器启动时初始化可用数量
spec.containers[].resources.requests.memory String 内存请求,单位为MIB、GiB,容器启动的初始化可用数量

3.3 额外的参数项#

参数名 字段类型 说明
spec.restartPolicy String 定义Pod的重启策略,可选值为Always、OnFailure,
默认值为Always
1.Always:Pod一旦终止运行,则无论容器是如何终止的,kubelet服务都将重启它。
2.OnFailure:只有Pod以非零退出码终止时,kubelet才会重启该容器。
如果容器正常结束(退出码为0),则kubelet将不会重启它。
3.Never:Pod终止后,kubelet将退出码报告给Master,不会重启该Pod。
spec.nodeSelector Object 定义Node的Label过滤标签,以key:value格式指定,选择node节点去运行
spec.imagePullSecrets Object 定义pull镜像时使用secret名称,以name:secretkey格式指定
spec.hostNetwork Boolean 定义是否使用主机网络模式,默认值为false
设置true表示使用宿主机网络,不使用docker网桥,
同时设置了true将无法在同一台宿主机上启动第二个副本。

4. 通过kubectl explain资源有那些资源清单属性#

4.1 查看某种资源的一级属性#

Copy
# 查看pod下的可用的一级属性 kubectl explain pod

4.2 查看资源的二级属性#

Copy
# 查看pod下的spec的可用的属性 kubectl explain pod.spec
posted @   宝树呐  阅读(545)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示
CONTENTS