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

一. 资源对象

参考:大佬的作品地址

k8s的设计理念—分层架构

http://docs.kubernetes.org.cn/251.html
在这里插入图片描述

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

https://www.kubernetes.org.cn/kubernetes%e8%ae%be%e8%ae%a1%e7%90%86%e5%bf%b5
在这里插入图片描述

k8s资源管理核心–对象

API是k8s集群中的管理操作单元
在这里插入图片描述

在这里插入图片描述

二. 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中的资源对象

一、集群资源分类

在这里插入图片描述

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. 必须存在的属性(必须写)

在这里插入图片描述
在这里插入图片描述

2. 主要对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 额外参数项

在这里插入图片描述

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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值