Kubernetes的资源对象
Kubernetes 的 API 对象大体可分五个类别
工作负载(Workload)
发现和负载均衡(Discovery&LB)
配置和存储(Config&Storage)
集群(Cluster)
元数据(Metadata)
它们基本上都是围绕一个核心目的而设计:如何更好地运行和丰富 Pod 资源,从而为容器化应用提供更灵活、更完善的操作与管理组件。
Kubernetes 项目的调度器,是统一按照 Pod 而非容器的资源需求进行计算的。Pod 是 Kubernetes 里的原子调度单位.
Pod,实际上是在扮演传统基础设施里“虚拟机”的角色;而容器,则是这个虚拟机里运行的用户程序。
对于容器来说,一个容器永远只能管理一个进程。更确切地说,一个容器,就是一个进程
工作负载
Pod 是工作负载型资源中的基础资源,它负责运行容器,并为其解决环境性的依赖,例如,向容器注入共享的或持久化的存储卷、配置信息或密钥数据等。
应用程序分为 无状态 和 有状态 两种类型。
无状态 : ReplicaSet (用于确保每个Pod副本在任一时刻均能满足目标数量) 和 Deployment (用于管理无状态的持久化应用,例如 HTTP 服务器;它用于为 Pod 和 ReplicaSet 提供声明式更新,是建构在 ReplicaSet 之上的更为高级的控制器)
有状态 : StatefulSet (用于管理有状态的持久化应用,如 database 服务程序;其与 Deployment 的不同之处在于 StatefulSet 会为每个 Pod 创建一个独有的持久性标识符,并会确保各 Pod 之间的顺序性)
DaemonSet: 用于确保每个节点都运行了某Pod 的一个副本,新增的节点一样会被添加此类 Pod ;在节点移除时,此类 Pod 会被回收 .( DaemonSet 常用于运行集群存储守护进程—如 glusterd 和ceph ,还有日志收集进程—如 fluentd 和 logstash,以及监控进程—如 Prometheus 的NodeExporter、collectd、Datadog agent 和 Ganglia 的 gmond 等。)
Job :用于管理运行完成后即可终止的应用,例如批处理作业任务; Job 创建一个或多个 Pod,并确保其符合目标数量,直到 Pod 正常结束而终止。
发现和负载均衡
Kubernetes 为工作负载添加发现机制及负载均衡功能的 Service 资源和 Endpoint 资源,以及通过七层代理实现请求流量负载均衡的 Ingress 资源。
配置与存储
Kubernetes 还支持通过标准的 CSI(Container Storage Interface) 统一存储接口以及扩展支持更多类型的存储系统。
ConfigMap : 将环境变量或存储卷的方式接入到Pod资源的容器中,并且可被多个同类的Pod共享引用,从而实现“一次修改,多处生效”。Secret : 存储敏感数据,如私钥、密码等。
集群级资源
Pod、 Deployment、 Service 和 ConfigMap 等资源属于名称空间级别,可由相应的项目管理员所管理。
Kubernetes 还存在一些集群级别的资源,用于定义集群自身配置信息的对象,它们仅应该由集群管理员进行操作。
Namespace:资源对象名称的作用范围,绝大多数对象都隶属于某个名称空间,默认时隶属于default 。
Node :Kubernetes 集群的工作节点,其标识符在当前集群中必须是唯一的。
Role :名称空间级别的由规则组成的权限集合,可被 RoleBinding 引用。ClusterRole :Cluster 级别的由规则组成的权限集合,可被 RoleBinding 和ClusterRoleBinding 引用。RoleBinding:将 Role 中的许可权限绑定在一个或一组用户之上,它隶属于且仅能作用于一个名称空间;绑定时,可以引用同一名称空间中的 Role,也可以引用全局名称空间中的 ClusterRole 。ClusterRoleBinding :将 ClusterRole 中定义的许可权限绑定在一个或一组用户之上;它能够引用全局名称空间中的 ClusterRole,并能通过 Subject 添加相关信息。
元数据型资源
此类资源对象用于为集群内部的其他资源配置其行为或特性,如 HorizontalPodAutoscaler 资源可用于自动伸缩工作负载类型的资源对象的规模,Pod 模板资源可用于为 pod 资源的创建预制模板,而 LimitRange 则可为名称空间的资源设置其 CPU 和内存等系统级资源的数量限制等。
其他名词
cni : 网络csi : 存储cri : 容器运行