课件
IaaS:Infrastructure-as-a-Service(基础设施即服务)
PaaS:Platform-as-a-Service(平台即服务)
SaaS:Software-as-a-Service(软件即服务)
CaaS:Communications-as-a-Service(通讯即服务也可称为协作即服务)
MaaS:Machine as a Service(物联网即服务)
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/gavin__fan/article/details/108472711
架构分层
Kubernetes(k8s)代码库(K8S codebase)是一组庞大而复杂的代码,用于在分布式系统中运行和管理容器化应用程序。该代码库是开源的,托管在GitHub上,由一大群开发人员维护。k8s代码库主要使用Go编程语言编写,来自全球的开发人员做出了贡献。它包括各种组件,包括Kubernetes API服务器、调度器、控制器管理器和用于存储配置数据的etcd。代码库被组织成一组模块,每个模块负责Kubernetes系统的特定方面。这些模块包括核心Kubernetes API、网络、存储、身份验证和授权。为了使用k8s代码库,开发人员通常使用一些命令行工具,例如kubectl,以及编程接口,例如Go、Python和其他语言的Kubernetes客户端库。还有许多第三方工具和库可用于处理k8s代码库,例如Helm,用于管理Kubernetes应用程序和软件包。
Pod
https://www.xjx100.cn/news/1674387.html?action=onClick
Kubernetes 中的 ownerReference
字段用于建立资源之间的所有者关系,即父子关系。这个字段可以用来指定一个资源是另一个资源的所有者。例如,一个 Deployment 可以拥有多个 Pod,这些 Pod 就可以通过 ownerReference
字段引用到对应的 Deployment 资源。
ownerReference
字段包含以下几个属性:
apiVersion
:引用资源的 API 版本。kind
:引用的资源类型。name
:引用资源的名称。uid
:引用资源的唯一标识符。controller
:标识这个所有关系是否是控制器-被控制器关系的布尔值。如果为 True,则表示这个资源是一个控制器,它拥有或管理着其他资源。
在 Kubernetes 中,ownerReference
字段通常用于实现控制器模式,例如 ReplicaSet 和 Deployment 等控制器都可以通过 ownerReference
字段来管理其创建的 Pod。这种方式可以确保资源之间的一致性,并且在删除控制器时也可以自动删除控制器创建的所有子资源。
核心组件
k8s list-watch 是 k8s API Server 提供的一种 RESTful API 操作方式,它可以用来实现对 k8s 资源对象的实时监控和响应。下面是 k8s list-watch 的流程说明:
-
客户端向 k8s API Server 发送一个 GET 请求,请求某个 k8s 资源对象的列表。例如,可以请求获取所有的 Pod 对象。
-
k8s API Server 返回一个包含该资源对象列表的响应结果。
-
客户端对该响应结果进行处理,并记录下该资源对象列表的当前版本号(resourceVersion)。
-
客户端向 k8s API Server 发送一个 GET 请求,请求该资源对象的 watch API。例如,可以请求监控所有的 Pod 对象。
-
k8s API Server 返回一个包含该资源对象列表的响应结果,并保持该连接处于打开状态。
-
当 k8s API Server 上的该资源对象发生变化时,它会向客户端推送一个 JSON 格式的事件通知,通知客户端该资源对象的变化信息,包括事件类型(Added、Modified 或 Deleted)和该对象的最新版本号(resourceVersion)。
-
客户端对该事件通知进行处理,并记录下该资源对象的最新版本号。
-
客户端继续等待下一个事件通知,直到连接关闭或发生错误。
-
如果连接关闭或发生错误,客户端可以重新连接并重复上述流程,以获取该资源对象的最新状态。
总体来说,k8s list-watch 流程可以帮助客户端实时监控 k8s 资源对象的变化,并根据需要进行响应。这对于 k8s 应用程序的开发和运维非常有帮助。
自测题