zoukankan      html  css  js  c++  java
  • K8S中的Objects

    K8S中yaml文件主要由5个部分组成:
    apiVersion - 创建该对象所使用的 Kubernetes API 的版本
    kind - 想要创建的对象的类别
    metadata - 帮助唯一性标识对象的一些数据
    spec: spec 的精确格式对每个 Kubernetes 对象来说是不同的,包含了特定于该对象的嵌套字段。
    status。

    一、metadata
    每个metadata必须要包含以下字段:
    1、namespace:默认值default,在多个用户之间划分集群资源的一种方法,名字空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑名字空间。
    2、name:
    3、uid
    非必须的字段:
    1、annotations(注解):为对象附加元数据,键/值对形式。例如,项目名称、版本和构建信息
    2、creationTimestamp:对象被创建的时间
    3、generateName: k8s生成唯一的name给我们
    4、labels:键/值对形式,标签旨在用于指定对用户有意义且相关的对象的标识属性。 标签可以用于组织和选择对象的子集
    5、ownerReferences:指定属主和附属之间的关系,只能在同一个namespace下指定
    6、resourceVersion:代表该资源在下层数据库中存储的版本
    7、generation:表示所需状态的特定生成的序列号。由系统设置,按资源单调递增。
    8、deletionTimestamp:对象被删除的时间,由系统设定

    二、spec 表示对象的描述
    1、Affinity 亲和性 https://blog.csdn.net/horsefoot/article/details/72827783
    nodeAffinity:描述node亲和性调度规则
    requiredDuringSchedulingIgnoredDuringExecution类型是一个强行要求,表示节点必须满足条件才能够部署Pod
    preferredDuringSchedulingIgnoredDuringExecution是一个非强行要求,调度器会尝试去满足这个节点亲和性条件,但是如果没有满足节点亲和性条件的节点,那么就会将Pod部署在其他节点上。

    podAffinity:描述pod亲和性调度规则
        preferredDuringSchedulingIgnoredDuringExecution:调度器会尝试去满足亲和性条件,但是如果没有满足条件的节点,那么就会将Pod部署在其他节点上
        requiredDuringSchedulingIgnoredDuringExecution:强行要求,表示必须满足才能够部署Pod
    
    podAntiAffinity:描述pod反亲和性调度规则
        preferredDuringSchedulingIgnoredDuringExecution:调度器会尝试去满足反亲和性条件,但是如果没有满足条件的节点,那么就会将Pod部署在其他节点上
        requiredDuringSchedulingIgnoredDuringExecution:强行要求,表示Pod不能部署在这样节点上,这个节点上正在运行的Pod中满足某种条件
                labelSelector:一组资源上的标签查询
                   -  matchExpressions
                   -  matchLabels
                namespaceSelector
                namespaces
                topologyKey
    

    2、containers:表示属于pod的容器列表,一个pod中至少有一个容器,不能被更新
    字段如下:
    args:字符串数组类型
    command:字符串数组类型
    env: EnvVar 数组
    name
    value
    valueFrom

    以上三个字段含义如下:
     如果在容器配置中没有设置 command 或者 args,那么将使用 Docker 镜像自带的命令及其参数。
     如果在容器配置中只设置了 command 但是没有设置 args,那么容器启动时只会执行该命令, Docker 镜像中自带的命令及其参数会被忽略。
     如果在容器配置中只设置了 args,那么 Docker 镜像中自带的命令会使用该新参数作为其执行时的参数。
     如果在容器配置中同时设置了 command 与 args,那么 Docker 镜像中自带的命令及其参数会被忽略。 容器启动时只会执行配置中设置的命令,并使用配置中设置的参数作为命令的参数。
    

    envFrom:用于在容器中填充环境变量的源的列表
    image: docker镜像名
    imagePullPolicy: docker镜像拉取策略,Always, Never, IfNotPresent.
    lifecycle
    livenessProbe:用于pod健康检查探针
    name:容器名称,一个pod必须唯一容器名
    ports: 从容器暴露出的端口
    resources:计算容器所需要的资源
    limits: 最大需要的资源限制
    requests:需要最低的资源
    securityContext:pod运行时携带的安全项
    privileged:boolean,默认false,如果true,会在权限模式下运行容器
    terminationMessagePath:可选,容器终止时,日志记录到的文件路径
    terminationMessagePolicy:终止log输出形式,默认file
    volumeMounts:挂载到容器文件系统的pod 数据卷
    mountPath: 挂载路径
    name: 必须跟volumn的name一致
    readOnly:只读

    3、dnsPolicy:string类型,给pod设置 DNS 策略. 默认 "ClusterFirst",其他还有'ClusterFirstWithHostNet', 'Default' , 'None'.
    4、enableServiceLinks:表示service相关信息是否要注册到pod的环境变量中,默认true
    5、hostname:指定pod的主机名,如果没有设置,会自动被设定系统定义值
    6、initContainers:pod的初始化容器列表,也叫中间容器,先于应用容器创建,字段同container
    7、nodeName:string类型:用来将pod调度到指定nodename的节点上
    8、nodeSelector:object类型: 是节点选择约束的最简单推荐形式,包含键值对的映射。为了使 pod 可以在某个节点上运行,该节点的标签中 必须包含这里的每个键值对(它也可以具有其他标签)。 最常见的用法的是一对键值对。
    9、restartPolicy:pod上所有容器的重启策略,Always, OnFailure, Never,默认值always。
    10、schedulerName:指定调度pod的调度器名称
    11、securityContext:pod级别安全选项,默认为空字符串
    12、serviceAccountName:访问k8s集群,运行pod的用户账号,没有指定,默认使用default账号
    13、terminationGracePeriodSeconds:integer类型,pod需要优雅地终止所需要的持续时间,默认30s
    14、volumes:被pod上容器所挂载的卷
    name: 卷名称,在pod唯一
    persistentVolumeClaim:简称pvc,持久卷申领,表达的是用户对存储的请求
    hostPath:hostPath 卷能将主机节点文件系统上的文件或目录挂载到你的 Pod 中
    emptyDir:当 Pod 分派到某个 Node 上时,emptyDir 卷会被创建,并且在 Pod 在该节点上运行期间,卷一直存在
    configMap:配置文件的存储卷

    三、status 表示对象的状态
    1、conditions
    lastProbeTime:上次探测 Pod 状况时的时间戳
    lastTransitionTime: Pod 上次从一种状态转换到另一种状态时的时间戳
    status: 表明该状况是否适用,可能的取值有 "True", "False" 或 "Unknown"
    type: Pod 状况的名称,取值:PodScheduled:Pod 已经被调度到某节点;ContainersReady:Pod 中所有容器都已就绪;所有的 Init 容器 都已成功启动;Pod 可以为请求提供服务,并且应该被添加到对应服务的负载均衡池中。
    2、containerStatuses
    清单中每个容器有一个列表条目。每个条目当前都是“docker inspect”的输出。
    3、hostIP :pod被分配到节点的ip
    4、initContainerStatuses:清单中每个init容器有一个列表条目。
    5、phase:Pod 的阶段(Phase)是 Pod 在其生命周期中所处位置的简单宏观概述,分为:Pending(悬决)、Running(运行中)、Succeeded(成功)、Failed(失败)、Unknown(未知)
    6、podIP:pod的ip地址
    7、podIPs:podIP列表
    8、qosClass:服务质量,实现资源被有效调度和分配的同时提高资源利用率,包括:
    Guaranteed:每个容器都必须设置CPU和内存的限制和请求。优先级最高的,Resource的limit和request都相等且不为0
    Burstable:在不满足Guaranteed的情况下,至少设置一个CPU或者内存的请求
    BestEffort:resource和request都不设置,意味着容器资源使用上限实际上即所在node的capacity
    9、startTime:被Kubelet发现的时间,发生在pull 容器image前

  • 相关阅读:
    【★】KMP算法完整教程
    【★】KMP算法完整教程
    算法之【牛顿迭代法】
    算法之【牛顿迭代法】
    【★】Web精彩实战之
    【★】Web精彩实战之
    ★RFC标准库_目录链接
    ★RFC标准库_目录链接
    ★教师工资为什么这么低?/整理
    ★教师工资为什么这么低?/整理
  • 原文地址:https://www.cnblogs.com/mysql-dba/p/14860313.html
Copyright © 2011-2022 走看看