6.1.k8s资源的分类 您所在的位置:网站首页 k8s部署前端的资源 6.1.k8s资源的分类

6.1.k8s资源的分类

2023-04-15 19:44| 来源: 网络整理| 查看: 265

这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」

这里我们主要要理解k8s中什么是资源,什么是对象?哪些是资源,哪些是对象,最后还要理解什么是资源清单?以及如何编写资源清单。

一、资源和对象 1、资源和对象

K8s 中所有的内容都抽象为资源, 资源实例化之后,叫做对象。这个理解起来也比较好理解,我们在java中有类文件,类被实例化以后叫做对象。k8s中pod是一个资源,node也是一个资源,具体的某一个pod或者具体的某一个node就是对象。

在k8s中,任何可以被申请、分配,最终被使用的对象,都是 kubernetes 中的资源,比如 CPU、内存。

2、资源的分类

我们知道了资源和对象的概念,在k8s中,资源通常有三种类型:

命名空间级别 集群级资源 元数据型资源

下面将详细说这三种类型的资源

二、资源的分类

其实资源的类型可以理解为根据作用域进行区分的。

1、命名空间级别

什么是命名空间呢?其实命名空间是一种隔离级别。比如,有一个包租婆,他有一栋楼,张三和李四各租了其中的一间房子,那么资源是由包租婆统一分配的,但是张三和李四相互之间是隔离的。那么在张三房间中创建的pod,李四是不能访问的。

命名空间级别,如果不同的资源放在不同的命名空间下,他们就相互隔离。比如我们的命令,获取所有的pod节点或者获取所有的node.使用的命令是

kubectl get pod  或者 kubect get node 复制代码

这里的node和pod都是有命名空间的,他们的命名空间默认是-n default。制定完整的命名空间使用如下命令

kubectl get pod -n default 或者 kubectl get node -n default 复制代码

当要获取全部命名空间下的pod或者node时,使用如下命令:

kubectl get pod --all-namespaces 或者  kubectl get node --all-namespaces 复制代码

这样就可以看到集群下所有的node和pod了。

image

1)工作负载型资源(workload)

工作负载型资源有哪些呢?

Pod:k8s最小组成部分,共享网络栈共享存储卷 ReplicaSet:RS,调度器、控制器,通过标签去控制pod的创建、副本数量 Deployment:控制器,通过控制RS的创建去创建pod StatefulSet:为有状态服务所建立的管理器 DaemonSet:可以在每一个节点都运行一个pod的组件 Job:工作、任务 CronJob:轮询工作、轮询任务,为批处理而生的 2) 服务发现及负载均衡型资源(ServiceDiscovery LoadBalance)

可以帮我们自动创建集群的相关资源

Service:简称svc,服务,将服务暴露出去 Ingress:将服务暴露出去 3)配置与存储型资源 Volume(存储卷):给pod提供持久化的能力 CSI:容器存储接口,可以扩展各种各样的第三方存储卷 4)特殊类型的存储卷 ConfigMap:当配置中心来使用的资源类型,一般用来存储配置文件达到热更新的状态 Secret:保存敏感数据,加密方案存储数据,一般用来保存密码文件、密钥等等 DownwardAPI:把外部环境中的信息输出给容器,类似于CSI 2、集群级资源

集群级别的资源,它的范围要比命名空间大很多,一个集群下可能会有多个命名空间。集群管理着命名空间资源。

全集群可见,并且可以调用, 不属于某一个名称空间,因此资源对象的名称必须全局唯一。

不管在任何名称空间下定义,在其他的名称空间下都能看得到,在定义的时候无需指定名称空间.

常见的集群级资源有: Namespace【名称空间】、Node【节点】、Role【角色】、ClusterRole、RoleBinding、ClusterRoleBinding

Namespace:名称空间就是集群级别资源的一种。

要查询集群下所有的命名空间

kubectl get ns 复制代码

image

名字空间如果不做限制,可以使用到集群空间的最大资源。

node:node节点也属于集群级资源,node名称要全局唯一。

ClusterRole:集群角色,作用在集群下的,类似于学校的校长。如果给集群赋予了某一个集群角色,那么所有的名字空间都具有这个角色的权限。

相对应的还有Role:角色,他是作用在名字空间下的。类似于一个班的班长。

ClusterRoleBinding:集群角色绑定。比如学校和教室之间的关系可以理解为集群和名字空间的关系,校长就是集群角色。那么一个人要升职为校长,那么需要有委任书,这个委任书就是集群角色绑定,只要有这个委任书,这个人就是校长,将集群和角色绑定在一起了。

相对应的还有RoleBinding:角色绑定,作用在名字空间下。

其实名字空间资源和集群资源,就是作用于的不同。

3、元数据型资源

元数据可以理解为一个模板,不是直接作用在自愿或者对象上的。而是管控中间的变量。可以通过指标进行操作。

比如,我们提供一个指标,比如达到60%报警,这时一个指标,提前在元数据资源中设置好的。例如:

HPA:通过cpu的利用率进行平滑扩展,就是一个很明显的元数据类型,通过指标进行操作。HPA监控资源的使用情况,然后把使用情况告诉控制器,控制器再去做相应处理,比如扩容。HPA只是起到提醒的作用。它本身并不会去执行扩容的操作。真正做事的是RC,RS,Deployment。 PodTemplate:pod模板 LimitRange:资源限制

以上就是k8s中所有资源的类型了,那么我们拿到一个资源,他到底是什么类型呢?其实,我们只需要记住集群级别资源和元数据级别资源,那么剩下的就都是名字空间级别的资源了。而集群级别资源和元数据级别资源就7个。分别是:命名空间namespace,node,ClusterRole,ClusterRoleBinding;HPA,PodTemplate,LimitRange;

以上都是资源,如果这些资源想要使用,我们要将其转换成对应的对象。比如Pod资源,我们要使用Pod资源,最终要运行为pod实例对象才行。从pod资源运行为pod实例对象的过程,我们需要向集群发送一些特定的pod对应的属性,比如pod使用的是哪个镜像,名字叫什么,工作在哪个名字空间下,有没有用到一些存储。这些都是pod实例化资源对象需要关注的属性。而这些属性是通过什么告诉集群的呢?资源清单,下面就来研究什么是资源清单



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有