深度解析 | K8S API Server之入门须知

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 我们首先将对Kubernetes API Server进行概括性的介绍,然后对一些术语进行介绍,最后对API请求流程进行解释。后续会有新的文章对API Server的存储和扩展点等主题进行介绍。本篇是Kubernetes API Server系列第一篇。

我们首先将对Kubernetes API Server进行概括性的介绍,然后对一些术语进行介绍,最后对API请求流程进行解释。后续会有新的文章对API Server的存储和扩展点等主题进行介绍。本篇是Kubernetes API Server系列第一篇。   

API Server简介

在概念层面上,Kubernetes由一系列不同角色的节点组成。Mater节点上的控制平面由API Server,Controller Manager和Scheduler组成。API Server是中心管理实体,是与分布式存储组件(etcd)进行直接通信的唯一组件。API Server提供以下核心功能:

  • 服务于被集群内部工作节点和外部kubectl使用的Kubernetes API

  • 为集群组件提供代理,如Kubernetes UI

  • 允许对对象(例如pod和service等)的状态进行操作

  • 保持分布式存储(etcd)中对象的状态

Kubernetes API是HTTP API,以JSON作为主要的结构化数据的序列化格式,但同时它也支持Google的Protocol Buffers格式进行描述(主要用于集群内部通信)。

考虑到可扩展性原因,Kubernetes支持多个API版本,分别处于不同的API路径上,例如/api/v1或/apis/extensions/v1beta1。不同的API版本意味着不同等级的稳定性和支持度:

  • Alpha级别,例如v1alpha1,默认情况下被禁用,对此功能的支持可能随时会被舍弃,而且不会进行通知,因此只能在短期测试的集群中使用。

  • Beta级别,例如v2beta3,默认情况下启用,意味着代码已经经过良好的测试,但对象的语义可能会在后续beta版或stable版中以不兼容的方式进行更改。

  • Stable级别,例如v1,将出现在多个后续版本的released软件中。

现在来看看HTTP API空间是如何组成的。在顶层,按照以下几个组进行区分:核心组(均位于/api/v1路径下,由于历史原因位于此路径,而不在/apis/core/v1路径下),命名组(位于/apis/$NAME/$VERSION路径下),以及系统范围实体(如/metrics)。

接下来我们将聚焦一个具体的例子:批处理(batch)操作。在Kubernetes 1.5中,存在两个版本的批处理操作:/apis/batch/v1和/apis/batch/v2alpha1,分别暴露不同的可以进行查询和操作的实体集。

下面我们展示一个与API进行交互的示范性例子(使用Minishift工具和代理命令行oc proxy –port=8080,以直接对API进行访问):

$ curl http://127.0.0.1:8080/apis/batch/v1 

“kind”: “APIResourceList”, 

“apiVersion”: “v1”, 

“groupVersion”: “batch/v1”, 

“resources”: [ 

“name”: “jobs”, 

“namespaced”: true, 

“kind”: “Job” 

}, 

“name”: “jobs/status”, 

“namespaced”: true, 

“kind”: “Job” 

}

接下来,使用新的Alpha版本:

$ curl http://127.0.0.1:8080/apis/batch/v2alpha1 

“kind”: “APIResourceList”, 

“apiVersion”: “v1”, 

“groupVersion”: “batch/v2alpha1”, 

“resources”: [ 

“name”: “cronjobs”, 

“namespaced”: true, 

“kind”: “CronJob” 

}, 

“name”: “cronjobs/status”, 

“namespaced”: true, 

“kind”: “CronJob” 

}, 

“name”: “jobs”, 

“namespaced”: true, 

“kind”: “Job” 

}, 

“name”: “jobs/status”, 

“namespaced”: true, 

“kind”: “Job” 

}, 

“name”: “scheduledjobs”, 

“namespaced”: true, 

“kind”: “ScheduledJob” 

}, 

“name”: “scheduledjobs/status”, 

“namespaced”: true, 

“kind”: “ScheduledJob” 

}

通常情况下,通过标准HTTP的POST、PUT、DELETE和GET动作,以JSON作为默认有效载荷,Kubernetes API支持在给定路径上进行创建(create)、更新(update)、删除(delete)、检索(retrieve)操作。

大多数API对象会区分对象的期望状态规格(specification)和对象的当前状态。对象规格(specification)是对期望状态的完整描述,并保存在持久化存储中。

本文转移K8S技术社区-深度解析 | K8S API Server之入门须知

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
29 2
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
85 5
|
19天前
|
Kubernetes 关系型数据库 MySQL
Kubernetes入门:搭建高可用微服务架构
【10月更文挑战第25天】在快速发展的云计算时代,微服务架构因其灵活性和可扩展性备受青睐。本文通过一个案例分析,展示了如何使用Kubernetes将传统Java Web应用迁移到Kubernetes平台并改造成微服务架构。通过定义Kubernetes服务、创建MySQL的Deployment/RC、改造Web应用以及部署Web应用,最终实现了高可用的微服务架构。Kubernetes不仅提供了服务发现和负载均衡的能力,还通过各种资源管理工具,提升了系统的可扩展性和容错性。
56 3
|
22天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
33 3
|
21天前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
|
9天前
|
Kubernetes Cloud Native 前端开发
Kubernetes入门指南:从基础到实践
Kubernetes入门指南:从基础到实践
20 0
|
1月前
|
网络协议 定位技术 Windows
Windows Server 2019 DNS服务器搭建
Windows Server 2019 DNS服务器搭建
|
1月前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
150 0
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
1月前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
1月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。

推荐镜像

更多