2. 资源对象和API群组

K8S支持通过HTTP方法(POST、PUT、PATCH、DELETE和GET)对资源进行增、删、改、查等管理操作。

2.1 K8S资源对象

按资源的功能分类, K8S的API对象分为:

  • 工作负载: 容器化应用
  • 服务发现和负载均衡: 使用Service资源实现。
  • 配置与存储: 数据持久化存储。
  • 集群和元数据: 管理集群内部资源的行为。

K8S资源对象
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
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