10.4. 安装程序置备的安装后配置
成功部署安装程序置备的集群后,请考虑以下安装后流程。
10.4.1. 为断开连接的集群配置 NTP(可选)
OpenShift Container Platform 在集群节点上安装 chrony
网络时间协议(NTP)服务。使用以下步骤在 control plane 节点上配置 NTP 服务器,并将 worker 节点配置为成功部署后,将 worker 节点配置为 control plane 节点的 NTP 客户端。
OpenShift Container Platform 节点必须在日期和时间上达成一致才能正确运行。当 worker 节点从 control plane 节点上的 NTP 服务器检索日期和时间时,它会启用未连接到可路由网络的集群的安装和操作,因此无法访问更高的 stratum NTP 服务器。
流程
为 control plane 节点创建一个 Butane 配置
99-master-chrony-conf-override.bu
,包括chrony.conf
文件的内容。注意如需有关 Butane 的信息,请参阅"使用 Butane 创建机器配置"。
但ane 配置示例
variant: openshift version: 4.9.0 metadata: name: 99-master-chrony-conf-override labels: machineconfiguration.openshift.io/role: master storage: files: - path: /etc/chrony.conf mode: 0644 overwrite: true contents: inline: | # Use public servers from the pool.ntp.org project. # Please consider joining the pool (https://www.pool.ntp.org/join.html). # The Machine Config Operator manages this file server openshift-master-0.<cluster-name>.<domain> iburst 1 server openshift-master-1.<cluster-name>.<domain> iburst server openshift-master-2.<cluster-name>.<domain> iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 keyfile /etc/chrony.keys commandkey 1 generatecommandkey noclientlog logchange 0.5 logdir /var/log/chrony # Configure the control plane nodes to serve as local NTP servers # for all worker nodes, even if they are not in sync with an # upstream NTP server. # Allow NTP client access from the local network. allow all # Serve time even if not synchronized to a time source. local stratum 3 orphan
- 1
- 您必须将
<cluster-name>
替换为集群名称,并将<domain>
替换为完全限定域名。
使用 Butane 生成
MachineConfig
对象文件99-master-chrony-conf-override.yaml
,其中包含要发送到 control plane 节点的配置:$ butane 99-master-chrony-conf-override.bu -o 99-master-chrony-conf-override.yaml
为引用 control plane 节点上的 NTP 服务器的 worker 节点创建 Butane 配置
99-worker-chrony-conf-override.bu
,包括chrony.conf
文件的内容。但ane 配置示例
variant: openshift version: 4.9.0 metadata: name: 99-worker-chrony-conf-override labels: machineconfiguration.openshift.io/role: worker storage: files: - path: /etc/chrony.conf mode: 0644 overwrite: true contents: inline: | # The Machine Config Operator manages this file. server openshift-master-0.<cluster-name>.<domain> iburst 1 server openshift-master-1.<cluster-name>.<domain> iburst server openshift-master-2.<cluster-name>.<domain> iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 keyfile /etc/chrony.keys commandkey 1 generatecommandkey noclientlog logchange 0.5 logdir /var/log/chrony
- 1
- 您必须将
<cluster-name>
替换为集群名称,并将<domain>
替换为完全限定域名。
使用 Butane 生成
MachineConfig
对象文件99-worker-chrony-conf-override.yaml
,其中包含要交付至 worker 节点的配置:$ butane 99-worker-chrony-conf-override.bu -o 99-worker-chrony-conf-override.yaml
将
99-master-chrony-conf-override.yaml
策略应用到 control plane 节点。$ oc apply -f 99-master-chrony-conf-override.yaml
输出示例
machineconfig.machineconfiguration.openshift.io/99-master-chrony-conf-override created
将
99-worker-chrony-conf-override.yaml
策略应用到 worker 节点。$ oc apply -f 99-worker-chrony-conf-override.yaml
输出示例
machineconfig.machineconfiguration.openshift.io/99-worker-chrony-conf-override created
检查应用的 NTP 设置的状态。
$ oc describe machineconfigpool
10.4.2. 安装后启用置备网络
通过为裸机集群提供支持的安装程序和安装程序置备安装,可以在没有 provisioning
网络的情况下部署集群。当每个节点的基板管理控制器可以通过 baremetal 网络
路由时,此功能适用于概念验证集群或仅使用 Redfish 虚拟介质单独部署的情况。
您可在安装后使用 Cluster Baremetal Operator(CBO)启用 置备
网络。
先决条件
- 必须存在专用物理网络,连接到所有 worker 和 control plane 节点。
- 您必须隔离原生、未标记的物理网络。
-
当
provisioningNetwork
配置设置为Managed
时,网络无法有一个 DHCP 服务器。 -
您可以省略 OpenShift Container Platform 4.9 中的
provisioningInterface
设置,以使用bootMACAddress
配置设置。
流程
-
设置
provisioningInterface
设置时,首先确定集群节点的调配接口名称。例如:eth0
oreno1
。 -
在集群节点的
调配
网络接口上启用预引导执行环境(PXE)。 检索
provisioning
网络的当前状态,并将其保存到 provisioning 自定义资源(CR)文件中:$ oc get provisioning -o yaml > enable-provisioning-nw.yaml
修改 provisioning CR 文件:
$ vim ~/enable-provisioning-nw.yaml
向下滚动到
provisioningNetwork
配置设置,并将它从Disabled
改为Managed
。然后,在provisioningNetwork
设置后添加provisioningOSDownloadURL
,provisioningIP
,provisioningNetworkCIDR
,provisioningDHCPRange
,provisioningInterface
, 和watchAllNameSpaces
配置设置。为每项设置提供适当的值。apiVersion: v1 items: - apiVersion: metal3.io/v1alpha1 kind: Provisioning metadata: name: provisioning-configuration spec: provisioningNetwork: 1 provisioningOSDownloadURL: 2 provisioningIP: 3 provisioningNetworkCIDR: 4 provisioningDHCPRange: 5 provisioningInterface: 6 watchAllNameSpaces: 7
- 1
provisioningNetwork
是Managed
、Unmanaged 或
Disabled
之一。当设置为Managed
时,Metal3 管理调配网络,CBO 使用配置的 DHCP 服务器部署 Metal3 pod。当设置为Unmanaged
时,系统管理员手动配置 DHCP 服务器。- 2
provisioningOSDownloadURL
是一个有效的 HTTPS URL,具有有效的 sha256 checksum,它允许 Metal3 pod 下载以.qcow2.gz 或.qcow2.
xz 结尾的 qcow2
操作系统镜像。置备网络是Managed
、Unmanaged
或Disabled
都需要此字段。例如:http://192.168.0.1/images/rhcos-<version>.x86_64.qcow2.gz?sha256=<sha>
。- 3
provisioningIP
是 DHCP 服务器和 ironic 用于调配网络的静态 IP 地址。这个静态 IP 地址必须在provisioning
子网内,且不在 DHCP 范围内。如果配置这个设置,它必须具有有效的 IP 地址,即使provisioning
网络是Disabled
。静态 IP 地址绑定到 metal3 pod。如果 metal3 pod 失败并移动到其他服务器,静态 IP 地址也会移到新服务器。- 4
- 无类别域间路由(CIDR)地址。如果配置这个设置,它必须具有有效的 CIDR 地址,即使
provisioning
网络是Disabled
。例如:192.168.0.1/24
。 - 5
- DHCP 范围。此设置仅适用于
受管
置备网络。如果provisioning
网络为Disabled
,则省略此配置设置。例如:192.168.0.64, 192.168.0.253
。 - 6
- 集群节点上
置备
接口的 NIC 名称。provisioningInterface
设置仅适用于受管和非受管
置备
网络。如果provisioning
网络为Disabled
,忽略provisioningInterface
配置设置。省略provisioningInterface
配置设置,以使用bootMACAddress
配置设置。 - 7
- 如果您希望 metal3 监视默认
openshift-machine-api
命名空间以外的命名空间,请将此设置设置为true
。默认值为false
。
- 保存对 provisioning CR 文件的更改。
将 provisioning CR 文件应用到集群:
$ oc apply -f enable-provisioning-nw.yaml
10.4.3. 配置外部负载均衡器
您可以将 OpenShift Container Platform 集群配置为使用外部负载均衡器来代替默认负载均衡器。
先决条件
- 在负载均衡器中,系统任意用户使用端口 6443、443 和 80 的 TCP。
- 在每个 control plane 节点之间负载平衡 API 端口 6443。
- 在所有计算节点之间负载平衡应用程序端口 443 和 80。
- 在负载均衡器中,用于为节点提供 ignition 启动配置的端口 22623 不会在集群外公开。
您的负载均衡器必须能够访问集群中的每台机器。允许此访问的方法包括:
- 将负载均衡器附加到集群的机器子网。
- 将浮动 IP 地址附加到使用负载均衡器的机器。
当使用 VLAN 在负载均衡服务和 control plane 节点之间路由流量时,外部负载平衡服务和 control plane 节点必须在同一个 L2 网络上运行,并使用 VLAN 来路由负载平衡服务和 control plane 节点之间的流量。
流程
在端口 6443、443 和 80 中启用从负载均衡器访问集群的功能。
例如,请注意此 HAProxy 配置:
HAProxy 配置示例
... listen my-cluster-api-6443 bind 0.0.0.0:6443 mode tcp balance roundrobin server my-cluster-master-2 192.0.2.2:6443 check server my-cluster-master-0 192.0.2.3:6443 check server my-cluster-master-1 192.0.2.1:6443 check listen my-cluster-apps-443 bind 0.0.0.0:443 mode tcp balance roundrobin server my-cluster-worker-0 192.0.2.6:443 check server my-cluster-worker-1 192.0.2.5:443 check server my-cluster-worker-2 192.0.2.4:443 check listen my-cluster-apps-80 bind 0.0.0.0:80 mode tcp balance roundrobin server my-cluster-worker-0 192.0.2.7:80 check server my-cluster-worker-1 192.0.2.9:80 check server my-cluster-worker-2 192.0.2.8:80 check
在集群 API 的 DNS 服务器中添加记录,并在负载均衡器上应用记录。例如:
<load_balancer_ip_address> api.<cluster_name>.<base_domain> <load_balancer_ip_address> apps.<cluster_name>.<base_domain>
在命令行中,使用
curl
验证外部负载均衡器和 DNS 配置是否正常运行。验证集群 API 是否可访问:
$ curl https://<loadbalancer_ip_address>:6443/version --insecure
如果配置正确,您会收到 JSON 对象的响应:
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }
验证集群应用程序是否可以访问:
注意您还可以在 Web 浏览器中打开 OpenShift Container Platform 控制台来验证应用程序的可访问性。
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,您会收到 HTTP 响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.<cluster-name>.<base domain>/ cache-control: no-cacheHTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=39HoZgztDnzjJkq/JuLJMeoKNXlfiVv2YgZc09c3TBOBU4NI6kDXaJH1LdicNhN1UsQWzon4Dor9GWGfopaTEQ==; Path=/; Secure x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Tue, 17 Nov 2020 08:42:10 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=9b714eb87e93cf34853e87a92d6894be; path=/; HttpOnly; Secure; SameSite=None cache-control: private