文章目录
一. 资源对象
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
概述:
- pod是k8s中的
最小单元
Kubernetes 的 Pod API 生产一个 Pod,让 Kubernetes 对这个 Pod进行调度,也就是把它放在某一个 Kubernetes 管理的节点上运行起来。 - 一个pod中可以运行一个容器,也可以
运行多个容器
一个 Pod 简单来说是对一组容器的抽象,它里面会包含一个或多个容 器。 - 运行多个容器的话,这些容器是
一起被调度的
- Pod的生命周期是短暂的,不会自愈,是用完就销毁的实体
- 一般我们是通过
Controller来创建和管理pod的
- 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):Service
、Ingress
、…
配置与存储型资源: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来记录的信息如下:
- build信息、release信息、Docker镜像信息等,例如时间戳、release id号、PR号、镜像bash值、docker registry地址等。
- 日志库、监控库、分析库等资源库的地址信息。
- 程序调试工具信息,例如工具名称、版本号等。
- 团队的联系信息,例如电话号码、负责人名称、网址等
3. Label(标签)
label可以附着在任意对象上,每个对象也都可以有任意标签。标签可在对象定义时附加上,也可以通过命令动态管理标签。
随后可以通过Label Selector(标签选择器)查询和筛选拥有某些Label的资源对象
以Pod为例,Label定义在metadata中
apiVersion: v1
kind: Pod
metadata:
name: myweb
labels:
app: myweb