文章目录
- 2. 资源对象和API群组
- 2.1 K8S资源对象
- 2.2 资源类型
- 2.3 API群组
2. 资源对象和API群组
K8S支持通过HTTP方法(POST、PUT、PATCH、DELETE和GET)对资源进行增、删、改、查等管理操作。
2.1 K8S资源对象
按资源的功能分类, K8S的API对象分为:
- 工作负载: 容器化应用
- 服务发现和负载均衡: 使用Service资源实现。
- 配置与存储: 数据持久化存储。
- 集群和元数据: 管理集群内部资源的行为。
1.工作负载型资源
- Pod用于承载容器化应用.
- 应用程序分为无状态和有状态两种类型.
- ReplicationController、ReplicaSet和Deployment负责管理无状态应用。
- StatefulSet则用于管理有状态持久化应用。
- DaemonSet用于在每个节点上运行单个Pod,负责收集日志或运行系统服务等。
- CronJob: 用于定时任务job。
- Job: 用于一次性任务。
- Deployment: 管理无状态的持久化应用,推荐使用Deployment来管理Pod。
2. 服务发现与负载均衡
- Service资源: 用于为Pod资源提供服务的访问入口及负载均衡服务。
- Ingress资源: 为工作负载提供7层(HTTP/HTTPS)代理及负载均衡功能。
3. 配置和存储
- 存储: K8S支持Ceph , GlusterFS等存储系统.
- 配置:
- ConfigMap资源
- 以环境变量或存储卷的方式接入Pod资源的容器中。
- 可被多个同类的Pod共享引用。
- 不适用于存储敏感数据,例如证书、私钥和密码等。
- Secret资源
- 适用于存储敏感数据,例如证书、私钥和密码等。
4. 集群型资源
常用的集群型资源有如下几种:
- Namespace: 名称空间
- Node: Node节点抽象为资源对象
- Role: 角色,名称空间级别,可被RoleBinding引用。
- ClusterRole: 集群角色,集群级别,可被RoleBinding和ClusterRoleBinding引用。
- RoleBinding: 作用于名称空间级别,将Role中的许可权限绑定在一个或一组用户之上,实现用户授权。
- ClusterRoleBinding: 将ClusterRole中定义的许可权限绑定在一个或一组用户之上,通过引用全局名称空间中的ClusterRole将集群级别的权限授予指定用户。
5.元数据型资源
- HPA资源对象可用于控制自动伸缩工作负载类型资源对象的规模。
- Pod模板提供了创建Pod对象的定制化模板.
- LimitRange可为名称空间内的Pod应用设置其CPU和内存等系统级资源的数量限制等。
2.2 资源类型
1. 资源类型
- 在URL中使用的名称
- 其URL格式为GROUP/VERSION/RESOURCE
2.资源对象所属类型
- Kind代表资源对象所属的类型.
- 例如Namespace、Deployment、Service及Pod等.
- 资源类型又大体可以分为3个类别:
- 对象类:一个对象可能包含多个资源.Namespace、Deployment、Service及Pod等都属于这个类别.
- 列表类:通常是指同一类型资源的集合。
- 简单类:常用于在对象上执行某种特殊操作。
2.3 API群组
1.核心群组
- RESTful路径为
/api/v1
2.命名群组
- RESTful路径为
/apis/$GROUP_NAME/$VERSION
.
3.用户自定义资源类型
- 使用CRD(自定义资源),用于API群组扩展
4.查看集群中API Server所支持的API群组及相关版本信息
$ kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
crd.projectcalico.org/v1
discovery.k8s.io/v1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
extensions/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1
node.k8s.io/v1beta1
operator.tigera.io/v1
policy/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1