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(大写需替换为实际值)

[[email protected] ~]$ 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 命令行、命令式资源清单、声明式资源清单

原文地址:https://www.cnblogs.com/cmxu/p/12066358.html

时间: 2024-11-06 09:53:46

2.k8s资源清单的相关文章

k8s资源清单定义入门

1.资源分类 a.workload型资源:service.pod.deployment.ReplicaSet.StatefulSet.Job.Cronjob; b.服务发现及服务均衡资源型资源:Service.Ingress; c.配置与存储型资源:Volume.ConfigMap.Secret.DownwardAPI.CSI(容器存储接口,可以扩展各种第三方的存储卷) d.集群级资源:Namespace.Node.Role.rolebinding.clusterrolebinding; e.元

k8s资源清单

一. k8s中的资源 1.1 资源的定义 K8s 中所有的内容都抽象为资源, 资源实例化之后,叫做对象 1.2  K8S 中存在哪些资源 分类 1)名称空间级别 工作负载型资源( workload ): Pod.ReplicaSet.Deployment.StatefulSet.DaemonSet.Job. CronJob ( ReplicationController 在 v1.11 版本被废弃 ) 服务发现及负载均衡型资源( ServiceDiscovery LoadBalance ): S

Kubernetes之资源清单定义

目录 Kubernetes之资源清单定义 常用资源 利用配置清单定义自主式Pod资源 Kubernetes之资源清单定义 常用资源 工作负载型 Pod,ReplicaSet,StatefulSet,DaemonSet,Job,Cronjob 服务发现及均衡 Sevice,Ingress,... 配置与存储 Volume,CSI,ConfigMap,Secret,DownwardAPI 集群级资源 Namespace,Node,Role,ClusterRole,RoleBinding,Cluste

kubernetes(k8s)资源管理/清单配置基础

控制平面: API-Service: 运行于6443端口 接入master节点地址的6443端口进行交互 用户认证, 双向认证 Scheduler Controller 工作平面:kube-proxy每个节点都有 核心资源: Pod Pod Controller deployment Service 和解循环(Reconciliation Loop) 客户端向API Server提交POST请求以创建对象 通过JSON格式的body提交 Yaml格式需要事先完成向JSON的转换 对象匹配信息保存

k8s资源监控metrics-server

简述: 在k8s早期版本中,对资源的监控使用的是heapster的资源监控工具. 但是从 Kubernetes 1.8 开始,Kubernetes 通过 Metrics API 获取资源使用指标,例如容器 CPU 和内存使用情况. 这些度量指标可以由用户直接访问,例如通过使用kubectl top 命令,或者使用集群中的控制器. Metrics API: 通过 Metrics API,您可以获得 node 或 pod 当前的资源使用情况(但是不存储). metres-server比 heapst

第六章 资源清单

简介:在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单 一.常用字段解释 1.必须存在的属性(必须写) 2.主要对象(有的可不写,有默认值) 3.额外的参数项 4.字段配置格式 apiVersion <string> #表示字符串类型 metadata <Object> #表示需要嵌套多层字段 labels <map[string]string> #表示由k:v组成的映射 finalizers <[]st

Kubernetes/5.Pod资源清单配置基础

Pod资源清单配置基础 Docker中我们都说容器.docker,大家耳熟能详.但到了kubernetes中,这个专有名词仿佛就被"取而代之"了.kubernetes的语境中,我们将一个容器集合称之为Pod What is Pod? Pod的特征 Pod对象的配置格式 Pod对象的申明类型 命令补充 三种网络代理方式 参考文档 备注 1.What is Pod? 那什么是Pod?如图所示,Pod中有一个pause容器,和一堆业务容器,他们有各自的PID.MOUNT和USER,但他们共享

4、kubernetes资源清单快速入门190625

一.资源清单概念 资源/对象的类型 工作负载型资源:Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob, ... 服务发现及均衡性资源:Service, Ingress, ... 配置与存储型资源:Volume, CSI, ConfigMap, DownwardAPI 集群级资源:Namespace, Node, Role, ClusterRole, RoleBinding, ClusterRoleBinding 元

kubernetes资源清单定义

kubernetes资源清单定义 工作负载型资源(workload): Pod ReplicaSet Deployment StatefulSet DaemonSet Job CronJob (ReplicationController在v1.11版本被废弃) 服务发现及负载均衡型资源: ServiceDiscovery LoadBalance Service Ingress, ... 配置与存储型资源: Volume(存储卷) CSI(容器存储接口,可以扩展各种各样的第三方存储卷) 特殊类型的