2.k8s资源清单
一、常见资源对象
常见的资源对象:(包括但不仅限于)
l Workload: Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob
l 服务发现及均衡:Service,Ingress……
l 配置与存储:Volume,CSI(扩展第三方存储的接口)
ConfigMap,Secret
DownwardAPI
l 集群级资源:Namespace,Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding
l 元数据型资源:HPA,PodTemplate,LimitRange
二、创建资源的方法
创建资源的方法:
1、apiServer仅接受Json格式的资源定义;
2、yaml格式提供配置清单,apiserver可自动将其转为json格式,而后再提交执行。
大部分资源的配置清单都有5个一级字段:
apiVersion:group/version(通过$ kubectl api-versions获取所有支持的apiVerison)
kind:资源类别
metadata:元数据
name
namespace
labels 标签,键值
annotations 资源注解
spec:不同的资源类别,此字段不完全相同;定义用户期望的状态
status:当前状态,current state;本字段由k8s维护,用户不能自己定义。
注:每个资源的引用PATH:/api/GROUP/VERSION/namespaces/NAMESPACE/TYPE/NAME(大写需替换为实际值)
[kubelet@master ~]$ kubectl explain pod.metadata #获取pod的资源清单的定义字段
三、资源清单spec字段
# kubectl explain pods.spec.containers #查看定义字段
Pod资源:
spec.containers <[]object>
spec.containers.name <string> #pod的名称,必须字段,名称唯一且对象创建后不可以被修改
spec.containers.image <string> #镜像仓库的路径/镜像的名称:镜像的标签
spec.containers.image.imagePullPolicy <string> #镜像的下载策略。有三种:Always(总是去仓库下载) ,Never(从不去仓库下载) , IfNotPresent(如果本地没有就去仓库下载)
默认是"IfNotPresent" 但是,如果镜像的标签是latest,则总会是"Always,并且对象一旦被创建,这个字段不允许被改变
spec.containers.ports: #容器公开的端口列表。在这里公开端口可以为系统提供关于容器使用的网络连接的额外信息,但主要是提供信息。在这里不指定端口不会阻止该端口被公开。任何监听容器内默认的“0.0.0.0”地址的端口都可以从网络访问
spec.containers.ports.containerPort <integer> -required- #pod暴露的端口,此端口仅是额外的信息,对端口是否被暴露没有影响
spec.containers.ports.hostPort <integer> #主机上公开的端口
spec.containers.ports.protocol <string> #端口的协议,没给协议,默认是tcp协议
spec.containers.ports.hostIP <string> #指定要绑定的主机
spec.containers.command <[]string> #运行的程序,类似于docker中的entrypiont,并且这里的命令不会运行在shell中,如果没有这个字段docker镜像会运行自己entrypiont中的指令
spec.containers.args <[]string> #向docker镜像中传递参数 如果定义了这个字段,docker镜像中cmd命令不会被执行,如果引用变量使用$(VAR_NAME)格式引用,如果想使用命令引用的的方式,需要使用$$(VAR_NAME)方式来引用
#关于args和command的官方文档链接:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/
Tips: 修改镜像中的默认应用使用command,args。command args 分别对应image entrypoint image cmd。优先生效自定义的command,args,如果未定义command,定义了args,则args传递给image entrypoint。
pod.spec.containers.volumeMounts
pod.spec.containers.volumeMounts.name
pod.spec.containers.volumeMounts.mountPath #可以被容器挂载的存储卷的路径,路径不能包含':' 符号
pod.spec.containers.volumeMounts.subPath #可以被容器挂载的存储卷的路径,并且不会覆盖挂载点中的文件
pod.spec.containers.volumeMounts.readOnly #是否只读,默认为false
pod.spec.containers.resources
spec.containers.resources.limits #资源限制
spec.containers.resources.limits.cpu : CPU 上限,可以短暂超过,容器也不会被停止
spec.containers.resources.limits.memory :内存上限,不可以超过;如果超过,容器可能会被终止或调度到其他资源充足的机器上
spec.containers.resources.requests #资源需求
spec.containers.resources.requests.cpu : CPU 请求,也是调度 CPU 资源的依据, 可以超过
spec.containers.resources.requests.memory :内存请求,也是调度内存资源的依据, 可以超过;但如果超过,容器可能会在 Node 内存不足时清理
# kubectl label --help #给资源对象打标签
# 标签key=value,
key只能字母,数字,“_”,“-”,“.”, value可以为空,key和value只能以字母和数字开头及结尾,;key和value最多只能63个字符。键前缀必须使用域名,且不能大于253个字符。
# 标签选择器:
等值关系:=,==,!=
集合关系: KEY in (VALUE1,VALUE2,VALUE3)
KEY notin (VALUE1,VALUE2,VALUE3) # 不存在KEY也符合条件
节点标签选择器:
spec.nodeSelector <map[string]string> #节点标签选择器
pod.spec.nodeSelector: #指定对象的调度节点,节点必须存在
annotations:
与label不同的地方在于,不能用于挑选资源对象,仅用于为对象提供“元数据”。字符没有键长度,值长度限制。
四、Tips
# kubectl get pod pod-id –o yaml #以yaml形式输出pod清单
定义资源的三种方式:Kubectl 命令行、命令式资源清单、声明式资源清单
2.k8s资源清单的更多相关文章
- k8s资源清单定义入门
1.资源分类 a.workload型资源:service.pod.deployment.ReplicaSet.StatefulSet.Job.Cronjob; b.服务发现及服务均衡资源型资源:Ser ...
- k8s资源清单基础
资源清单介绍 创建资源的方法 apiserver仅接收JSON格式的资源定义 yaml格式提供配置清单 apiserver可自动把yaml转换成json格式数据 资源清单五个一级字段 1.ap ...
- 1.k8s.资源清单
#k8s常用资源 工作负载:Pod,rs(ReplicasSet),deploy(Deployment),sts(StatefulSet),ds(DaemonSet),Job,Cronjob 服务发现 ...
- k8s学习笔记之四:资源清单定义入门
第一章.k8s中的资源 1.什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 2.在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet D ...
- 四,k8s集群资源清单定义入门
目录 资源对象 创建资源的方法 清单帮助命令 创建测试清单 资源的三种创建方式 资源对象 workload:Pod, ReplicaSet, Deployment, StatefulSet, Daem ...
- Kubernetes【K8S】(三):资源清单
K8S中的资源 K8S中所有的内容都抽象为资源,资源实例化之后叫做对象.一般使用yaml格式的文件来创建符合我们预期的pod,这样的yaml文件我们一般成为资源清单. 名称空间级资源 工作负载型资源( ...
- 1.k8s概述、安装、名词解释、资源清单
一.k8s概述 1.简介 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernete ...
- k8s学习笔记之五:Pod资源清单spec字段常用字段及含义
第一章.前言 在上一篇博客中,我们大致简述了一般情况下资源清单的格式,以及如何获得清单配置的命令帮助,下面我们再讲解下清单中spec字段中比较常见的字段及其含义 第二章.常用字段讲解 spec.con ...
- k8s学习-资源清单
4.kubernetes使用 4.1.资源清单 api 文档.api 描述 4.1.2.说明 必须存在的属性 主要的对象 额外的参数项 例子 vim my-app.yml apiVersion: v1 ...
随机推荐
- hook C++
Intercepting Calls to COM Interfaces(hook com接口) 通过COM组件IFileOperation越权复制文件 代码注入之远程线程篇 使用VC++通过远程进程 ...
- ES6中变量的解构赋值
1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 输出: 上面代码表示,可以从数组中提取值,按照对应位置,对变 ...
- 我们建了一个 Golang 硬核技术交流群(内含视频福利)
目录 目录 Golang 是什么? 我们为什么选择 Golang? Golang 是云时代的宠儿! 我们搞了一场 Golang 入门直播 Golang 是什么? Golang 是谷歌 2009 年发布 ...
- 中国MOOC_零基础学Java语言_第4周 循环控制_2念整数
2 念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意, ...
- oracle ogg--ogg搭建过程中遇到的错误及处理
1 PRVF-0002 : Could not retrieve local nodename---# Begin Stacktrace #---------------------------ID: ...
- C#新特性span 和 Tuple
span 可用于高性能字符串分割等 https://www.cnblogs.com/lonelyxmas/p/10171869.html https://www.codemag.com/article ...
- Java多线程学习——知识点积累
开启多线程时,每一个线程都拥有自己的工作空间,每个工作空间都单独的和主存打交道. 并发的概念:多个线程同时操作同一个对象 当产生并发时,如果从工作空间写入数据到内存的线程时间片用完了,其他线程再从主存 ...
- Java多线程学习——sleep和yield
Thread.sleep(); Thread.yield(); 相同点: 让线程暂停运行. 都是静态方法,可以直接调用. 不同点: sleep让线程从运行状态进入阻塞状态,但是不放开手中的资源. yi ...
- Java数据结构之栈(Stack)
1.栈(Stack)的介绍 栈是一个先入后出(FILO:First In Last Out)的有序列表. 栈(Stack)是限制线性表中元素的插入和删除只能在同一端进行的一种特殊线性表. 允许插入和删 ...
- 本地代码推送到远程git仓库
# 1. 在远程新建一个代码仓库(如码云,github..) # 2. 将本地代码提交 git init git add * git commit -am "first init" ...