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 ...
随机推荐
- 利用Git版本控制管理你的项目
准备工作 项目创建完成后,将项目版本控制起来,今后每个版本的迭代会非常清楚,同时也有助于项目进行协同开发. 还有一个十分重要的问题是:项目上线后,线上的运行的程序的配置与线下进行测试的配置文件是不一样 ...
- Spring bean的自动装配属性
bean的自动装配属性能简化xml文件配置. bean 的自动装配属性分为四种: 1.byName 2.byTyoe 3.constructor 4. autodetect byName: 它查找配置 ...
- 【奇技淫巧】linux 定时任务 crontab 反弹 shell
日期:2018-11-26 13:47:34 介绍:如何使用定时任务来反弹 shell? 0x01. 基本命令 参数 -e:编辑该用户的计时器设置: -l:列出该用户的计时器设置: -r:删除该用户的 ...
- 【MM系列】 MM60增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列] MM60增强 前言部分 大家可 ...
- Java回调机制的理解
用一句话讲明回调机制就是,在A类里面拥有一个类B的对象,调用B类的某个方法并把自身引用传入,在B类的这个方法里面又通过传进来的A的引用来调用A类的某个方法(这个最后调用的A类的方法就叫做回调方法). ...
- LSTM用于MNIST手写数字图片分类
按照惯例,先放代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 ...
- tensorflow学习之tf.placeholder
placeholder函数相当于一个占位符,tf.placeholder(dtype, shape=None, name=None) dtype:数据类型.常用的是tf.float32,tf.floa ...
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题
问题描述: 这个实际上是最后一部的问题,将生成的共享库文件放入到了/usr/local/opencv-arm/lib下,并且设置了LD_LIBRARY_PATH中为/usr/local/opencv- ...
- python 并发编程 多进程 互斥锁 目录
python 并发编程 多进程 互斥锁 模拟抢票 互斥锁与join区别
- python控制流-名词解释
一.控制流的元素 控制流语句的开始部分通常是“条件”,接下来是一个代码块,称为“子句”. 二.控制流的条件 条件为了判断下一步如何进行,从而求布尔值的表达式.几乎所有的控制流语句都使用条件. 三.代码 ...