Kubernetes的资源对象

Kubernetes的资源对象

KubernetesAPI 对象大体可分五个类别

  1. 工作负载(Workload)

  2. 发现和负载均衡(Discovery&LB)

  3. 配置和存储(Config&Storage)

  4. 集群(Cluster)

  5. 元数据(Metadata)

它们基本上都是围绕一个核心目的而设计:如何更好地运行和丰富 Pod 资源,从而为容器化应用提供更灵活、更完善的操作与管理组件。

Kubernetes 项目的调度器,是统一按照 Pod 而非容器的资源需求进行计算的。PodKubernetes 里的原子调度单位.

Pod,实际上是在扮演传统基础设施里“虚拟机”的角色;而容器,则是这个虚拟机里运行的用户程序。

对于容器来说,一个容器永远只能管理一个进程。更确切地说,一个容器,就是一个进程

工作负载

Pod 是工作负载型资源中的基础资源,它负责运行容器,并为其解决环境性的依赖,例如,向容器注入共享的或持久化的存储卷、配置信息或密钥数据等。

应用程序分为 无状态有状态 两种类型。

无状态 : ReplicaSet (用于确保每个Pod副本在任一时刻均能满足目标数量) 和 Deployment (用于管理无状态的持久化应用,例如 HTTP 服务器;它用于为 PodReplicaSet 提供声明式更新,是建构在 ReplicaSet 之上的更为高级的控制器)

有状态 : StatefulSet (用于管理有状态的持久化应用,如 database 服务程序;其与 Deployment 的不同之处在于 StatefulSet 会为每个 Pod 创建一个独有的持久性标识符,并会确保各 Pod 之间的顺序性)

DaemonSet: 用于确保每个节点都运行了某Pod 的一个副本,新增的节点一样会被添加此类 Pod ;在节点移除时,此类 Pod 会被回收 .( DaemonSet 常用于运行集群存储守护进程—如 glusterdceph ,还有日志收集进程—如 fluentdlogstash,以及监控进程—如 PrometheusNodeExportercollectdDatadog agentGangliagmond 等。)

Job :用于管理运行完成后即可终止的应用,例如批处理作业任务; Job 创建一个或多个 Pod,并确保其符合目标数量,直到 Pod 正常结束而终止。

发现和负载均衡

Kubernetes 为工作负载添加发现机制及负载均衡功能的 Service 资源和 Endpoint 资源,以及通过七层代理实现请求流量负载均衡的 Ingress 资源。

配置与存储

Kubernetes 还支持通过标准的 CSI(Container Storage Interface) 统一存储接口以及扩展支持更多类型的存储系统。

ConfigMap : 将环境变量或存储卷的方式接入到Pod资源的容器中,并且可被多个同类的Pod共享引用,从而实现“一次修改,多处生效”。
Secret : 存储敏感数据,如私钥、密码等。

集群级资源

PodDeploymentServiceConfigMap 等资源属于名称空间级别,可由相应的项目管理员所管理。

Kubernetes 还存在一些集群级别的资源,用于定义集群自身配置信息的对象,它们仅应该由集群管理员进行操作。

Namespace:资源对象名称的作用范围,绝大多数对象都隶属于某个名称空间,默认时隶属于default

NodeKubernetes 集群的工作节点,其标识符在当前集群中必须是唯一的。

Role :名称空间级别的由规则组成的权限集合,可被 RoleBinding 引用。
ClusterRoleCluster 级别的由规则组成的权限集合,可被 RoleBindingClusterRoleBinding 引用。
RoleBinding:将 Role 中的许可权限绑定在一个或一组用户之上,它隶属于且仅能作用于一个名称空间;绑定时,可以引用同一名称空间中的 Role,也可以引用全局名称空间中的 ClusterRole
ClusterRoleBinding :将 ClusterRole 中定义的许可权限绑定在一个或一组用户之上;它能够引用全局名称空间中的 ClusterRole,并能通过 Subject 添加相关信息。

元数据型资源

此类资源对象用于为集群内部的其他资源配置其行为或特性,如 HorizontalPodAutoscaler 资源可用于自动伸缩工作负载类型的资源对象的规模,Pod 模板资源可用于为 pod 资源的创建预制模板,而 LimitRange 则可为名称空间的资源设置其 CPU 和内存等系统级资源的数量限制等。

其他名词

cni : 网络
csi : 存储
cri : 容器运行