k8s------资源对象,pod的API,yaml文件基础

文章目录

  • 一. 资源对象
    • k8s的设计理念—分层架构
    • k8s的设计理念—API设计原则
    • k8s资源管理核心--对象
  • 二. API
    • k8s的几个重要概念
    • 1. Pod
  • k8s中的资源对象
  • 一、集群资源分类
    • 1. 名称空间级别:仅存此名称空间下生效
    • 2. 集群级别:所有名称空间都可以使用
    • 3. 元数据型资源
  • 二. 规范
    • 1. 必须存在的属性(必须写)
    • 2. 主要对象
    • 3. 额外参数项
      • 2. Annotations(注解)
      • 3. Label(标签)

一. 资源对象

参考:大佬的作品地址

k8s的设计理念—分层架构

http://docs.kubernetes.org.cn/251.html
k8s------资源对象,pod的API,yaml文件基础_第1张图片

k8s的设计理念—API设计原则

https://www.kubernetes.org.cn/kubernetes%e8%ae%be%e8%ae%a1%e7%90%86%e5%bf%b5
k8s------资源对象,pod的API,yaml文件基础_第2张图片

k8s资源管理核心–对象

API是k8s集群中的管理操作单元
k8s------资源对象,pod的API,yaml文件基础_第3张图片

k8s------资源对象,pod的API,yaml文件基础_第4张图片

二. API

k8s的几个重要概念

对象用k8s是和什么打交道? K8s 声明式API
yaml文件 怎么打交道? 调用声明式API
必需字段 怎么声明?

1. Pod

概述:

  1. pod是k8s中的最小单元
    Kubernetes 的 Pod API 生产一个 Pod,让 Kubernetes 对这个 Pod进行调度,也就是把它放在某一个 Kubernetes 管理的节点上运行起来。
  2. 一个pod中可以运行一个容器,也可以运行多个容器
    一个 Pod 简单来说是对一组容器的抽象,它里面会包含一个或多个容 器。
  3. 运行多个容器的话,这些容器是一起被调度的
  4. Pod的生命周期是短暂的,不会自愈,是用完就销毁的实体
  5. 一般我们是通过Controller来创建和管理pod的
  6. Pod 会共享同一个网络环境,这些容 器可以用 localhost 来进行直接的连接。而 Pod 与 Pod 之间,是互相 有 isolation 隔离的。

当然在这个 Pod 中也可以包含一些其他所需要的资源:比如说我们所看 到的 Volume 卷这个存储资源;比如说我们需要 100 个 GB 的存储或 者 20GB 的另外一个存储。
k8s------资源对象,pod的API,yaml文件基础_第5张图片

k8s------资源对象,pod的API,yaml文件基础_第6张图片
k8s------资源对象,pod的API,yaml文件基础_第7张图片

k8s中的资源对象

一、集群资源分类

k8s------资源对象,pod的API,yaml文件基础_第8张图片

1. 名称空间级别:仅存此名称空间下生效

工作负载型资源(workload):
Pod: k8s中最小单元
ReplicaSet:调度器,通过标签控制 pod 的副本数目
Deployment:控制器,通过控制 rs 的创建来创建 pod
StatefulSet:为有状态服务创建的管理器
DaemonSet:可以在每个节点运行 pod 主键
Job:为批处理而生
CronJob(ReplicationController)在v1.11版本被废弃:为批处理而生
服务发现及负载均衡型资源(ServiceDiscoveryLoadBalance):ServiceIngress、…
配置与存储型资源:Volume(存储卷)、CSI(容器存储接口,可以扩展各种各样的第三方存储卷)
特殊类型的存储卷:
ConfigMap(当配置中心来使用的资源类型):通过他可以创建一些配置文件,达到热更新
Secret(保存敏感数据):加密方案存储数据,可以用它存储一些秘钥等
DownwardAPI(把外部环境中的信息输出给容器):下载文件的接口,可以下载、上传

2. 集群级别:所有名称空间都可以使用

Namespace:名称空间
Node:工作节点
Role
ClusterRole
RoleBinding
ClusterRoleBinding

3. 元数据型资源

HPA 扩容缩容
PodTemplate(pod模板)
LimitRange(资源限制)

二. 规范

1. 必须存在的属性(必须写)

k8s------资源对象,pod的API,yaml文件基础_第9张图片
k8s------资源对象,pod的API,yaml文件基础_第10张图片

2. 主要对象

k8s------资源对象,pod的API,yaml文件基础_第11张图片
k8s------资源对象,pod的API,yaml文件基础_第12张图片
k8s------资源对象,pod的API,yaml文件基础_第13张图片
在这里插入图片描述

3. 额外参数项

k8s------资源对象,pod的API,yaml文件基础_第14张图片

spec.restartPolicy 仅指通过同一节点上的 kubelet 重新启动容器。失败的容器由 kubelet 以五分钟为上限的指数退避延迟(10秒,20秒,40 秒…)重新启动,并在成功执行十分钟后重置。如 Pod 文档 中所述,一旦绑定到一个节点,Pod 将 永远不会重新绑定到另一个节点。

2. Annotations(注解)

可以将任意非标识性元数据附加到对象上。将数据作为Annotations附着在对象上,有利于创建一些用于部署、管理和做内部检查的共享工具和客户端。
它定义的是Kubernetes对象的元数据(Metadata),并且用于Label Selector。而Annotation则是用户任意定义的“附加”信息,以便于外部工具进行查找。通常Kubernetes的模块会通过Annotation的方式标记资源对象的一些特殊信息。

Annotation来记录的信息如下

  1. build信息、release信息、Docker镜像信息等,例如时间戳、release id号、PR号、镜像bash值、docker registry地址等。
  2. 日志库、监控库、分析库等资源库的地址信息。
  3. 程序调试工具信息,例如工具名称、版本号等。
  4. 团队的联系信息,例如电话号码、负责人名称、网址等

3. Label(标签)

label可以附着在任意对象上,每个对象也都可以有任意标签。标签可在对象定义时附加上,也可以通过命令动态管理标签。
随后可以通过Label Selector(标签选择器)查询和筛选拥有某些Label的资源对象

以Pod为例,Label定义在metadata中

apiVersion: v1
kind: Pod
metadata:
  name: myweb
  labels:
    app: myweb

你可能感兴趣的:(k8s,k8s)