服务的体系结构和依赖关系
查看样本集群体系结构以及在经典或 VPC 集群中创建的组件。
经典集群
以下建筑概述仅适用于经典基础设施提供商。 有关 VPC 基础架构提供者的体系结构概述,请参阅 VPC 集群体系结构。
非VRF或VRF账户,仅具有公共云服务终端
下图显示了集群的组件,以及当仅 启用公共云服务终端 时,这些组件在非VRF或VRF启用账户中的交互方式。
支持VRF的账户,具有私有云和公有云服务的终端
下图显示了集群的组件,以及 启用公共和私有云服务终端后,这些组件在启用VRF的帐户中的交互方式。
Kubernetes 主节点组件
Kubernetes 主节点的任务是管理集群中的所有计算、网络和存储资源,并确保容器化应用程序和服务均匀部署到集群中的各工作程序节点。 根据应用程序和服务的配置方式,主节点会确定有足够资源来满足应用程序需求的工作程序节点。
Kubernetes 主节点和所有主节点组件仅供您专用,并且不会与其他 IBM 客户共享。
下表描述了 Kubernetes 主节点的组件。
kube-apiserver
- Kubernetes API 服务器充当从工作程序节点到 Kubernetes 主节点的所有集群管理请求的主入口点。 Kubernetes API 服务器会验证并处理更改 Kubernetes 资源(例如,pod 或服务)状态的请求,并将此状态存储在 etcd 中。
konnectivity-server
- Konnectivity服务器与Konnectivity代理配合使用,将主节点与工作节点安全连接起来。 此连接支持对 pod 和服务的
apiserver proxy
调用,还支持对 kubelet 的kubectl exec
、attach
和logs
调用。 etcd
etcd
是一种高可用性键/值存储,用于存储集群的所有 Kubernetes 资源(例如,服务、部署和 pod)的状态。 etcd 中的数据会备份到 IBM 管理的加密存储器实例中。kube-scheduler
- Kubernetes 调度程序监视新创建的 pod,并根据容量、性能需求、策略约束、反亲缘关系规范和工作负载需求来决定这些 pod 的部署位置。 如果找不到与这些需求相匹配的工作程序节点,那么不会在集群中部署 pod。
kube-controller-manager
- Kubernetes 控制器管理器是一种守护程序,用于监视集群资源(例如,副本集)的状态。 当资源的状态更改时(例如,如果副本集内的 pod 停止运行),控制器管理器会开始更正操作以实现所需的状态。
工作程序节点组件
每个工作程序节点都是物理机器(裸机)或是在云环境中的物理硬件上运行的虚拟机。 供应工作程序节点时,您将确定可供该工作程序节点上托管的容器使用的资源。 您的工作节点在出厂时已安装 IBM 管理的容器运行时、独立的计算资源、网络连接和卷服务。 内置安全性功能提供了隔离、资源管理功能和工作程序节点安全合规性。
工作节点和所有工作节点组件只供您专用,不与其他 IBM 客户共享。 但是,如果使用工作程序节点虚拟机,那么可能会根据您选择的硬件隔离级别与其他客户共享底层硬件。
不支持修改默认的工作节点组件,例如 kubelet
,否则可能会导致意外结果。
下表描述了工作节点的组成。
kube-system
命名空间
ibm-master-proxy
ibm-master-proxy
会将请求从工作程序节点转发到高可用性主节点副本的 IP 地址。 在单专区集群中,主节点有三个副本,每个副本位于单独的主机上,使用一个主节点 IP 地址和域名。 对于位于支持多专区的专区中的集群,主节点的三个副本在各专区中进行分布。 因此,每个主节点都有自己的 IP 地址(已向 DNS 注册),并且整个集群主节点使用一个域名。konnectivity-agent
- Konnectivity代理与Konnectivity服务器协同工作,将主节点与工作节点安全连接起来。 此连接支持对 pod 和服务的
apiserver proxy
调用,还支持对 kubelet 的kubectl exec
、attach
和logs
调用。 kubelet
- kubelet 是一个 pod,在每个工作程序节点上运行,负责监视在工作程序节点上运行的 pod 的运行状况,以及监视 Kubernetes API 服务器发送的事件。 根据事件,kubelet 会创建或除去 pod,确保活性和就绪性探测,并向 Kubernetes API 服务器报告 pod 的阶段状态。
coredns
- 缺省情况下,Kubernetes 会在集群上安排 CoreDNS pod(或者在 V1.12 和更低版本中,安排 KubeDNS pod)和服务。 容器会自动使用 DNS 服务的 IP 来解析对其他 pod 和服务的搜索中的 DNS 名称。
calico
- Calico 管理集群的网络策略,并由如下一些组件组成。
calico-cni
:Calico 容器网络接口(CNI)管理容器的网络连接,并在容器被删除时释放分配的资源。calico-ipam
:Calico IPAM管理容器的IP地址分配。calico-node
:Calico 节点是一个容器,用于将网络容器与 Calico 所需的各个组件捆绑在一起。calico-policy-controller
:Calico 策略控制器负责监控网络流入和流出的流量,确保其符合设定的网络策略。 如果集群中不允许该流量,那么会阻止对该集群的访问。 Calico 策略控制器还用于为集群创建和设置网络策略。kube-proxy
- Kubernetes 网络代理是一种守护程序,在每个工作程序节点上运行,并且为集群中运行的服务转发 TCP 和 UDP 网络流量或对这些流量进行负载均衡。
kube-dashboard
- Kubernetes 仪表板是一种基于 Web 的 GUI,允许用户对集群和集群中运行的应用程序进行管理和故障诊断。
heapster
- Heapster 是一种集群范围的监视和事件数据聚集器。 Heapster pod 会发现集群中的所有节点,并查询每个节点的 kubelet 中的使用情况信息。 可以在 Kubernetes 仪表板中找到利用率图形。
- Ingress ALB
- Ingress 是一种 Kubernetes 服务,可用于通过将公共或专用请求转发到集群中的多个应用程序,均衡集群中的网络流量工作负载。 要通过公用或专用网络公开应用程序,必须创建 Ingress 资源,以向 Ingress 应用程序负载均衡器 (ALB) 注册应用程序。 然后,可以使用单个 URL 或 IP 地址来访问多个应用程序。
- 存储器提供者
- 每个集群都设置有一个插件,用于供应文件存储器。 您可以选择安装其他附加组件,例如块存储器。
ibm-system
命名空间
- 日志记录和度量
-
在使用日志和度量值时,可以使用 IBM Cloud Logs 和 IBM Cloud® Monitoring 服务来扩展收集和保留功能。 负载均衡器
-
负载均衡器是一种 Kubernetes 服务,可用于通过将公共或专用请求转发到应用程序,均衡集群中的网络流量工作负载。
default
命名空间
- 应用程序 pod 和服务
- 在
default
命名空间或您创建的命名空间中,您可以在 Pod 和服务中部署应用程序,以便与这些 Pod 进行通信。
VPC 集群
以下图和表描述了在 IBM Cloud Kubernetes Service VPC 集群体系结构中设置的缺省组件。
以下建筑概述仅适用于VPC基础设施提供商。 有关经典基础架构提供者的体系结构概述,请参阅经典集群体系结构。
组件 | 描述 |
---|---|
Master | 主节点组件(包括 API 服务器和 etcd)有三个副本,可跨专区分布,以实现更高可用性。 主节点包含社区 Kubernetes 体系结构中描述的相同组件。 主组件和所有主组件仅供您专用,并且不会与其他 IBM 客户共享。 |
工作程序节点 | 使用 IBM Cloud Kubernetes Service 时,集群管理的虚拟机是称为工作程序节点的实例。 这些工作节点虚拟机和所有工作节点组件仅供您使用,不与其他 IBM 客户共享。 不过,底层硬件与其他 IBM 客户共享。 您可以通过 IBM Cloud Kubernetes Service 提供的自动化工具(如 API、CLI 或控制台)管理 Worker 节点。 与传统的集群不同,您不会在基础设施门户或单独的基础设施账单中看到VPC计算工作节点,而是通过 IBM Cloud Kubernetes Service 管理工作节点的所有维护和计费活动。 工作节点包含与经典架构中描述的 相同的组件。 |
集群联网 | 工作程序节点在指定专区中的 VPC 子网中进行创建。 默认情况下,集群的公共和私有云服务端点处于启用状态。 主节点与工作程序节点之间的通信在专用网络上执行。 已认证的外部用户可以通过公用网络与主节点进行通信,例如运行 kubectl 命令。 您可以通过在专用网络上设置VPC VPN,选择将集群设置为与本地服务通信。 |
应用程序联网 | 可以为集群中的应用程序创建 Kubernetes LoadBalancer 服务,这将在集群外部的 VPC 中自动供应 VPC 负载均衡器。 这是多专区负载均衡器,通过在工作程序节点上自动打开的专用 NodePort 来路由应用程序的请求。 有关更多信息,请参阅使用 VPC 负载均衡器公开应用程序。 Calico 用作集群联网策略光纤网。 |
存储器 | 只能设置块持久性存储器。 块存储器作为集群附加组件提供。 有关更多信息,请参阅 设置 IBM Block Storage for IBM Cloud。 |