Kubernetes教程

Kubernetes资源管理/扩展

Kubernetes资源对象

Kubernetes是一种强大的容器编排平台,提供了多种资源对象来定义和管理应用程序的各个方面。以下是几个常见的Kubernetes资源对象:

Pod(容器组):Pod是Kubernetes中最小的可部署单元,它包含一个或多个紧密关联的容器。Pod提供了一个共享的网络命名空间和存储卷,这些容器可以一起协同工作。Pod也可以被水平扩展和自动调度到集群中的节点上。

ReplicaSet(副本集):ReplicaSet用于定义一组具有相同配置的Pod副本。它确保指定数量的Pod副本正在运行,并在发生故障或扩展时进行自动修复和扩展。ReplicaSet允许您定义Pod的副本数量、选择标准和更新策略。

Deployment(部署):Deployment是ReplicaSet的更高级别抽象,通过管理ReplicaSet来实现应用程序的部署和升级。Deployment提供了滚动更新、回滚和版本控制等功能,使应用程序的部署过程更加可控和可靠。

Service(服务):Service定义了一组Pod的逻辑集合,并为它们提供一个稳定的网络终结点。Service可以是内部服务(仅在集群内部可访问)或外部服务(公开访问的入口点),并通过负载均衡器将流量路由到后端Pod。

Ingress(入口):Ingress是一种Kubernetes资源对象,它定义了从集群外部访问集群内部服务的规则和配置。Ingress可以根据域名或路径将流量路由到不同的后端服务,并支持SSL/TLS终止和负载均衡等功能。

ConfigMap(配置映射):ConfigMap用于将配置数据存储为Kubernetes资源,供应用程序容器使用。它可以包含环境变量、配置文件、命令行参数等信息,而无需重新构建镜像。ConfigMap可以被挂载到Pod中的容器,并作为文件或环境变量提供给应用程序使用。

Secret(密钥):Secret用于安全地存储敏感信息,如密码、API密钥等。Secret可以被挂载到Pod中的容器,并作为文件或环境变量提供给应用程序使用。Secret的值在Kubernetes中是经过加密的,只有具有访问权限的用户才能解密。

这些资源对象是Kubernetes中常用的一些基本构建块,通过组合和配置它们可以定义和管理复杂的应用程序和服务。

Kubernetes副本和扩展

Kubernetes副本

Kubernetes中的副本是通过Deployment来实现的,Deployment是Kubernetes中的一个高级抽象,它允许用户定义和管理Pod、Service、ConfigMap等资源,以及控制它们的副本数、滚动升级策略等。当用户创建了一个Deployment对象时,Kubernetes会自动为该对象的每个副本创建一个Pod,并且根据用户定义的策略来管理这些Pod的副本数,当某个Pod出现故障或被删除时,Kubernetes会自动创建一个新的Pod来替换它,从而保证应用程序的高可用性。

Kubernetes扩展

扩展(Extensions)是一些扩充 Kubernetes 能力并与之深度集成的软件组件, 它们调整 Kubernetes 的工作方式使之支持新的类型和新的硬件种类。

大多数用户使用托管的Kubernetes服务或预安装的发行版,这些集群通常已经安装了一些扩展,因此大部分用户不需要手动安装扩展,更不需要编写新的扩展。

在Kubernetes中,可以通过编写客户端程序来自动化操作。任何能够向Kubernetes API发送读写指令的程序都可以提供有用的自动化能力。自动化组件可以运行在集群内部或外部。通过遵循相应的指南,你可以编写高可用、稳定运行的自动化组件。这些自动化组件通常适用于所有Kubernetes集群,包括托管集群和受控环境中的安装。

编写客户端程序时,可以采用特定的控制器模式与Kubernetes进行协作。控制器通常会读取某个对象的规范(.spec),执行某些操作,并更新对象的状态(.status)。

当Kubernetes充当客户端并调用远程服务时,被称为Webhook,而远程服务则被称为Webhook后端。与定制的控制器类似,Webhook也引入了可能的故障点。

在Kubernetes之外,"Webhook"一词通常指一种异步通知机制,其中Webhook调用用于向另一个系统或组件发送单向通知。但在Kubernetes生态系统中,甚至同步的HTTP调用也经常称为"Webhook"。

扩展点

另外Kubernetes提供了多个扩展点,下图展示了这些扩展点并展示了客户端访问集群的方式。

Kubernetes扩展点

图示要点:

1.用户通常使用 kubectl 与 Kubernetes API 交互, 插件可定制客户端的行为,有一些通用的扩展可以应用到不同的客户端,还有一些特定的方式可以扩展 kubectl。

2.API 服务器处理所有请求,API 服务器中的几种扩展点能够使用户对请求执行身份认证、 基于其内容阻止请求、编辑请求内容、处理删除操作等等,这些扩展点在 API 访问扩展节详述。

3.API 服务器能提供各种类型的资源(Resources) 服务, 诸如 pods 的内置资源类型是由 Kubernetes 项目。

4.Kubernetes 调度器负责决定 Pod 要放置到哪些节点上执行,有几种方式来扩展调度行为。

5.Kubernetes 中的很多行为都是通过称为控制器(Controller)的程序来实现的, 这些程序也都是 API 服务器的客户端。控制器常常与定制资源结合使用。 进一步了解请查阅结合使用新的 API 与自动化组件和更改内置资源。

6.Kubelet 运行在各个服务器(节点)上,帮助 Pod 展现为虚拟的服务器并在集群网络中拥有自己的 IP。 网络插件使得 Kubernetes 能够采用不同实现技术来连接 Pod 网络。

7.你可以使用设备插件集成定制硬件或其他专用的节点本地设施, 使得这些设施可用于集群中运行的 Pod。Kubelet 包括了对使用设备插件的支持。

广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com。(#改为@)

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

目录