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



