k8s——资源管理基础
1.资源对象及API群组
1)kubernetes的资源对象
k8s的对象大体可分为工作负载、发现和负载均衡、配置和存储、集群以及元数据。
工作负载型资源:
ReplicationController:用于确保每个pod副本在任一时刻均能满足目标数量。
ReplicaSet:新一代ReplicationController,与ReplicationController唯一不同之处在于支持别的标签选择器不同,ReplicationController只支持等值选择器,ReplicaSet还额外支持基于集合的选择器。
Deployment:用于管理无状态的持久化应用,如HTTP服务器;它用于为pod何ReplicaSet提供声明式更新,是构建在ReplicaSet之上的更为高级的控制器。
StatefulSet:用于管理有状态持久化应用,如database服务程序;与Deployment不同之处在于STS会为每个pod创建一个独有的持久性标识符,并会确保各pod之间的顺序性。
DaemonSet:用于确保每个节点都运行了某pod的一个副本,新增的节点一样会被添加此类pod。
Job:用于管理运行完成后即可终止的应用。
发现和负载均衡:
service资源、endpoint资源。
配置和存储:
GlusterFS、CEPH RBD和Flocker
ConfigMap
集群级资源:
用于定义集群自身配置信息的对象,它们仅应该由集群管理员进行操作:
Namespace:资源对象名称的作用范围;
Node:k8s集群的工作节点;
Role:名称空间级别的由规则组成的权限集合;
ClusterRole:Cluster级别的由规则组成的权限集合;
RoleBinding:将Role中的许可权限绑定在一个或一组用户之上,它隶属于且仅能作用一个名称空间;
ClusterRoleBinding:将ClusterRole中定义的许可权限绑定在一个或一组用户之上
2.管理名称空间资源
名称空间(namespace)是k8s集群级别的资源,用于将集群分隔为多个隔离的逻辑分区配置给不同的用户、租户、环境或项目使用。同一名称空间内的同一类型资源名必须是唯一的,但是跨名称空间时并无此限制。k8s还有一些资源隶属于集群级别,如node/namespace/persistentvolume等,它们不属于任何名称空间,因此资源对象的名称必须全局唯一。
k8s的名称空间资源不同于linux系统的名称空间,它们是各自独立的概念。另外,k8s名称空间并不能实现pod间的通信隔离,它仅用于限制资源对象名称的作用域。