$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> (1)
在 OpenShift Container Platform 4.17 版本中,您可以选择以下选项之一,在您的 Nutanix 实例上安装集群
使用安装程序预配的基础架构:使用以下部分中的步骤来使用安装程序预配的基础架构。安装程序预配的基础架构非常适合在连接或断开连接的网络环境中安装。安装程序预配的基础架构包括一个安装程序,该程序会为集群预配底层基础架构。
使用 Assisted Installer:Assisted Installer 托管在 console.redhat.com。Assisted Installer 无法在断开连接的环境中使用。Assisted Installer 不会为集群预配底层基础架构,因此您必须在运行 Assisted Installer 之前预配基础架构。使用 Assisted Installer 安装还提供与 Nutanix 的集成,从而实现自动缩放。有关更多详细信息,请参阅 使用 Assisted Installer 安装内部部署集群。
使用用户预配的基础架构:完成 在任何平台上安装集群 文档中概述的相关步骤。
您已查看有关 OpenShift Container Platform 安装和更新 流程的详细信息。
安装程序需要访问 Prism Central 和 Prism Element 上的 9440 端口。您已验证 9440 端口可访问。
如果您使用防火墙,则您已满足以下先决条件
您已确认 9440 端口可访问。控制平面节点必须能够在 9440 端口上访问 Prism Central 和 Prism Element,安装才能成功。
您已将防火墙配置为 授予访问权限 OpenShift Container Platform 需要的站点。这包括使用遥测。
如果您的 Nutanix 环境使用默认的自签名 SSL 证书,请将其替换为由 CA 签名的证书。安装程序需要有效的 CA 签名的证书才能访问 Prism Central API。有关替换自签名证书的更多信息,请参阅 Nutanix AOS 安全指南。
如果您的 Nutanix 环境使用内部 CA 来颁发证书,则必须在安装过程中配置集群范围的代理。有关更多信息,请参阅 配置自定义 PKI。
使用 2048 位证书。如果您在 Prism Central 2022.x 中使用 4096 位证书,则安装将失败。 |
在 OpenShift Container Platform 4.17 中,您需要访问互联网才能安装集群。
您必须具有互联网访问权限才能
访问 OpenShift 集群管理器 以下载安装程序并执行订阅管理。如果集群具有互联网访问权限并且您未禁用遥测,则该服务会自动授权您的集群。
访问 Quay.io 以获取安装集群所需的软件包。
获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则您可以在您预配的某些类型的基础架构上执行受限网络安装。在此过程中,您将下载所需的内容并使用它来填充包含安装包的镜像注册表。对于某些安装类型,您安装集群的环境将不需要互联网访问权限。在更新集群之前,请更新镜像注册表的内容。 |
Prism Central 需要互联网访问权限才能获取安装集群所需的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。Nutanix 的 RHCOS 镜像位于 rhcos.mirror.openshift.com
。
在安装 OpenShift Container Platform 期间,您可以向安装程序提供 SSH 公钥。该密钥通过 Ignition 配置文件传递到 Red Hat Enterprise Linux CoreOS (RHCOS) 节点,并用于验证对节点的 SSH 访问。该密钥将添加到每个节点上 `core` 用户的 `~/.ssh/authorized_keys` 列表中,从而启用无密码身份验证。
密钥传递到节点后,您可以使用密钥对以 `core` 用户身份通过 SSH 登录到 RHCOS 节点。要通过 SSH 访问节点,SSH 必须管理您的本地用户的私钥身份。
如果您要 SSH 登录到集群节点以执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。`./openshift-install gather` 命令也需要集群节点上存在 SSH 公钥。
在需要灾难恢复和调试的生产环境中,请勿跳过此过程。 |
您必须使用本地密钥,而不是使用平台特定方法(例如 AWS 密钥对)配置的密钥。 |
如果您本地机器上没有现有的 SSH 密钥对用于对集群节点进行身份验证,请创建一个。例如,在使用 Linux 操作系统的计算机上,运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> (1)
1 | 指定新 SSH 密钥的路径和文件名,例如 `~/.ssh/id_ed25519`。如果您有现有的密钥对,请确保您的公钥位于 `~/.ssh` 目录中。 |
如果您计划安装使用已提交给 NIST 以进行 FIPS 140-2/140-3 验证的 RHEL 加密库的 OpenShift Container Platform 集群(仅限于 `x86_64`、`ppc64le` 和 `s390x` 架构),请不要创建使用 `ed25519` 算法的密钥。而是创建一个使用 `rsa` 或 `ecdsa` 算法的密钥。 |
查看 SSH 公钥
$ cat <path>/<file_name>.pub
例如,运行以下命令查看 `~/.ssh/id_ed25519.pub` 公钥:
$ cat ~/.ssh/id_ed25519.pub
如果尚未添加 SSH 私钥身份到本地用户的 SSH 代理,请添加。对于对集群节点进行无密码 SSH 身份验证,或者如果要使用 `./openshift-install gather` 命令,都需要 SSH 代理管理密钥。
在某些发行版中,默认的 SSH 私钥身份(例如 `~/.ssh/id_rsa` 和 `~/.ssh/id_dsa`)会自动管理。 |
如果本地用户的 `ssh-agent` 进程尚未运行,请将其作为后台任务启动:
$ eval "$(ssh-agent -s)"
Agent pid 31874
如果您的集群处于 FIPS 模式,则只能使用符合 FIPS 的算法生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。 |
将您的 SSH 私钥添加到 `ssh-agent`
$ ssh-add <path>/<file_name> (1)
1 | 指定 SSH 私钥的路径和文件名,例如 `~/.ssh/id_ed25519` |
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
安装 OpenShift Container Platform 时,请向安装程序提供 SSH 公钥。
在安装 OpenShift Container Platform 之前,请在您用于安装的主机上下载安装文件。
您需要一台运行 Linux 或 macOS 的计算机,具有 500 MB 的本地磁盘空间。
访问 Red Hat Hybrid Cloud 控制台上的 集群类型 页面。如果您有 Red Hat 帐户,请使用您的凭据登录。如果没有,请创建一个帐户。
从页面自行运行部分选择您的基础设施提供商。
从OpenShift 安装程序下的下拉菜单中选择您的主机操作系统和架构,然后单击下载安装程序。
将下载的文件放在您要存储安装配置文件的目录中。
|
解压安装程序。例如,在使用 Linux 操作系统的计算机上,运行以下命令:
$ tar -xvf openshift-install-linux.tar.gz
从 Red Hat OpenShift 集群管理器下载您的安装 pull secret。此 pull secret 允许您向包含的授权机构提供的服务进行身份验证,包括提供 OpenShift Container Platform 组件容器镜像的 Quay.io。
或者,您可以从 Red Hat 客户门户 检索安装程序,您可以在其中指定要下载的安装程序版本。但是,您必须拥有有效的订阅才能访问此页面。 |
由于安装程序需要访问 Prism Central API,因此您必须在安装 OpenShift Container Platform 集群之前将您的 Nutanix 受信任根 CA 证书添加到您的系统信任存储。
从 Prism Central Web 控制台下载 Nutanix 根 CA 证书。
解压包含 Nutanix 根 CA 证书的压缩文件。
将您操作系统对应的文件添加到系统信任存储。例如,在 Fedora 操作系统上,运行以下命令:
# cp certs/lin/* /etc/pki/ca-trust/source/anchors
更新您的系统信任存储。例如,在 Fedora 操作系统上,运行以下命令:
# update-ca-trust extract
您可以自定义您在 Nutanix 上安装的 OpenShift Container Platform 集群。
您已拥有 OpenShift Container Platform 安装程序和集群的 pull secret。
您已验证自己已满足 Nutanix 网络要求。有关更多信息,请参阅“准备在 Nutanix 上安装”。
创建 `install-config.yaml` 文件。
切换到包含安装程序的目录并运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> (1)
1 | 对于 `<installation_directory>`,请指定存储安装程序创建文件的目录名。 |
指定目录时:
验证该目录是否具有执行权限。此权限是在安装目录下运行 Terraform 二进制文件所必需的。
使用空目录。某些安装资源(例如引导 X.509 证书)的有效期很短,因此您不能重复使用安装目录。如果您想重复使用来自其他集群安装的单个文件,您可以将它们复制到您的目录中。但是,安装资源的文件名可能会在不同版本之间发生变化。从较早的 OpenShift Container Platform 版本复制安装文件时,请谨慎操作。
在提示符下,提供云的配置详细信息。
可选:选择一个 SSH 密钥来访问您的集群机器。
对于要执行安装调试或灾难恢复的生产 OpenShift Container Platform 集群,请指定 `ssh-agent` 进程使用的 SSH 密钥。 |
选择nutanix作为目标平台。
输入 Prism Central 域名或 IP 地址。
输入用于登录 Prism Central 的端口。
输入用于登录 Prism Central 的凭据。
安装程序连接到 Prism Central。
选择将管理 OpenShift Container Platform 集群的 Prism Element。
选择要使用的网络子网。
输入您为控制平面 API 访问配置的虚拟 IP 地址。
输入您为集群入口配置的虚拟 IP 地址。
输入基础域名。此基础域名必须与您在 DNS 记录中配置的域名相同。
输入集群的描述性名称。
您输入的集群名称必须与您在配置 DNS 记录时指定的集群名称匹配。
可选:更新install.config.yaml
文件中的一个或多个默认配置参数以自定义安装。
有关参数的更多信息,请参见“安装配置参数”。
如果您要安装三节点集群,请确保将 |
备份install-config.yaml
文件,以便您可以使用它来安装多个集群。
|
您可以自定义install.config.yaml
文件以指定有关 OpenShift Container Platform 集群平台的更多详细信息或修改所需参数的值。
此 YAML 文件示例仅供参考。您必须使用安装程序获取您的 |
apiVersion: v1
baseDomain: example.com (1)
compute: (2)
- hyperthreading: Enabled (3)
name: worker
replicas: 3
platform:
nutanix: (4)
cpus: 2
coresPerSocket: 2
memoryMiB: 8196
osDisk:
diskSizeGiB: 120
categories: (5)
- key: <category_key_name>
value: <category_value>
controlPlane: (2)
hyperthreading: Enabled (3)
name: master
replicas: 3
platform:
nutanix: (4)
cpus: 4
coresPerSocket: 2
memoryMiB: 16384
osDisk:
diskSizeGiB: 120
categories: (5)
- key: <category_key_name>
value: <category_value>
metadata:
creationTimestamp: null
name: test-cluster (1)
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
machineNetwork:
- cidr: 10.0.0.0/16
networkType: OVNKubernetes (6)
serviceNetwork:
- 172.30.0.0/16
platform:
nutanix:
apiVIPs:
- 10.40.142.7 (1)
defaultMachinePlatform:
bootType: Legacy
categories: (5)
- key: <category_key_name>
value: <category_value>
project: (7)
type: name
name: <project_name>
ingressVIPs:
- 10.40.142.8 (1)
prismCentral:
endpoint:
address: your.prismcentral.domainname (1)
port: 9440 (1)
password: <password> (1)
username: <username> (1)
prismElements:
- endpoint:
address: your.prismelement.domainname
port: 9440
uuid: 0005b0f1-8f43-a0f2-02b7-3cecef193712
subnetUUIDs:
- c7938dc6-7659-453e-a688-e26020c68e43
clusterOSImage: http://example.com/images/rhcos-47.83.202103221318-0-nutanix.x86_64.qcow2 (8)
credentialsMode: Manual
publish: External
pullSecret: '{"auths": ...}' (1)
fips: false (9)
sshKey: ssh-ed25519 AAAA... (10)
1 | 必需。安装程序会提示您输入此值。 | ||
2 | controlPlane 部分是一个单映射,但compute 部分是一系列映射。为了满足不同数据结构的要求,compute 部分的第一行必须以连字符- 开头,而controlPlane 部分的第一行则不能。尽管这两个部分目前都定义了一个单机器池,但 OpenShift Container Platform 的未来版本可能会支持在安装过程中定义多个计算池。只使用一个控制平面池。 |
||
3 | 是否启用或禁用同时多线程处理或超线程 。默认情况下,启用同时多线程处理以提高机器内核的性能。您可以通过将参数值设置为Disabled 来禁用它。如果在某些集群机器中禁用了同时多线程处理,则必须在所有集群机器中禁用它。
|
||
4 | 可选:为计算和控制平面机器的机器池参数提供其他配置。 | ||
5 | 可选:提供一个或多个 Prism 类别键和 Prism 类别值对。这些类别键值对必须存在于 Prism Central 中。您可以为计算机器、控制平面机器或所有机器提供单独的类别。 | ||
6 | 要安装的集群网络插件。默认值OVNKubernetes 是唯一支持的值。 |
||
7 | 可选:指定与虚拟机关联的项目。为项目类型指定name 或uuid ,然后提供相应的 UUID 或项目名称。您可以将项目关联到计算机器、控制平面机器或所有机器。 |
||
8 | 可选:默认情况下,安装程序会下载并安装 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。如果 Prism Central 没有互联网访问权限,您可以通过将 RHCOS 镜像托管在任何 HTTP 服务器上并将安装程序指向该镜像来覆盖默认行为。 | ||
9 | 是否启用或禁用 FIPS 模式。默认情况下,FIPS 模式未启用。如果启用了 FIPS 模式,则 OpenShift Container Platform 运行的 Red Hat Enterprise Linux CoreOS (RHCOS) 机器将绕过默认的 Kubernetes 加密套件,并改用 RHCOS 提供的加密模块。
|
||
10 | 可选:您可以提供用于访问集群中机器的sshKey 值。
|
故障域通过在多个 Nutanix Prism Element(集群)中分配控制平面和计算机器来提高 OpenShift Container Platform 集群的容错能力。
建议您配置三个故障域以确保高可用性。 |
您有一个安装配置文件 (install-config.yaml
)。
编辑install-config.yaml
文件并添加以下节以配置第一个故障域
apiVersion: v1
baseDomain: example.com
compute:
# ...
platform:
nutanix:
failureDomains:
- name: <failure_domain_name>
prismElement:
name: <prism_element_name>
uuid: <prism_element_uuid>
subnetUUIDs:
- <network_uuid>
# ...
其中
<failure_domain_name>
指定故障域的唯一名称。名称限制为 64 个或更少字符,其中可以包含小写字母、数字和连字符 (-
)。连字符不能位于名称的开头或结尾位置。
<prism_element_name>
可选。指定 Prism Element 的名称。
<prism_element_uuid>
>指定 Prism Element 的 UUID。
<network_uuid>
>指定 Prism Element 子网对象的 UUID。子网的 IP 地址前缀 (CIDR) 应包含 OpenShift Container Platform 集群使用的虚拟 IP 地址。OpenShift Container Platform 集群中每个故障域 (Prism Element) 只支持一个子网。
根据需要配置其他故障域。
要跨故障域分配控制平面和计算机器,请执行以下操作之一
如果计算和控制平面机器可以共享同一组故障域,请在集群的默认机器配置下添加故障域名称。
apiVersion: v1
baseDomain: example.com
compute:
# ...
platform:
nutanix:
defaultMachinePlatform:
failureDomains:
- failure-domain-1
- failure-domain-2
- failure-domain-3
# ...
如果计算和控制平面机器必须使用不同的故障域,请在各自的机器池下添加故障域名称。
apiVersion: v1
baseDomain: example.com
compute:
# ...
controlPlane:
platform:
nutanix:
failureDomains:
- failure-domain-1
- failure-domain-2
- failure-domain-3
# ...
compute:
platform:
nutanix:
failureDomains:
- failure-domain-1
- failure-domain-2
# ...
保存文件。
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过配置install-config.yaml
文件中的代理设置来配置新的 OpenShift Container Platform 集群以使用代理。
您已拥有一个现有的install-config.yaml
文件。
您已检查了集群需要访问的站点,并确定其中任何站点是否需要绕过代理。默认情况下,所有集群出站流量都将被代理,包括对托管云提供商 API 的调用。如有必要,您可以将站点添加到Proxy
对象的spec.noProxy
字段以绕过代理。
对于 Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure 和 Red Hat OpenStack Platform (RHOSP) 上的安装, |
编辑您的install-config.yaml
文件并添加代理设置。例如:
apiVersion: v1
baseDomain: my.domain.com
proxy:
httpProxy: http://<username>:<pswd>@<ip>:<port> (1)
httpsProxy: https://<username>:<pswd>@<ip>:<port> (2)
noProxy: example.com (3)
additionalTrustBundle: | (4)
-----BEGIN CERTIFICATE-----
<MY_TRUSTED_CA_CERT>
-----END CERTIFICATE-----
additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> (5)
1 | 用于创建集群外部 HTTP 连接的代理 URL。URL 方案必须为http 。 |
2 | 用于创建集群外部 HTTPS 连接的代理 URL。 |
3 | 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。用. 作为域名前缀仅匹配子域。例如,.y.com 匹配x.y.com ,但不匹配y.com 。使用* 绕过所有目标的代理。 |
4 | 如果提供,安装程序将生成一个名为user-ca-bundle 的 config map,位于openshift-config 命名空间中,其中包含一个或多个代理 HTTPS 连接所需的附加 CA 证书。然后,集群网络操作符将创建一个trusted-ca-bundle config map,将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包合并,并在Proxy 对象的trustedCA 字段中引用此 config map。除非代理的身份证书由 RHCOS 信任捆绑包中的授权机构签名,否则需要additionalTrustBundle 字段。 |
5 | 可选:确定Proxy 对象的配置以引用trustedCA 字段中user-ca-bundle config map 的策略。允许的值为Proxyonly 和Always 。使用Proxyonly 仅在配置http/https 代理时引用user-ca-bundle config map。使用Always 始终引用user-ca-bundle config map。默认值为Proxyonly 。 |
安装程序不支持代理 |
如果安装程序超时,请重新启动,然后使用安装程序的
|
保存文件并在安装 OpenShift Container Platform 时引用它。
安装程序将创建一个名为cluster
的集群范围代理,该代理使用install-config.yaml
文件中提供的代理设置。如果没有提供代理设置,仍然会创建cluster
Proxy
对象,但它将具有空spec
。
仅支持名为 |
您可以安装 OpenShift CLI (oc
) 以从命令行界面与 OpenShift Container Platform 交互。您可以在 Linux、Windows 或 macOS 上安装oc
。
如果您安装了早期版本的 |
您可以使用以下步骤在 Linux 上安装 OpenShift CLI (oc
) 二进制文件。
导航到 Red Hat 客户门户上的OpenShift Container Platform 下载页面。
从产品变体下拉列表中选择架构。
从版本下拉列表中选择相应的版本。
点击OpenShift v4.17 Linux Clients条目旁边的立即下载并保存文件。
解压存档
$ tar xvf <file>
将oc
二进制文件放在PATH
中的目录中。
要检查您的PATH
,请执行以下命令:
$ echo $PATH
安装 OpenShift CLI 后,可以使用oc
命令。
$ oc <command>
您可以使用以下步骤在 Windows 上安装 OpenShift CLI (oc
) 二进制文件。
导航到 Red Hat 客户门户上的OpenShift Container Platform 下载页面。
从版本下拉列表中选择相应的版本。
点击OpenShift v4.17 Windows Client条目旁边的立即下载并保存文件。
使用 ZIP 程序解压缩存档。
将oc
二进制文件移动到PATH
中的目录。
要检查您的PATH
,请打开命令提示符并执行以下命令:
C:\> path
安装 OpenShift CLI 后,可以使用oc
命令。
C:\> oc <command>
您可以使用以下步骤在 macOS 上安装 OpenShift CLI (oc
) 二进制文件。
导航到 Red Hat 客户门户上的OpenShift Container Platform 下载页面。
从版本下拉列表中选择相应的版本。
点击OpenShift v4.17 macOS Clients条目旁边的立即下载并保存文件。
对于 macOS arm64,请选择OpenShift v4.17 macOS arm64 Client条目。 |
解压并解压缩存档。
将oc
二进制文件移动到 PATH 上的目录。
要检查您的PATH
,请打开终端并执行以下命令:
$ echo $PATH
使用oc
命令验证您的安装
$ oc <command>
安装集群需要云凭据操作符 (CCO) 以手动模式运行。虽然安装程序会将 CCO 配置为手动模式,但您必须指定身份和访问管理密钥。
您已配置ccoctl
二进制文件。
您已拥有install-config.yaml
文件。
创建一个包含以下格式的凭据数据的 YAML 文件:
credentials:
- type: basic_auth (1)
data:
prismCentral: (2)
username: <username_for_prism_central>
password: <password_for_prism_central>
prismElements: (3)
- name: <name_of_prism_element>
username: <username_for_prism_element>
password: <password_for_prism_element>
1 | 指定身份验证类型。仅支持基本身份验证。 |
2 | 指定 Prism Central 凭据。 |
3 | 可选:指定 Prism Element 凭据。 |
通过运行以下命令,使用安装文件中的发行版映像设置$RELEASE_IMAGE
变量:
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
通过运行以下命令,从 OpenShift Container Platform 发行版映像中提取CredentialsRequest
自定义资源 (CR) 列表:
$ oc adm release extract \
--from=$RELEASE_IMAGE \
--credentials-requests \
--included \(1)
--install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \(2)
--to=<path_to_directory_for_credentials_requests> (3)
1 | --included 参数仅包含特定集群配置所需的清单。 |
2 | 指定install-config.yaml 文件的路径。 |
3 | 指定要存储CredentialsRequest 对象的目录的路径。如果指定的目录不存在,此命令将创建它。 |
CredentialsRequest
对象的示例 apiVersion: cloudcredential.openshift.io/v1
kind: CredentialsRequest
metadata:
annotations:
include.release.openshift.io/self-managed-high-availability: "true"
labels:
controller-tools.k8s.io: "1.0"
name: openshift-machine-api-nutanix
namespace: openshift-cloud-credential-operator
spec:
providerSpec:
apiVersion: cloudcredential.openshift.io/v1
kind: NutanixProviderSpec
secretRef:
name: nutanix-credentials
namespace: openshift-machine-api
使用ccoctl
工具处理所有CredentialsRequest
对象,方法是运行以下命令:
$ ccoctl nutanix create-shared-secrets \
--credentials-requests-dir=<path_to_credentials_requests_directory> \(1)
--output-dir=<ccoctl_output_dir> \(2)
--credentials-source-filepath=<path_to_credentials_file> (3)
1 | 指定包含组件CredentialsRequests 对象的文件的目录的路径。 |
2 | 可选:指定您希望ccoctl 实用程序创建对象的目录。默认情况下,实用程序在运行命令的目录中创建对象。 |
3 | 可选:指定包含凭据数据 YAML 文件的目录。默认情况下,ccoctl 期望此文件位于<home_directory>/.nutanix/credentials 。 |
编辑install-config.yaml
配置文件,以便将credentialsMode
参数设置为Manual
。
install-config.yaml
配置文件示例apiVersion: v1
baseDomain: cluster1.example.com
credentialsMode: Manual (1)
...
1 | 添加此行以将credentialsMode 参数设置为Manual 。 |
通过运行以下命令创建安装清单:
$ openshift-install create manifests --dir <installation_directory> (1)
1 | 指定包含集群install-config.yaml 文件的目录路径。 |
运行以下命令将生成的凭据文件复制到目标 manifests 目录
$ cp <ccoctl_output_dir>/manifests/*credentials.yaml ./<installation_directory>/manifests
确保manifests
目录中存在相应的密钥。
$ ls ./<installation_directory>/manifests
cluster-config.yaml
cluster-dns-02-config.yml
cluster-infrastructure-02-config.yml
cluster-ingress-02-config.yml
cluster-network-01-crd.yml
cluster-network-02-config.yml
cluster-proxy-01-config.yaml
cluster-scheduler-02-config.yml
cvo-overrides.yaml
kube-cloud-config.yaml
kube-system-configmap-root-ca.yaml
machine-config-server-tls-secret.yaml
openshift-config-secret-pull-secret.yaml
openshift-cloud-controller-manager-nutanix-credentials-credentials.yaml
openshift-machine-api-nutanix-credentials-credentials.yaml
在 Nutanix 上安装需要额外的ConfigMap
和 Secret
资源才能与 Nutanix Cloud Controller Manager (CCM) 集成。
您已在安装目录中创建了一个manifests
目录。
导航到manifests
目录
$ cd <path_to_installation_directory>/manifests
创建名为openshift-cloud-controller-manager-cloud-config.yaml
的cloud-conf
ConfigMap
文件,并添加以下信息
apiVersion: v1
kind: ConfigMap
metadata:
name: cloud-conf
namespace: openshift-cloud-controller-manager
data:
cloud.conf: "{
\"prismCentral\": {
\"address\": \"<prism_central_FQDN/IP>\", (1)
\"port\": 9440,
\"credentialRef\": {
\"kind\": \"Secret\",
\"name\": \"nutanix-credentials\",
\"namespace\": \"openshift-cloud-controller-manager\"
}
},
\"topologyDiscovery\": {
\"type\": \"Prism\",
\"topologyCategories\": null
},
\"enableCustomLabeling\": true
}"
1 | 指定 Prism Central FQDN/IP。 |
验证文件cluster-infrastructure-02-config.yml
是否存在并包含以下信息
spec:
cloudConfig:
key: config
name: cloud-provider-config
您可以将 OpenShift Container Platform 集群配置为使用用户管理的负载均衡器来代替默认的负载均衡器。
配置用户管理的负载均衡器取决于您的供应商的负载均衡器。 本节中的信息和示例仅供指导。请咨询供应商文档以获取有关供应商负载均衡器的更具体信息。 |
Red Hat 支持以下用户管理负载均衡器的服务
Ingress 控制器
OpenShift API
OpenShift MachineConfig API
您可以选择是否要为用户管理的负载均衡器配置一个或所有这些服务。只配置 Ingress 控制器服务是一个常见的配置选项。要更好地理解每个服务,请查看以下图表
以下配置选项受用户管理的负载均衡器支持
使用节点选择器将 Ingress 控制器映射到特定节点集。您必须为此集合中的每个节点分配一个静态 IP 地址,或者将每个节点配置为从动态主机配置协议 (DHCP) 接收相同的 IP 地址。基础设施节点通常会收到此类配置。
目标子网上的所有 IP 地址。此配置可以减少维护开销,因为您可以在这些网络内创建和销毁节点而无需重新配置负载均衡器目标。如果您使用较小网络(例如 /27
或 /28
)上的机器集部署 Ingress Pod,则可以简化负载均衡器目标。
您可以通过检查机器配置池的资源来列出网络中存在的所有 IP 地址。 |
在为 OpenShift Container Platform 集群配置用户管理的负载均衡器之前,请考虑以下信息
对于前端 IP 地址,您可以对前端 IP 地址、Ingress 控制器的负载均衡器和 API 负载均衡器使用相同的 IP 地址。请查看供应商的文档以了解此功能。
对于后端 IP 地址,请确保 OpenShift Container Platform 控制平面节点的 IP 地址在用户管理的负载均衡器的生命周期内不会更改。您可以通过完成以下一项操作来实现此目的
为每个控制平面节点分配一个静态 IP 地址。
配置每个节点以每次节点请求 DHCP 租约时从 DHCP 接收相同的 IP 地址。根据供应商的不同,DHCP 租约可能是 IP 保留或静态 DHCP 分配的形式。
手动在用户管理的负载均衡器中为 Ingress 控制器后端服务定义运行 Ingress 控制器的每个节点。例如,如果 Ingress 控制器移动到未定义的节点,则可能会发生连接中断。
您可以将 OpenShift Container Platform 集群配置为使用用户管理的负载均衡器来代替默认的负载均衡器。
在配置用户管理的负载均衡器之前,请确保您已阅读“用户管理的负载均衡器的服务”部分。 |
阅读适用于您要为用户管理的负载均衡器配置的服务的以下先决条件。
在集群上运行的 MetalLB 充当用户管理的负载均衡器。 |
您已定义了一个前端 IP 地址。
负载均衡器的前端 IP 地址上公开了 TCP 端口 6443 和 22623。检查以下项目
端口 6443 提供对 OpenShift API 服务的访问。
端口 22623 可以为节点提供点火启动配置。
所有系统用户都可以从 OpenShift Container Platform 集群外部的位置访问前端 IP 地址和端口 6443。
只有 OpenShift Container Platform 节点才能访问前端 IP 地址和端口 22623。
负载均衡器后端可以在端口 6443 和 22623 上与 OpenShift Container Platform 控制平面节点通信。
您已定义了一个前端 IP 地址。
负载均衡器的前端 IP 地址上公开了 TCP 端口 443 和 80。
所有系统用户都可以从 OpenShift Container Platform 集群外部的位置访问前端 IP 地址、端口 80 和端口 443。
OpenShift Container Platform 集群中运行的所有节点都可以访问前端 IP 地址、端口 80 和端口 443。
负载均衡器后端可以与在端口 80、443 和 1936 上运行 Ingress 控制器的 OpenShift Container Platform 节点通信。
您可以通过设置确定服务可用或不可用的健康检查 URL 来配置大多数负载均衡器。OpenShift Container Platform 为 OpenShift API、机器配置 API 和 Ingress 控制器后端服务提供这些健康检查。
以下示例显示了先前列出的后端服务的健康检查规范
Path: HTTPS:6443/readyz
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 10
Interval: 10
Path: HTTPS:22623/healthz
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 10
Interval: 10
Path: HTTP:1936/healthz/ready
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 5
Interval: 10
配置 HAProxy Ingress 控制器,以便您可以通过负载均衡器在端口 6443、22623、443 和 80 上访问集群。根据您的需要,您可以在 HAProxy 配置中指定单个子网的 IP 地址或多个子网的 IP 地址。
# ...
listen my-cluster-api-6443
bind 192.168.1.100:6443
mode tcp
balance roundrobin
option httpchk
http-check connect
http-check send meth GET uri /readyz
http-check expect status 200
server my-cluster-master-2 192.168.1.101:6443 check inter 10s rise 2 fall 2
server my-cluster-master-0 192.168.1.102:6443 check inter 10s rise 2 fall 2
server my-cluster-master-1 192.168.1.103:6443 check inter 10s rise 2 fall 2
listen my-cluster-machine-config-api-22623
bind 192.168.1.100:22623
mode tcp
balance roundrobin
option httpchk
http-check connect
http-check send meth GET uri /healthz
http-check expect status 200
server my-cluster-master-2 192.168.1.101:22623 check inter 10s rise 2 fall 2
server my-cluster-master-0 192.168.1.102:22623 check inter 10s rise 2 fall 2
server my-cluster-master-1 192.168.1.103:22623 check inter 10s rise 2 fall 2
listen my-cluster-apps-443
bind 192.168.1.100:443
mode tcp
balance roundrobin
option httpchk
http-check connect
http-check send meth GET uri /healthz/ready
http-check expect status 200
server my-cluster-worker-0 192.168.1.111:443 check port 1936 inter 10s rise 2 fall 2
server my-cluster-worker-1 192.168.1.112:443 check port 1936 inter 10s rise 2 fall 2
server my-cluster-worker-2 192.168.1.113:443 check port 1936 inter 10s rise 2 fall 2
listen my-cluster-apps-80
bind 192.168.1.100:80
mode tcp
balance roundrobin
option httpchk
http-check connect
http-check send meth GET uri /healthz/ready
http-check expect status 200
server my-cluster-worker-0 192.168.1.111:80 check port 1936 inter 10s rise 2 fall 2
server my-cluster-worker-1 192.168.1.112:80 check port 1936 inter 10s rise 2 fall 2
server my-cluster-worker-2 192.168.1.113:80 check port 1936 inter 10s rise 2 fall 2
# ...
# ...
listen api-server-6443
bind *:6443
mode tcp
server master-00 192.168.83.89:6443 check inter 1s
server master-01 192.168.84.90:6443 check inter 1s
server master-02 192.168.85.99:6443 check inter 1s
server bootstrap 192.168.80.89:6443 check inter 1s
listen machine-config-server-22623
bind *:22623
mode tcp
server master-00 192.168.83.89:22623 check inter 1s
server master-01 192.168.84.90:22623 check inter 1s
server master-02 192.168.85.99:22623 check inter 1s
server bootstrap 192.168.80.89:22623 check inter 1s
listen ingress-router-80
bind *:80
mode tcp
balance source
server worker-00 192.168.83.100:80 check inter 1s
server worker-01 192.168.83.101:80 check inter 1s
listen ingress-router-443
bind *:443
mode tcp
balance source
server worker-00 192.168.83.100:443 check inter 1s
server worker-01 192.168.83.101:443 check inter 1s
listen ironic-api-6385
bind *:6385
mode tcp
balance source
server master-00 192.168.83.89:6385 check inter 1s
server master-01 192.168.84.90:6385 check inter 1s
server master-02 192.168.85.99:6385 check inter 1s
server bootstrap 192.168.80.89:6385 check inter 1s
listen inspector-api-5050
bind *:5050
mode tcp
balance source
server master-00 192.168.83.89:5050 check inter 1s
server master-01 192.168.84.90:5050 check inter 1s
server master-02 192.168.85.99:5050 check inter 1s
server bootstrap 192.168.80.89:5050 check inter 1s
# ...
使用curl
CLI 命令验证用户管理的负载均衡器及其资源是否可运行
通过运行以下命令并观察响应,验证集群机器配置 API 是否可访问 Kubernetes 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"
}
通过运行以下命令并观察输出,验证集群机器配置 API 是否可访问机器配置服务器资源
$ curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
如果配置正确,命令的输出将显示以下响应
HTTP/1.1 200 OK
Content-Length: 0
通过运行以下命令并观察输出,验证控制器是否可在端口 80 上访问 Ingress 控制器资源
$ curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>
如果配置正确,命令的输出将显示以下响应
HTTP/1.1 302 Found
content-length: 0
location: https://console-openshift-console.apps.ocp4.private.opequon.net/
cache-control: no-cache
通过运行以下命令并观察输出,验证控制器是否可在端口 443 上访问 Ingress 控制器资源
$ curl -I -L --insecure --resolve console-openshift-console.apps.<cluster_name>.<base_domain>:443:<Load Balancer Front End IP Address> https://console-openshift-console.apps.<cluster_name>.<base_domain>
如果配置正确,命令的输出将显示以下响应
HTTP/1.1 200 OK
referrer-policy: strict-origin-when-cross-origin
set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax
x-content-type-options: nosniff
x-dns-prefetch-control: off
x-frame-options: DENY
x-xss-protection: 1; mode=block
date: Wed, 04 Oct 2023 16:29:38 GMT
content-type: text/html; charset=utf-8
set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None
cache-control: private
将集群的 DNS 记录配置为指向用户管理的负载均衡器的前端 IP 地址。您必须更新集群 API 和通过负载均衡器的应用程序的 DNS 服务器记录。
<load_balancer_ip_address> A api.<cluster_name>.<base_domain>
A record pointing to Load Balancer Front End
<load_balancer_ip_address> A apps.<cluster_name>.<base_domain>
A record pointing to Load Balancer Front End
每个 DNS 记录的传播可能需要一些时间才能可用。确保每个 DNS 记录都传播后再验证每个记录。 |
要使您的 OpenShift Container Platform 集群使用用户管理的负载均衡器,您必须在集群的install-config.yaml
文件中指定以下配置。
# ...
platform:
nutanix:
loadBalancer:
type: UserManaged (1)
apiVIPs:
- <api_ip> (2)
ingressVIPs:
- <ingress_ip> (3)
# ...
1 | 为type 参数设置UserManaged 以指定集群的用户管理的负载均衡器。此参数默认为OpenShiftManagedDefault ,表示默认的内部负载均衡器。对于在openshift-kni-infra 命名空间中定义的服务,用户管理的负载均衡器可以将coredns 服务部署到集群中的 Pod,但会忽略keepalived 和haproxy 服务。 |
2 | 当您指定用户管理的负载均衡器时,此参数是必需的。指定用户管理的负载均衡器的公共 IP 地址,以便 Kubernetes API 可以与用户管理的负载均衡器通信。 |
3 | 当您指定用户管理的负载均衡器时,此参数是必需的。指定用户管理的负载均衡器的公共 IP 地址,以便用户管理的负载均衡器可以管理集群的入站流量。 |
使用curl
CLI 命令验证用户管理的负载均衡器和 DNS 记录配置是否正常运行。
通过运行以下命令并观察输出,验证您是否可以访问集群 API。
$ curl https://api.<cluster_name>.<base_domain>: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"
}
通过运行以下命令并观察输出,验证您是否可以访问集群机器配置。
$ curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure
如果配置正确,命令的输出将显示以下响应
HTTP/1.1 200 OK
Content-Length: 0
通过运行以下命令并观察输出,验证您是否可以访问每个集群应用程序的端口。
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出将显示以下响应
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
通过运行以下命令并观察输出,验证您是否可以访问每个集群应用程序的 443 端口。
$ curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出将显示以下响应
HTTP/1.1 200 OK
referrer-policy: strict-origin-when-cross-origin
set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax
x-content-type-options: nosniff
x-dns-prefetch-control: off
x-frame-options: DENY
x-xss-protection: 1; mode=block
date: Wed, 04 Oct 2023 16:29:38 GMT
content-type: text/html; charset=utf-8
set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None
cache-control: private
您可以在兼容的云平台上安装 OpenShift Container Platform。
您只能在初始安装期间运行安装程序的 |
您已拥有 OpenShift Container Platform 安装程序和集群的 pull secret。
您已验证主机上的云提供商帐户具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示一条错误消息,其中显示缺少的权限。
更改到包含安装程序的目录并初始化集群部署。
$ ./openshift-install create cluster --dir <installation_directory> \ (1)
--log-level=info (2)
1 | 对于<installation_directory> ,请指定您自定义的./install-config.yaml 文件的位置。 |
2 | 要查看不同的安装详细信息,请指定warn 、debug 或error 代替info 。 |
集群部署成功完成后
终端将显示访问集群的说明,包括指向 Web 控制台的链接以及kubeadmin
用户的凭据。
凭据信息也会输出到<installation_directory>/.openshift_install.log
。
不要删除安装程序或安装程序创建的文件。两者都需要删除集群。 |
...
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com
INFO Login to the console with user: "kubeadmin", and password: "password"
INFO Time elapsed: 36m22s
|
安装集群后,您必须安装 Nutanix CSI Operator 并为集群配置默认存储容器。
有关更多信息,请参阅 Nutanix 文档,了解如何安装 CSI Operator和如何配置注册表存储。
在 OpenShift Container Platform 4.17 中,默认运行的遥测服务(用于提供有关集群运行状况和更新成功情况的指标)需要互联网访问。如果您的集群连接到互联网,则遥测会自动运行,并且您的集群会注册到OpenShift 集群管理器。
确认您的OpenShift 集群管理器清单正确后(由遥测自动维护或使用 OpenShift 集群管理器手动维护),使用订阅监控来跟踪您在帐户或多集群级别上的 OpenShift Container Platform 订阅。