第 1 章 节点概述
1.1. 关于节点
节点是 Kubernetes 集群中的虚拟机或裸机。Worker 节点托管您的应用程序容器,分组为 pod。control plane 节点运行控制 Kubernetes 集群所需的服务。在 OpenShift Container Platform 中,control plane 节点不仅仅包含用于管理 OpenShift Container Platform 集群的 Kubernetes 服务。
在集群中运行稳定和健康的节点是基本运行托管应用程序的基本操作。在 OpenShift Container Platform 中,您可以通过代表节点的 Node
对象访问、管理和监控节点。使用 OpenShift CLI(oc
)或 Web 控制台,您可以在节点上执行以下操作。
节点的以下组件负责维护运行 pod 并提供 Kubernetes 运行时环境。
- 容器运行时:容器运行时负责运行容器。Kubernetes 提供多个运行时,如 containerd、cri-o、rktlet 和 Docker。
- kubelet:: Kubelet 在节点上运行并读取容器清单。它确保定义的容器已启动且正在运行。kubelet 进程维护工作和节点服务器的状态。kubelet 管理网络流量和端口转发。kubelet 管理仅由 Kubernetes 创建的容器。
- kube-proxy:: Kube-proxy 在集群的每个节点上运行,并维护 Kubernetes 资源之间的网络流量。Kube-proxy 可确保网络环境被隔离并可访问。
- DNS:: 集群 DNS 是一个 DNS 服务器,它为 Kubernetes 服务提供 DNS 记录。由 Kubernetes 启动的容器会在其 DNS 搜索中自动包含此 DNS 服务器。
读取操作
通过读操作,管理员可以或开发人员获取 OpenShift Container Platform 集群中节点的信息。
- 列出集群中的所有节点。
- 获取节点的相关信息,如内存和 CPU 使用量、健康、状态和年龄。
- 列出节点上运行的 pod。
管理操作
作为管理员,您可以通过几个任务轻松地在 OpenShift Container Platform 集群中管理节点:
-
添加或更新节点标签。标签是应用于
Node
对象的键值对。您可以使用标签来控制 pod 的调度。 -
使用自定义资源定义(CRD)或
kubeletConfig
对象更改节点配置。 -
配置节点以允许或禁止调度 pod。具有
Ready
状态的健康 worker 节点默认允许 pod 放置,而 control plane 节点没有;您可以通过将 worker 节点配置为不可调度,并将 control plane 节点配置为可以调度。 -
使用
system-reserved
设置为节点分配资源。您可以允许 OpenShift Container Platform 自动决定节点的最佳system-reserved
CPU 和内存资源,也可以手动决定并为节点设置最佳资源。 - 根据节点上的处理器内核数、硬限制或两者,配置可在节点上运行的 pod 数量。
- 使用 pod 反关联性来安全地重新引导节点。
- 通过使用机器集缩减集群,从集群中删除节点。要从裸机集群中删除节点,您必须首先排空节点上的所有 pod,然后手动删除该节点。
增强操作
OpenShift Container Platform 不仅支持访问和管理节点;作为管理员,您可以在节点上执行以下任务,使集群更高效、应用程序友好,并为开发人员提供更好的环境。
- 使用 Node Tuning Operator,为需要一定等级内核调整的高性能应用程序管理节点级别的性能优化。
- 在节点上启用 TLS 安全配置集,以保护 kubelet 和 Kubernetes API 服务器之间的通信。
- 使用守护进程集在节点上自动运行后台任务。您可以创建并使用守护进程集来创建共享存储,在每个节点上运行日志记录 pod,或者在所有节点上部署监控代理。
- 使用垃圾回收释放节点资源。您可以通过删除终止的容器以及任何正在运行的 pod 不引用的镜像来确保节点高效运行。
- 在一组节点中添加内核参数。
- 将 OpenShift Container Platform 集群配置为在网络边缘(远程 worker 节点)具有 worker 节点。如需有关在 OpenShift Container Platform 集群中具有远程 worker 节点的挑战,以及一些在远程 worker 节点上管理 pod 的建议方法,请参阅在网络边缘使用远程 worker 节点。