hopeless-dream

导航

k8s的api资源

NAME

SHORTNAMES

APIGROUP

KIND

资源用途说明

bindings

   

Binding

已弃用。用于记录一个object和另一个object的绑定关系。

实际上主要用于将pod和node关系,

所以在1.7版本后已经改为在pods.bindings中记录了

componentstatuses

cs

 

ComponentStatus

是一个全局的list(即不受命名空间影响),

记录了k8s中所有的组件的的相关信息,比如创建时间,现在状态等。

configmaps

cm

 

ConfigMap

是一种用于记录pod本身或其内部配置信息的API资源,

可以认为是通过API形式存储的配置文件

endpoints

ep

 

Endpoints

 用于记录每个service的pod的真实物理ip和port的对应关系,

包括service是TCP还是UDP等。

events

ev

 

Event

用于记录集群中的事件,可以认为类似于日志里的一条记录

limitranges

limits

 

LimitRange

用于记录各个命名空间中的pod或container对每种资源的使用限制,

一般被包含在pod的定义中

namespaces

ns

 

Namespace

是一个全局的list,保存集群中所有的命名空间

nodes

no

 

Node

是一个全局的list,详细记录了每个节点的可分配资源,

各心跳状态(网络,内存,硬盘,PID数量,kubelet等),

kubelet的物理port,各k8s组件image信息,node环境信息

(os, CRI version, kubeProxy version, kubelet version等)

persistentvolumeclaims

pvc

 

PersistentVolumeClaim

记录用户对持久化存储的要求

persistentvolumes

pv

 

PersistentVolume

是一个全局的object,记录了所有的持久化存储设备的信息

pods

po

 

Pod

对于使用k8s的开发者而言最重要的资源

podtemplates

   

PodTemplate

一般是被包含在其它资源中的一部分,比如Jobs, DaemonSets, Replication Controllers

replicationcontrollers

rc

 

ReplicationController

是系统内建的最常用的controller,用来保证Pod的实际运行数量满足定义

resourcequotas

quota

 

ResourceQuota

用于记录和限制某个namespace的中的总的资源消耗,

一般用于多用户下利用namespace对资源进行限制

secrets

   

Secret

实际上将文件内容通过base64编码后存在etcd中。

在Pod中container启动时可以将secretes作为文件挂载在某一路径下,

如此避免重要信息存储在image中。

serviceaccounts

sa

 

ServiceAccount

 用于授权集群内的pod访问apiServer

services

svc

 

Service

对外提供统一的Service IP和port,将流量负载均衡调整至集群中多个pod

mutatingwebhookconfigurations

 

admissionregistration.k8s.io

MutatingWebhookConfiguration

 

validatingwebhookconfiguratio

 

admissionregistration.k8s.io

ValidatingWebhookConfiguration

 

customresourcedefinitions

crd,crds

apiextensions.k8s.io

CustomResourceDefinition

自定义资源也是非常重要的一种资源,是各种k8s插件能够存在的基础

apiservices

 

apiregistration.k8s.io

APIService

定义API服务的资源。一个API请求有两种形式,

