Kubernetes简略架构

kubectl

kubectl是Kubernetes的命令行工具。它的全称为Kubernetes Command Line Tool,是用于管理Kubernetes集群的工具。它可以用来创建、更新、删除资源对象、查看日志等操作

Node:

Kubernetes 通过将容器放入在节点(Node)上运行的Pod 中来执行你的工作负载。

cAdvisor

CAdvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。

REST

REST API是一种用于与Kubernetes集群进行交互的编程接口。它是基于REST(Representational State Transfer)原则设计的,通过HTTP协议进行通信,并使用JSON或者其他格式作为数据交换的载体。

Kubernetes的REST API提供了一组标准的HTTP请求方法(如GET、POST、PUT、DELETE等),用于对集群中的资源进行操作和管理。通过REST API,用户可以执行各种操作,例如创建、删除、更新和查询Kubernetes资源,如Pods、Services、Deployments等。

与一般API相比,Kubernetes的REST API具有以下一些特点和区别:

标准化接口:Kubernetes的REST API遵循一组标准的API设计原则,例如使用HTTP方法来表示操作类型(GET、POST、PUT、DELETE),使用URL路径来定位资源,使用HTTP状态码来表示操作结果等

基于资源的操作:Kubernetes的REST API以资源为中心,用户可以操作和管理各种资源对象,如Pods、Services、Deployments等。每个资源都有自己的API端点,可以使用相应的HTTP请求方法对其进行操作。

无状态性:REST API是无状态的,服务器不会在请求之间保留任何会话信息。每个请求都是独立的,包含了所有必要的信息来执行操作,服务器不会保留任何上下文状态。

数据交换格式:REST API通常使用JSON或者其他格式(如XML)来进行数据交换。在Kubernetes中,JSON是常用的数据格式,用于表示资源对象、操作结果和错误信息。

客户端驱动:REST API允许开发者使用各种编程语言和工具来编写客户端代码。通过HTTP请求,客户端可以与Kubernetes集群进行通信,执行相应的操作。

总之,Kubernetes的REST API是一种用于与Kubernetes集群进行交互的编程接口,基于REST原则设计,使用HTTP协议和JSON等数据格式进行通信。它提供了对Kubernetes资源的操作和管理能力,并允许开发者使用各种编程语言和工具来编写客户端代码。

Scheduler

Scheduler是控制平面组件之一,负责决定将容器化的应用程序调度到集群中的哪些节点上运行。

Scheduler的主要作用是根据集群中的资源情况、应用程序的需求和调度策略,动态地选择最佳的节点来部署容器。它考虑了节点的资源可用性、负载平衡、亲和性和反亲和性规则等因素,以确保应用程序在集群中得到适当的分配,同时提供高可用性和弹性。

scheduling actuator

Scheduling Actuator是Spring Boot Actuator中的一个组件,用于与Kubernetes集群的调度器进行交互。它提供了一组REST API,用于检查和管理Kubernetes集群中的调度器。使用Scheduling Actuator,可以获取有关调度器的信息,如节点列表、调度策略和调度规则,并可以操作调度器,如手动触发重新调度、调整调度策略等。

因此,Scheduler是Kubernetes的一个核心组件,用于决定容器的调度和部署,而Scheduling Actuator是Spring Boot Actuator中与Kubernetes调度器交互的组件。它们之间的关系是Scheduling Actuator提供了与Kubernetes调度器的交互接口,使得可以通过REST API来管理和控制调度器的行为。

controller manager

Controller Manager是一个运行在主节点上的进程,它包含了多个控制器的实现,每个控制器负责管理一个或多个资源。以下是一些常见的控制器:

ReplicaSet Controller:用于确保Pod副本数量与副本集定义的期望数量一致。

Deployment Controller:在ReplicaSet Controller的基础上提供了应用程序的无缝升级和回滚功能。

StatefulSet Controller:用于管理有状态应用程序的创建、扩展和更新。

DaemonSet Controller:确保每个节点上都运行一个Pod的副本,用于在集群中的每个节点上运行守护进程。

Job Controller:用于管理一次性任务的创建和执行。

