k8s资源清单

Posted robi-9662

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s资源清单相关的知识,希望对你有一定的参考价值。

一、 k8s中的资源

  1.1 资源的定义

    K8s 中所有的内容都抽象为资源, 资源实例化之后,叫做对象

  1.2  K8S 中存在哪些资源 分类
  1)名称空间级别

    工作负载型资源( workload ):   Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、 CronJob ( ReplicationController 在 v1.11 版本被废弃 )
    服务发现及负载均衡型资源( ServiceDiscovery LoadBalance ):    Service、Ingress、...
    配置与存储型资源:   Volume( 存储卷 )、CSI( 容器存储接口,可以扩展各种各样的第三方存储卷 )
    殊类型的存储卷:    ConfigMap( 当配置中心来使用的资源类型 )、Secret(保存敏感数据)、DownwardAPI (把外部环境中的信息输出给容器)
  2)K8S 中存在哪些资源
    集群级资源:Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding
    元数据型资源:HPA、PodTemplate、LimitRange

二、 资源清单

在 k8s 中,一般使用 yaml 格式的文件来创建符合我们预期期望的 pod ,这样的  yaml 文件我们一般称为资源清单

  2.1  k8s常用字段解释

    1) 资源清单中必须存在字段

    技术图片

 

  2)  k8s主要对象

    技术图片

 

 

    技术图片

 

 

     

    技术图片

 

 

 

   3) k8s 常用的额外参数

    技术图片

 

三、 容器生命周期

  技术图片

 

 

   3.1 init 容器

  Pod 能够具有多个容器,应用运行在容器里面,但是它也可能有一个或多个先于应用容器启动的 Init 容器

  Init 容器与普通的容器非常像,除了如下两点:
    Init 容器总是运行到成功完成为止
    每个 Init 容器都必须在下一个 Init 容器启动之前成功完成
    如果 Pod 的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成功为止。然而,
    如果 Pod 对应的 restartPolicy 为 Never,它不会重新启动

  3.2  init容器的作用

  因为 Init 容器具有与应用程序容器分离的单独镜像,所以它们的启动相关代码具有如下优势:

  1)     它们可以包含并运行实用工具,但是出于安全考虑,是不建议在应用程序容器镜像中包含这些实用工具的
  2)    它们可以包含使用工具和定制化代码来安装,但是不能出现在应用程序镜像中。例如,创建镜像没必要 FROM 另一个镜像,只需要在安装过程中使用类似 sed、 awk、 python  或 dig这样的工具。
  3)   应用程序镜像可以分离出创建和部署的角色,而没有必要联合它们构建一个单独的镜像。
  4)   Init 容器使用 Linux Namespace,所以相对应用程序容器来说具有不同的文件系统视图。因此,它们能够具有访问 Secret 的权限,而应用程序容器则不能。
  5) . 它们必须在应用程序容器启动之前运行完成,而应用程序容器是并行运行的,所以 Init 容器能够提供了一种简单的阻塞或延迟应用容器的启动的方法,直到满足了一组先决条件。

  3.4  init 容器的特殊说明

    

  在 Pod 启动过程中,Init 容器会按顺序在网络和数据卷初始化之后启动。每个容器必须在下一个
  容器启动之前成功退出
  1) 如果由于运行时或失败退出,将导致容器启动失败,它会根据 Pod 的 restartPolicy 指定的策略进行重试。然而,如果 Pod 的 restartPolicy 设置为 Always,Init 容器失败时会使用RestartPolicy 策略
  2) 在所有的 Init 容器没有成功之前,Pod 将不会变成 Ready 状态。Init 容器的端口将不会在Service 中进行聚集。 正在初始化中的 Pod 处于 Pending 状态,但应该会将 Initializing 状态设置为 true
  3) 如果 Pod 重启,所有 Init 容器必须重新执行
  4) 对 Init 容器 spec 的修改被限制在容器 image 字段,修改其他字段都不会生效。更改 Init容器的 image 字段,等价于重启该 Pod

  特殊说明 -2
  1) Init 容器具有应用容器的所有字段。除了 readinessProbe,因为 Init 容器无法定义不同于完成
  (completion)的就绪(readiness)之外的其他状态。这会在验证过程中强制执行
  2) 在 Pod 中的每个 app 和 Init 容器的名称必须唯一;与任何其它容器共享同一个名称,会在验证时抛出错误

 

以上是关于k8s资源清单的主要内容,如果未能解决你的问题,请参考以下文章

k8s四资源及资源清单

k8s资源清单

K8S之资源清单定义基础

K8S-资源清单

K8S-资源清单

k8s资源清单定义入门