更新时间:2023-12-15 gmt 08:00

kubernetes资源对象-凯发k8国际娱乐官网入口

kubernetes资源对象根据作用域区分为命名空间级和集群级。

命名空间级别

命名空间(namespace)是kubernetes提供的隔离机制,用于给集群中的任何资源对象进行分类、筛选和管理。

如果不同的资源对象放在不同的命名空间下,他们就会相互隔离。例如,获取所有pod使用的命令是:

kubectl get pod

这里的pod是有命名空间的,默认为default。指定命名空间需使用如下命令:

kubectl get pod -n default

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

kubectl get pod --all-namespaces

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

$ kubectl get pod --all-namespaces
namespace     name                                            ready   status    restarts   age
default       nginx-dd9796d66-5chbr                           1/1     running   0          3d1h
default       nginx-dd9796d66-xl69p                           1/1     running   0          15d
default       sa-example                                      1/1     running   0          10d
kube-system   coredns-6fcd88c4c-k8rtf                         1/1     running   0          48d
kube-system   coredns-6fcd88c4c-z46p4                         1/1     running   0          48d
kube-system   everest-csi-controller-856f8bb679-42rgw         1/1     running   1          48d
kube-system   everest-csi-controller-856f8bb679-xs6dz         1/1     running   0          48d
kube-system   everest-csi-driver-mkpbv                        2/2     running   0          48d
kube-system   everest-csi-driver-v754w                        2/2     running   0          48d
kube-system   icagent-5p44q                                   1/1     running   0          48d
kube-system   icagent-jrlbl                                   1/1     running   0          48d
monitoring    alertmanager-alertmanager-0                     2/2     running   0          29d
monitoring    cluster-problem-detector-7788f94f64-thp6s       1/1     running   0          29d
monitoring    custom-metrics-apiserver-5f7dcf6d9-n5nrr        1/1     running   0          19d
monitoring    event-exporter-6844c5c685-khf5t                 1/1     running   1          3d1h
monitoring    kube-state-metrics-8566d5f5c5-7kx7b             1/1     running   0          29d
monitoring    node-exporter-7l4ml                             1/1     running   0          29d
monitoring    node-exporter-gpxvl                             1/1     running   0          29d

因此,我们知道了pod属于命名空间级资源,那么还有哪些资源也属于命名空间级别呢?答案是大多数工作负载资源、service资源、配置与存储资源都属于命名空间级。

  • 工作负载资源

    pod:kubernetes部署应用或服务的最小的基本单位。

    replicaset:kubernetes中的一种副本控制器,主要作用是控制由其管理的pod,使pod副本的数量始终维持在预设的个数。

    deployment:声明了pod的模板和控制pod的运行策略,适用于部署无状态的应用程序。

    statefulset:主要用于管理有状态的应用,创建的pod拥有根据规范创建的持久型标识符。

    daemonset:主要用于部署常驻集群内的后台程序,例如节点的日志采集。

    job:job控制器会创建一个或者多个pod,这些pod按照运行规则运行,直至运行结束。

    cronjob:根据指定的预定计划周期性地运行一个job。

  • 服务发现资源

    service:用户在 kubernetes中可以部署各种容器,其中一部分是通过http、https协议对外提供七层网络服务,另一部分是通过tcp、udp协议提供四层网络服务。而kubernetes 定义的service资源是用来管理集群中四层网络的服务访问。基于四层网络,service提供了集群内容器服务的暴露能力。

    ingress:ingress能够提供七层网络下http、https协议服务的暴露,同时也包括各种七层网络下的常见能力。ingress是允许访问到集群内service规则的集合,您可以通过配置转发规则,实现不同url可以访问到集群内不同的service。

  • 配置与存储资源

    configmap:key-value类型的键值对,通过configmap您可以将配置与运行的镜像进行解耦,使应用程序有更强的移植性。

    secret:key-value类型的键值对,用于存储密码、令牌、密钥等敏感信息,降低直接对外暴露的风险。

    volume:volume(存储卷)本质是一个目录,其中可能包含一些数据,pod中的容器可以访问该目录。volume的生命周期与挂载它的pod相同,但是volume里面的文件可能在volume消失后仍然存在,这取决于volume的类型。

集群级别

集群级别的资源,它的作用范围要比命名空间大很多,全集群可见,并且可以调用,不属于某一个命名空间,因此资源对象的名称必须全局唯一。

集群级别的资源,不管在任何命名空间下定义,在其他的命名空间下都能看得到,在定义的时候无需指定命名空间。

常见的集群级资源有:namespace(命名空间)、node(节点)、role(角色)、rolebinding(角色绑定)、clusterrole(集群角色)、clusterrolebinding(集群角色绑定)。

  • namespace:是kubernetes提供的隔离机制,用于给集群中的任何资源对象进行分类、筛选和管理。

    要查询集群下所有的命名空间,可以使用如下命令:

    kubectl get ns
  • node:节点是组成容器集群的基本元素,可以为虚拟机或物理机。每个节点都包含运行pod所需要的基本组件,包括kubelet、kube-proxy等。node名称要全局唯一。
  • role:角色,其实是定义一组对kubernetes资源(命名空间级别)的访问规则。
  • rolebinding:角色绑定,定义了用户和角色的关系。
  • clusterrole:集群角色,其实是定义一组对kubernetes资源(集群级别,包含全部命名空间)的访问规则。
  • clusterrolebinding:集群角色绑定,定义了用户和集群角色的关系。

    role和clusterrole指定了可以对哪些资源做哪些动作,rolebinding和clusterrolebinding将角色绑定到特定的用户、用户组或serviceaccount上。

分享:
网站地图