Controller Manager负责启动和管理这些控制器的实例,并监控它们的状态。它周期性地检查控制器的健康状态,确保它们正常运行,并在必要时重新启动失败的控制器。

通过Controller Manager,Kubernetes能够实现集群的自动化管理,保持资源的期望状态,并根据需要进行调整和修复。这种自动化管理和控制的机制可以提高应用程序的可靠性、可伸缩性和弹性,减轻了管理员的负担,并提供了一致的资源状态和行为。

distributed watchable storage

分布式可观察存储(Distributed Watchable Storage)指的是一种用于存储和观察集群状态变化的分布式存储系统。

Kubernetes使用分布式可观察存储来存储和管理集群中的各种资源对象的状态信息。这些资源对象包括Pods、Services、ConfigMaps、Secrets等。分布式可观察存储允许Kubernetes的各个组件和控制器监视(watch)这些资源对象的变化,并在变化发生时做出相应的响应。

通过分布式可观察存储,Kubernetes实现了集群状态的一致性和可观察性。各个组件和控制器可以实时监视资源对象的变化,以便做出相应的调整和决策。这对于实现资源的动态调度、自动扩展和故障恢复等功能至关重要。

Proxy

Proxy(代理)是一个网络代理组件,用于帮助集群内的服务和应用程序进行网络通信。

Proxy的主要作用是为集群中的Pod提供服务的网络代理功能。它负责监听集群内的网络通信请求,并根据请求的目标地址和端口,将请求转发到正确的目标Pod上。

Proxy在Kubernetes中起到了重要的作用,它隐藏了底层网络细节,使得服务和应用程序能够透明地进行通信,而不需要关注底层网络拓扑和节点之间的具体连接方式。通过Proxy,Kubernetes提供了一种灵活且可扩展的网络模型,支持服务之间的可靠通信和负载均衡。

authentication

Authentication(身份验证)是指验证用户、服务账号或其他实体的身份,以确保它们具有访问集群资源的权限。

Kubernetes提供了多种身份验证机制,用于验证和授权用户和服务账号的访问权限。以下是一些常见的Kubernetes身份验证机制:

X.509证书:Kubernetes支持使用X.509数字证书进行身份验证。通过使用预先颁发的证书,Kubernetes可以验证用户或服务账号的身份并授予相应的权限。这种身份验证方式通常用于集群管理员、用户和其他可信实体的身份验证。

静态Token:Kubernetes允许通过静态Token进行身份验证。这些Token是提前定义和配置的,并与特定的用户或服务账号相关联。用户可以使用这些Token进行身份验证,以获取访问集群资源的权限。

用户名和密码:Kubernetes还支持使用用户名和密码进行身份验证。用户可以提供用户名和密码来验证其身份,并获取相应的访问权限。这种身份验证机制通常用于用户身份验证,如集群管理员或普通用户。

OpenID Connect(OIDC):Kubernetes支持使用OpenID Connect协议进行身份验证和授权。OpenID Connect是一个基于OAuth 2.0的开放标准,允许用户使用现有的身份提供商(如Google、Azure AD等)进行身份验证,并获得访问令牌来访问Kubernetes集群。

身份验证是Kubernetes中确保安全访问的重要组成部分。通过身份验证机制,Kubernetes可以验证用户和服务账号的身份,并根据其身份授予适当的访问权限。这有助于保护集群资源免受未经授权的访问和潜在的安全威胁。

相关推荐
€☞扫地僧☜€1 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
58沈剑2 小时前
80后聊架构:架构设计中两个重要指标,延时与吞吐量(Latency vs Throughput) | 架构师之路...
架构
全能全知者2 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器
想进大厂的小王4 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
阿伟*rui5 小时前
认识微服务,微服务的拆分,服务治理(nacos注册中心,远程调用)
微服务·架构·firefox
ZHOU西口6 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
deephub8 小时前
Tokenformer:基于参数标记化的高效可扩展Transformer架构
人工智能·python·深度学习·架构·transformer
景天科技苑8 小时前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
架构师那点事儿9 小时前
golang 用unsafe 无所畏惧,但使用不得到会panic
架构·go·掘金技术征文
wclass-zhengge9 小时前
K8S篇(基本介绍)
云原生·容器·kubernetes