/apis/GROUP/VERSION/*这种不被包含在namespace中的(即全局的)

/apis/GROUP/VERSION/namespaces/NAMESPACE/*这种被包含在namespace中的。

当一个请求到达apiServer后,必然需要有相应的代码去处理它。

每一对GROUP和VERSION确定一种API,响应每一种API请求的代码被抽象为一种服务(service)。

想象一下自定义资源的相关API请求到达apiServer后如何被处理呢?

相关的service也是自定义的并且运行在master中,k8s正是根据APIService来正确地将请求与正确的service关联。

在这里可以定义service名称,安全设置,优先级等。

controllerrevisions

 

apps

ControllerRevision

 是一个beta功能,用于Controller保存自己的历史状态便于更新和回滚

daemonsets

ds

apps

DaemonSet

常见的Pod set种类,用于控制每种pod状态(在定义的范围内,

且在每node上最多有一个

deployments

deploy

apps

Deployment

 

replicasets

rs

apps

ReplicaSet

 

statefulsets

sts

apps

StatefulSet

 

tokenreviews

 

authentication.k8s.io

TokenReview

 

localsubjectaccessreviews

 

authorization.k8s.io

LocalSubjectAccessReview

 

selfsubjectaccessreviews

 

authorization.k8s.io

SelfSubjectAccessReview

 

selfsubjectrulesreviews

 

authorization.k8s.io

SelfSubjectRulesReview

 

subjectaccessreviews

 

authorization.k8s.io

SubjectAccessReview

 

horizontalpodautoscalers

hpa

autoscaling

HorizontalPodAutoscaler

 

cronjobs

cj

batch

CronJob

 

jobs

 

batch

Job

 

certificatesigningrequests

csr

certificates.k8s.io

CertificateSigningRequest

 

leases

 

coordination.k8s.io

Lease

 

endpointslices

 

discovery.k8s.io

EndpointSlice

 

events

ev

events.k8s.io

Event

 

ingresses

ing

extensions

Ingress

 

ingressclasses

 

networking.k8s.io

IngressClass

 

ingresses

ing

networking.k8s.io

Ingress

 

networkpolicies

netpol

networking.k8s.io

NetworkPolicy

 

runtimeclasses

 

node.k8s.io

RuntimeClass

 

poddisruptionbudgets

pdb

policy

PodDisruptionBudget

 

podsecuritypolicies

psp

policy

PodSecurityPolicy

 

clusterrolebindings

 

rbac.authorization.k8s.io

ClusterRoleBinding

 

clusterroles

 

rbac.authorization.k8s.io

ClusterRole

 

rolebindings

 

rbac.authorization.k8s.io

RoleBinding

 

roles

 

rbac.authorization.k8s.io

Role

 

priorityclasses

pc

scheduling.k8s.io

PriorityClass

 

csidrivers

 

storage.k8s.io

CSIDriver

 

csinodes

 

storage.k8s.io

CSINode

 

storageclasses

sc

storage.k8s.io

StorageClass

 

volumeattachments

 

storage.k8s.io

VolumeAttachment

 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
表格说明字段说明:

NAME:api资源名称
SHORTNAMES:api资源名称简写
APIGROUP:api分组管理
NAMESPACED:是否可使用命名空间隔离
KIND:api资源类型

 
  1. StatefulSet: 常见的Pod set种类。和Deployment的区别之处是它控制的pod不是可互换的而是在整个生命周期有不变的标签。这样,每个pod可以有自己的DNS名,存储等。即使pod被删除后这些信息也会被恢复。
  2. TokenReview: 不明,似乎和apiServer的Webhook的token授权相关。
  3. LocalSubjectAccessReview: 不明(内部object),和一个命名空间对用户/组的授权检查相关。
  4. SelfSubjectAccessReview: 不明(内部object),和当前用户检查自己是否有权限对一个命名空间进行操作相关。
  5. SelfSubjectRulesReivew: 不明(内部object),含有当前用户在一个命名空间内能进行的操作的列表。和apiServer的授权安全模式相关
  6. SubjectAccessReviews: 不明(内部object),和用户/组的授权检查相关,并不限定于某个命名空间。
  7. HorizontalPodAutoScaler: 控制Pod set(比如Deployment)的pod数量的资源。可以根据pod的CPU、内存、自定义数据动态调节pod数量。在这里可以找到相关的例子。
  8. CronJob: 定时运行Job pod的资源。
  9. Job: 常见的Pod set种类,会创建一定数量的pod,仅当特定数量的pod成功结束后这个Job才算成功结束。创建的pod在结束后不会被重启。
  10. CertificateSigningRequests: 可以认为是一个接口,便于Pod等资源申请获得一个X.509证书。这个证书应该被controller approve或者被手动approve,之后被合适的对象签名。具体可以参考这里。
  11. Lease: 是一个在1.13版本中加入的资源类型,用于Node向master通知自己的心跳信息。之前的版本中kebulet是通过更新NodeStatus通知master心跳,后来发现NodeStatus太大了而心跳信息更新频繁,导致master压力较大,于是增加了Lease这种资源。
  12. EndpointSlice: 是含有一个service的Endpoint的部分信息的资源。原因和Lease类似,对于含有较多信息的service(比如有很多pod分布在多个node上)一个endpoint object可能会比较大而且被频繁访问,所以这种情况下会有多个endpointSlice被创建减轻master的压力。
  13. Event: 描述一个集群内的事件的资源,含有message,event,reason,报告来源等详细的信息。
  14. Ingresses (APIGroup=extensions): 将被deprecated。
  15. Ingresses (APIGroup=): 可以简单理解为是定义loadbalancer的资源。其中含有一系列规则,定义了不同url的对应后端,SSL termination等。为什么这个新的API会取代前面那个APIGroup=extensions的Ingress API呢?我查了很多地方没有找到具体的文字解释,但是可以推测是Ingress正式成为k8s的网络模块的一部分,对应的server(代码)从extensions迁移到
  16. NetworkPolicy: 定义了那些网络流量可以去哪些pod的资源。一个NetworkPolicy可以指定一组pods,定义只有满足了特定条件(比如源/目的IP,port,pod名等)的网络流量可以被相应的pod收发。
  17. RuntimeClass: 这是2019年讨论加入的新API资源。文档说明其目的是将容器运行时(Container Runtime)环境的属性暴露给k8s的控制层,便于在一个集群或节点中支持多种容器运行时环境。这样便于未来创建更具有兼容性的k8s集群。
  18. PodDisruptionBudget: 这一个API资源使用户可以对一组pod定义“k8s可以容忍的实际running状态的pod数量与预期的差距”。考虑这样一个情景:一集群中某个service后一共有5个相同pod处理其流量,要求至少有一半的pod是可用的,但其中3个pod由于调度运行在node A上。如果出现node A突然故障等情况导致服务不可用,暂时没有好的办法处理这种不可避免地意外情况(或者需要让调度算法知道这些pod应该被尽量均匀分布在个节点上,但目前k8s没有功能强制这种调度)。但除此之外还有很多可以避免的意外情况,比如在集群维护或者其它事件的处理过程中,集群管理员可能drain node A,导致三个pod同时被结束从而影响业务。针对这种可避免的意外,若一组pod的数量因为可避免的k8s操作将会低于可容忍程度(在PodDisruptionBudget中定义),那么这个命令会被阻止并返回失败。
  19. PodSecurityPolicy: 定义了一个pod在集群中被创建/运行/更新时需要满足的条件。
  20. ClusterRole: 定义了集群中policy rule的一些常见集合,比如system-node等,用于控制账户权限。
  21. ClusterRoleBinding: 定义了某个账户/组对ClusterRole的引用,用于赋权。
  22. Roles: 和前面ClusterRole类似,但是顾名思义ClusterRole是和集群账户相关,Role则被用于其它的账户(比如controller使用的service account)
  23. RoleBindings: 定义了某个账户/组对Role的引用,用于赋权。
  24. PriorityClass: 定义了pod优先级名称和对应值的映射。比如system-cluster-critical对应的优先级为2000000000。值越大代表优先级越高,那么当集群资源不足等情况发生必须终止一些pod时,优先级小的pod会先被终止。为什么不直接用数值代表优先级呢?因为这样子很容易出现确定随意性。比如开发人员A开发了一个非常重要的pod,于是在代码中将其优先级的值设置为9999。但是集群集群管理员B可能认为9999是一个小数字,他创建的随便一个pod的优先级都是999999+。于是需要PriorityClass来进行优先级的统一管理和比较。
  25. CSIDriver: 定义了集群中容器存储驱动的API资源。CSI代表的是Container Storage Interface,即容器存储接口。k8s应该可以利用各种各样的存储服务,各家云厂商的活开源的。k8s如何知道怎么去用这些存储服务呢?那么就是通过这个CSIDriver资源找到相应的驱动。
  26. CSINode: 前面CSIDriver产生的节点相关的信息便存在CSINode中。
  27. StorageClass: 定义了可以存在的存储类型的API资源。
  28. Volumeattachments: 定义了对一个node分配/回收存储空间的请求的API资源。
  29. NetworkSets: 接下来的都是Calico自定义API资源,就不一一分析了,都与网络协议/安全/管理相关。
  30. NetworkPolicies: Calico自定义API资源
  31. IPPools: Calico自定义API资源
  32. IPAMHandles: Calico自定义API资源
  33. IPAMConfigs: Calico自定义API资源
  34. IPAMBlocks: Calico自定义API资源
  35. HostEndpoints: Calico自定义API资源
  36. GlobalNetworkSets: Calico自定义API资源
  37. GlobalNetworkPolicies: Calico自定义API资源
  38. FelixConfiguration: Calico自定义API资源
  39. ClusterInformation: Calico自定义API资源
  40. BlockAffinity: Calico自定义API资源
  41. BGPPeer: Calico自定义API资源
  42. BGPConfiguration: Calico自定义API资源
 

posted on 2022-05-24 17:30  hopeless-dream  阅读(254)  评论(0编辑  收藏  举报