kubernetes 开发必须要知道的知识点—— API Group

本文深入探讨了Kubernetes中APIGroups的作用与分类,包括CoreGroups和具有分组信息的API,详细列举了各组下的资源类型,如Pod、Service、Deployment等,并提供了API接口的访问路径说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用k8s进行服务的部署过程中我们会使用到Deployment、Service、Pod等资源,在 yaml 文件中我们需要指定对应的 API 版本,我们可以通过访问相应的接口来管理相应的资源信息,在 k8s 中为了提高 API 的可扩展性,采用了 API Groups 进行标识这些接口,在 client-go 源码中就是通过指定的 API Groups 来访问 k8s 集群的,这里向大家介绍 API Groups 都有哪些,希望对你有帮助。

当前 k8s 支持两类 API Groups:
1. Core Groups(核心组)

该分组也可以称之为 Legacy Groups,作为 k8s 最核心的 API ,其特点是没有组的概念,例如 “v1”,在资源对象的定义中表示为 “apiVersion: v1”,属于核心组的资源主要有下面几种:

  • Container
  • Pod
  • ReplicationController
  • Endpoint
  • Service
  • ConfigMap
  • Secret
  • Volume
  • PersistentVolumeClaim
  • Event
  • LimitRange
  • PodTemplate
  • Binding
  • ComponentStatus
  • Namespace
  • Node
2. 具有分组信息的 API

这种 API 接口以/apis/$GROUP_NAME/$VERSION URL 路径进行标识,在资源对象的定义中表示为 “apiVersion: G R O U P N A M E / GROUP_NAME/ GROUPNAME/VERSION”, 例如 “apiVersion: batch/v1”,常见的 Group 及资源主要有下面几种:

  • apps/v1

    • DaemonSet
    • Deployment
    • StatefulSet
    • ReplicaSet
  • batch/v1

    • Job
  • batch/v1beta

    • CronJob

更多 API 接口信息请参考官网:k8s1.17 API 接口文档

### Kubernetes 核心概念与关键知识点总结 #### 1. 定义与功能 Kubernetes 是一个自动化容器编排平台,用于应用程序的部署、弹性和管理,这些都基于容器化技术[^2]。它的主要职责包括但不限于调度容器到集群节点上运行、提供高可用性支持以及动态扩展或缩减工作负载。 #### 2. 架构特点 Kubernetes 的架构采用典型的两层结构和客户端-服务器模型。这种设计使得它可以灵活应对大规模分布式系统的复杂需求,同时保持良好的可维护性和扩展性。 #### 3. 核心组件 以下是 Kubernetes 系统的核心组成部分及其作用: - **Master Node (控制平面)**: 包含多个子模块来管理和协调整个集群的行为, 如 `etcd` 存储数据、API Server 提供接口访问入口等。 - *etcd*: 分布式键值数据库,存储所有集群状态信息。 - *kube-apiserver*: 处理 REST 请求并与 etcd 进行交互。 - *kube-scheduler*: 负责决定 Pod 应该被分配给哪个节点执行。 - *kube-controller-manager*: 维护集群的状态一致性,比如副本控制器确保指定数量的 pod 实例始终存在。 - **Worker Nodes**: 执行实际业务逻辑的工作单元所在位置,每台 worker node 上都会安装如下几个重要进程: - *kubelet*: 主要负责监听来自 master 发送过来的任务指令,并完成相应动作。 - *kube-proxy*: 实现服务发现和服务间通信机制的重要工具。 #### 4. 关键对象定义 为了更好地描述应用环境下的各种实体关系,K8s引入了一系列抽象的概念: - **Pods**: 最小单位的操作对象,可以看作一组共享相同上下文的一个或者更多紧密关联在一起的容器集合。 - **Services**: 抽象了一组具有相似特征的 Pods 并对外暴露统一接入点的方式方法论。 - **ConfigMaps & Secrets**: 用户可以通过 ConfigMap 将非敏感配置参数传递至程序内部;而 Secret 则用来保存密码或者其他机密资料形式的数据. - **Deployments/StatefulSets/DaemonSets**: 不同类型的 Deployment 可以满足多样化的应用场景需求——前者适用于无状态的服务场景后者则针对有状态的应用场合. #### 5. 命名空间与资源配额 命名空间(Namespace)是在 Kubernetes 中实现多租户和资源隔离的关键手段之一[^4]。通过创建不同的 namespace ,管理员能够有效地划分不同项目之间的界限从而减少相互干扰的可能性 。另外还有一种叫做 ResourceQuota 的特性允许设定单个 Namespace 下各类计算资源的最大限额以此达到精细化管控的目的 . #### 6. Istio 和 Kubernetes 的集成挑战 尽管 Kubernetes 自身已经非常强大,但在微服务治理方面仍需借助外部解决方案如 Istio 来增强其能力。然而值得注意的是由于两者之间存在着较高的学习成本和技术壁垒因此对于初次接触的人来说可能会觉得难以入手[^3]. ```yaml apiVersion: v1 kind: ServiceAccount metadata: name: demo-serviceaccount --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: RoleBinding metadata: name: read-pods roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: pod-reader subjects: - kind: ServiceAccount name: demo-serviceaccount ``` 上述 YAML 文件片段展示了如何利用 RBAC(Role-Based Access Control)为特定 service account 授予读取 pods 的权限的例子。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值