4.3. 在 OpenShift Virtualization 上部署托管的 control plane
使用托管的 control plane 和 OpenShift Virtualization,您可以使用 KubeVirt 虚拟机托管的 worker 节点创建 OpenShift Container Platform 集群。
OpenShift Virtualization 上的托管 control plane 提供了几个优点:
- 通过在相同的底层裸机基础架构中打包托管的 control plane 和托管集群来提高资源使用量
- 分离托管的 control plane 和托管集群,以提供强大的隔离
- 通过删除裸机节点 bootstrap 过程来减少集群置备时间
- 管理同一基本 OpenShift Container Platform 集群中的多个发行版本
托管的 control plane 功能默认启用。
您可以使用托管的 control plane 命令行界面 hcp 创建 OpenShift Container Platform 托管的集群。托管的集群自动导入为受管集群。如果要禁用此自动导入功能,请参阅"禁用托管集群自动导入到多集群引擎 Operator"。
要在 OpenShift Virtualization 上创建 OpenShift Container Platform 集群,必须满足几个先决条件。
-
您需要管理员访问由
KUBECONFIG环境变量指定的 OpenShift Container Platform 集群版本 4.14 或更高版本。 OpenShift Container Platform 管理集群必须启用通配符 DNS 路由,如下所示:
$ oc patch ingresscontroller -n openshift-ingress-operator default \ --type=json \ -p '[{ "op": "add", "path": "/spec/routeAdmission", "value": {wildcardPolicy: "WildcardsAllowed"}}]'- OpenShift Container Platform 管理集群安装了 OpenShift Virtualization 版本 4.14 或更高版本。如需更多信息,请参阅"使用 Web 控制台安装 OpenShift Virtualization"。
- OpenShift Container Platform 管理集群是内部裸机。
-
OpenShift Container Platform 管理集群必须配置为
OVNKubernetes作为默认 pod 网络 Container Network Interface (CNI)。只有在 CNI 是 OVN-Kubernetes 时,节点才支持实时迁移。 OpenShift Container Platform 管理集群有一个默认存储类。如需更多信息,请参阅"安装后存储配置"。以下示例演示了如何设置默认存储类:
$ oc patch storageclass ocs-storagecluster-ceph-rbd \ -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'- 当您为托管 control plane 配置存储时,请考虑推荐的 etcd 实践。要确保您满足延迟要求,请将快速存储设备专用于每个 control-plane 节点上运行的所有托管 control plane etcd 实例。您可以使用 LVM 存储为托管的 etcd pod 配置本地存储类。如需更多信息,请参阅"推荐 etcd 实践"和"使用逻辑卷管理器存储的持久性存储"。
-
在托管 OpenShift Virtualization 虚拟机的 OpenShift Container Platform 集群中,您必须使用
ReadWriteMany(RWX)存储类,以便启用实时迁移。 -
您有
quay.io/openshift-release-dev仓库的有效 pull secret 文件。如需更多信息,请参阅"在任何带有用户置备的基础架构的 x86_64 平台上安装 OpenShift"。 - 已安装托管的 control plane 命令行界面。
- 您已配置了负载均衡器。如需更多信息,请参阅"配置 MetalLB"。
为获得最佳网络性能,请在托管 KubeVirt 虚拟机的 OpenShift Container Platform 集群上使用网络最大传输单元(MTU)为 9000 或更高。如果您使用较低的 MTU 设置,则托管 pod 的网络延迟和吞吐量会受到影响。只有在 MTU 为 9000 或更高时,在节点池中启用 multiqueue。
重要您不能作为安装后任务更改集群的 MTU 值。
multicluster engine Operator 至少有一个受管 OpenShift Container Platform 集群。
local-cluster会自动导入。有关local-cluster的更多信息,请参阅 multicluster engine Operator 文档中的"高级配置"。您可以运行以下命令来检查 hub 集群的状态:$ oc get managedclusters local-cluster- 确保每个托管集群都有一个集群范围的唯一名称。
-
不要使用
clusters作为托管的集群名称。 - 不要在多集群引擎 Operator 受管集群的命名空间中创建托管集群。
4.3.1.1. 防火墙和端口要求 复制链接链接已复制到粘贴板!
确保满足防火墙和端口要求,以便端口可以在管理集群、control plane 和托管的集群间进行通信。
kube-apiserver服务默认在端口 6443 上运行,需要入口访问 control plane 组件之间的通信。-
如果使用
NodePort发布策略,请确保公开分配给kube-apiserver服务的节点端口。 - 如果使用 MetalLB 负载均衡,允许入口访问用于负载均衡器 IP 地址的 IP 范围。
-
如果使用
-
如果使用
NodePort发布策略,请为ignition-server和Oauth-server设置使用防火墙规则。 konnectivity代理建立一个反向隧道,允许在托管集群上进行双向通信,需要在端口 6443 上访问集群 API 服务器地址。通过该出口访问权限,代理可以访问kube-apiserver服务。- 如果集群 API 服务器地址是一个内部 IP 地址,允许从工作负载子网访问端口 6443 上的 IP 地址。
- 如果地址是一个外部 IP 地址,允许从节点通过端口 6443 出口到该外部 IP 地址。
- 如果您更改了 6443 的默认端口,请调整规则以反映该更改。
- 确保打开集群中运行的工作负载所需的端口。
- 使用防火墙规则、安全组或其他访问控制来仅限制对所需源的访问。除非需要,否则请避免公开公开端口。
- 对于生产环境部署,请使用负载均衡器来简化通过单个 IP 地址的访问。