一、常见资源对象

常见的资源对象:(包括但不仅限于)

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资源清单的更多相关文章

  1. k8s资源清单定义入门

    1.资源分类 a.workload型资源:service.pod.deployment.ReplicaSet.StatefulSet.Job.Cronjob; b.服务发现及服务均衡资源型资源:Ser ...

  2. k8s资源清单基础

    资源清单介绍 创建资源的方法  apiserver仅接收JSON格式的资源定义  yaml格式提供配置清单 apiserver可自动把yaml转换成json格式数据 资源清单五个一级字段   1.ap ...

  3. 1.k8s.资源清单

    #k8s常用资源 工作负载:Pod,rs(ReplicasSet),deploy(Deployment),sts(StatefulSet),ds(DaemonSet),Job,Cronjob 服务发现 ...

  4. k8s学习笔记之四:资源清单定义入门

    第一章.k8s中的资源 1.什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 2.在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet D ...

  5. 四,k8s集群资源清单定义入门

    目录 资源对象 创建资源的方法 清单帮助命令 创建测试清单 资源的三种创建方式 资源对象 workload:Pod, ReplicaSet, Deployment, StatefulSet, Daem ...

  6. Kubernetes【K8S】(三):资源清单

    K8S中的资源 K8S中所有的内容都抽象为资源,资源实例化之后叫做对象.一般使用yaml格式的文件来创建符合我们预期的pod,这样的yaml文件我们一般成为资源清单. 名称空间级资源 工作负载型资源( ...

  7. 1.k8s概述、安装、名词解释、资源清单

    一.k8s概述 1.简介 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernete ...

  8. k8s学习笔记之五:Pod资源清单spec字段常用字段及含义

    第一章.前言 在上一篇博客中,我们大致简述了一般情况下资源清单的格式,以及如何获得清单配置的命令帮助,下面我们再讲解下清单中spec字段中比较常见的字段及其含义 第二章.常用字段讲解 spec.con ...

  9. k8s学习-资源清单

    4.kubernetes使用 4.1.资源清单 api 文档.api 描述 4.1.2.说明 必须存在的属性 主要的对象 额外的参数项 例子 vim my-app.yml apiVersion: v1 ...

随机推荐

  1. org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping clas

    在Hibernate中使用annotation出现错误.如题目所示. HibernateSessionFactory类中: //    private  static Configuration co ...

  2. wsl 下安装docker

    docker for windows本身其实是可以直接用的,但是仍然有很多不足,比如说:权限问题.没有docker.sock文件.文件编码问题等.而win10自带的wsl可以非常完美地解决这些问题. ...

  3. 嵌套的frame

    自动化的测试中,iframe的嵌套也是很常见的,对于嵌套的iframe,我们处理的方式是先进入到iframe的父节点, 再进入到子节点,然后可以对子节点里面的对象进行处理和操作.如下的html代码效果 ...

  4. cocos2dx基础篇(9) 滑块控件CCControlSlider

    [3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)CCControlEvent 改为强枚举 Control::EventType (4)CCControlEvent ...

  5. Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.4 Predicates and Quantifiers

    The statements that describe valid input are known as preconditions and the conditions that the outp ...

  6. 6.文件所有权和权限----免费设置匿名----Windows键盘记录器----简介和python模块

    文件所有权和权限 touch --help cd Desktop mkdir Folder cd Folder clear touch Test1 Test2 Test3 Test4 ls ls -l ...

  7. js文件编码 的坑

  8. ipad已停用 连接itunes怎么办

    问题描述: ipad 开机密码多次输入出错后,提示 ipad已停用 连接itunes 解决方法: 参考: https://jingyan.baidu.com/article/fb48e8bee9ef4 ...

  9. Redis的 SLAVEOF 命令

    SLAVEOF host port SLAVEOF 命令用于在 Redis 运行时动态地修改复制(replication)功能的行为. 通过执行 SLAVEOF host port 命令,可以将当前服 ...

  10. webpack4下url-loader打包图片问题

      webpack.condig.js: const path = require('path'); //导入插件 const VueLoaderPlugin = require('vue-loade ...