$ export COMPRESSED_VHD_URL=$(openshift-install coreos print-stream-json | jq -r '.architectures.x86_64.artifacts.azurestack.formats."vhd.gz".disk.location')
在 OpenShift Container Platform 4.17 版本中,您可以安装具有自定义网络配置的集群,该集群在安装程序在 Azure Stack Hub 上配置的基础架构上运行。通过自定义您的网络配置,您的集群可以与环境中现有的 IP 地址分配共存,并与现有的 MTU 和 VXLAN 配置集成。
虽然在使用安装程序部署使用安装程序配置的基础架构的集群时可以选择 `azure`,但此选项仅支持 Azure 公有云。 |
您已查看有关OpenShift Container Platform 安装和更新流程的详细信息。
您已阅读有关选择集群安装方法并为用户准备集群的文档。
您已配置了一个 Azure Stack Hub 帐户来托管集群。
如果您使用防火墙,则已将其配置为允许集群需要访问的站点。
您已验证您拥有大约 16 GB 的本地磁盘空间。安装集群需要您下载 RHCOS 虚拟硬盘 (VHD) 集群映像并将其上传到您的 Azure Stack Hub 环境,以便在部署过程中可以访问它。解压缩 VHD 文件需要此数量的本地磁盘空间。
您必须下载 RHCOS 虚拟硬盘 (VHD) 集群映像并将其上传到您的 Azure Stack Hub 环境,以便在部署过程中可以访问它。
为您的集群生成 Ignition 配置文件。
获取 RHCOS VHD 集群映像
将 RHCOS VHD 的 URL 导出到环境变量。
$ export COMPRESSED_VHD_URL=$(openshift-install coreos print-stream-json | jq -r '.architectures.x86_64.artifacts.azurestack.formats."vhd.gz".disk.location')
在本地下载压缩的 RHCOS VHD 文件。
$ curl -O -L ${COMPRESSED_VHD_URL}
解压缩 VHD 文件。
解压缩后的 VHD 文件大约为 16 GB,因此请确保您的主机系统有 16 GB 的可用空间。上传 VHD 文件后,可以将其删除。 |
将本地 VHD 上传到 Azure Stack Hub 环境,确保 blob 可公开访问。例如,您可以使用az
cli 或 Web 门户将 VHD 上传到 blob。
安装集群需要您手动创建安装配置文件。
您在本地机器上有一个 SSH 公钥,需要提供给安装程序。此密钥将用于 SSH 身份验证到您的集群节点,用于调试和灾难恢复。
您已获得 OpenShift Container Platform 安装程序和集群的拉取密钥。
创建一个安装目录来存储所需的安装资产
$ mkdir <installation_directory>
您必须创建一个目录。某些安装资产(如引导 X.509 证书)的有效期很短,因此您不能重复使用安装目录。如果您想从另一个集群安装中重复使用单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在不同版本之间发生更改。从较早的 OpenShift Container Platform 版本复制安装文件时,请谨慎操作。 |
自定义提供的示例install-config.yaml
文件模板,并将其保存到<installation_directory>
。
您必须将此配置文件命名为 |
进行以下修改
指定所需的安装参数。
更新platform.azure
部分以指定 Azure Stack Hub 特定的参数。
可选:更新一个或多个默认配置参数以自定义安装。
有关参数的更多信息,请参见“安装配置参数”。
备份install-config.yaml
文件,以便您可以使用它来安装多个集群。
|
您可以自定义install-config.yaml
文件以指定有关 OpenShift Container Platform 集群平台的更多详细信息,或修改所需参数的值。
此示例 YAML 文件仅供参考。将其作为资源,将参数值输入到您手动创建的安装配置文件中。 |
apiVersion: v1
baseDomain: example.com (1)
credentialsMode: Manual
controlPlane: (2) (3)
name: master
platform:
azure:
osDisk:
diskSizeGB: 1024 (4)
diskType: premium_LRS
replicas: 3
compute: (2)
- name: worker
platform:
azure:
osDisk:
diskSizeGB: 512 (4)
diskType: premium_LRS
replicas: 3
metadata:
name: test-cluster (1) (5)
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:
azure:
armEndpoint: azurestack_arm_endpoint (1) (7)
baseDomainResourceGroupName: resource_group (1) (8)
region: azure_stack_local_region (1) (9)
resourceGroupName: existing_resource_group (10)
outboundType: Loadbalancer
cloudName: AzureStackCloud (1)
clusterOSimage: https://vhdsa.blob.example.example.com/vhd/rhcos-410.84.202112040202-0-azurestack.x86_64.vhd (1) (11)
pullSecret: '{"auths": ...}' (1) (12)
fips: false (13)
sshKey: ssh-ed25519 AAAA... (14)
additionalTrustBundle: | (15)
-----BEGIN CERTIFICATE-----
<MY_TRUSTED_CA_CERT>
-----END CERTIFICATE-----
1 | 必需。 | ||
2 | 如果您不提供这些参数和值,安装程序将提供默认值。 | ||
3 | controlPlane 部分是一个单映射,但compute 部分是一系列映射。为了满足不同数据结构的要求,compute 部分的第一行必须以连字符- 开头,而controlPlane 部分的第一行则不能。尽管这两个部分目前都定义了一个单机池,但 OpenShift Container Platform 的未来版本可能会支持在安装过程中定义多个计算池。仅使用一个控制平面池。 |
||
4 | 您可以指定要使用的磁盘大小(以 GB 为单位)。控制平面节点的最低建议值为 1024 GB。 | ||
5 | 集群的名称。 | ||
6 | 要安装的集群网络插件。默认值OVNKubernetes 是唯一支持的值。 |
||
7 | 您的 Azure Stack Hub 运营商提供的 Azure 资源管理器端点。 | ||
8 | 包含您的基础域的 DNS 区域的资源组的名称。 | ||
9 | 您的 Azure Stack Hub 本地区域的名称。 | ||
10 | 要将集群安装到的现有资源组的名称。如果未定义,则会为集群创建一个新的资源组。 | ||
11 | Azure Stack 环境中包含 RHCOS VHD 的存储 blob 的 URL。 | ||
12 | 验证集群所需的拉取密钥。 | ||
13 | 是否启用或禁用 FIPS 模式。默认情况下,FIPS 模式未启用。如果启用了 FIPS 模式,则 OpenShift Container Platform 运行的 Red Hat Enterprise Linux CoreOS (RHCOS) 机器将绕过默认的 Kubernetes 加密套件,并改用 RHCOS 提供的加密模块。
|
||
14 | 您可以选择提供用于访问集群中机器的sshKey 值。
|
||
15 | 如果 Azure Stack Hub 环境使用内部证书颁发机构 (CA),则需要添加 CA 证书。 |
云凭据运营商 (CCO) 仅在手动模式下支持您的云提供商。因此,您必须为您的云提供商指定身份和访问管理 (IAM) 机密。
如果您以前没有创建安装清单文件,请运行以下命令来创建
$ openshift-install create manifests --dir <installation_directory>
其中<installation_directory>
是安装程序创建文件的目录。
通过运行以下命令,使用安装文件中的发行版映像设置$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
对象创建一个 YAML 文件。
CredentialsRequest
对象apiVersion: cloudcredential.openshift.io/v1
kind: CredentialsRequest
metadata:
name: <component_credentials_request>
namespace: openshift-cloud-credential-operator
...
spec:
providerSpec:
apiVersion: cloudcredential.openshift.io/v1
kind: AzureProviderSpec
roleBindings:
- role: Contributor
...
为以前生成的openshift-install
清单目录中的密钥创建 YAML 文件。必须使用每个CredentialsRequest
对象的spec.secretRef
中定义的命名空间和密钥名称来存储密钥。
CredentialsRequest
对象apiVersion: cloudcredential.openshift.io/v1
kind: CredentialsRequest
metadata:
name: <component_credentials_request>
namespace: openshift-cloud-credential-operator
...
spec:
providerSpec:
apiVersion: cloudcredential.openshift.io/v1
kind: AzureProviderSpec
roleBindings:
- role: Contributor
...
secretRef:
name: <component_secret>
namespace: <component_namespace>
...
Secret
对象apiVersion: v1
kind: Secret
metadata:
name: <component_secret>
namespace: <component_namespace>
data:
azure_subscription_id: <base64_encoded_azure_subscription_id>
azure_client_id: <base64_encoded_azure_client_id>
azure_client_secret: <base64_encoded_azure_client_secret>
azure_tenant_id: <base64_encoded_azure_tenant_id>
azure_resource_prefix: <base64_encoded_azure_resource_prefix>
azure_resourcegroup: <base64_encoded_azure_resourcegroup>
azure_region: <base64_encoded_azure_region>
在升级使用手动维护的凭据的集群之前,您必须确保 CCO 处于可升级状态。 |
如果 Azure Stack Hub 环境使用内部证书颁发机构 (CA),请更新cluster-proxy-01-config.yaml 文件
以配置集群使用内部 CA。
创建install-config.yaml
文件,并指定 .pem 格式的证书信任捆绑包。
创建集群清单。
从安装程序创建文件的目录转到manifests
目录。
将user-ca-bundle
添加到spec.trustedCA.name
字段。
cluster-proxy-01-config.yaml
文件示例apiVersion: config.openshift.io/v1
kind: Proxy
metadata:
creationTimestamp: null
name: cluster
spec:
trustedCA:
name: user-ca-bundle
status: {}
可选:备份manifests/cluster-proxy-01-config.yaml
文件。安装程序在您部署集群时会使用manifests/
目录。
在 OpenShift Container Platform 安装之前,有两个阶段可以自定义网络配置。
在创建清单文件之前,您可以在install-config.yaml
文件中自定义以下与网络相关的字段
networking.networkType
networking.clusterNetwork
networking.serviceNetwork
networking.machineNetwork
更多信息,请参见“安装配置参数”。
将 |
CIDR 范围 |
运行openshift-install create manifests
创建清单文件后,您可以仅使用要修改的字段来定义自定义集群网络运算符清单。您可以使用该清单来指定高级网络配置。
在阶段 2 中,您不能覆盖在阶段 1 中install-config.yaml
文件中指定的数值。但是,您可以在阶段 2 中自定义网络插件。
您可以使用高级网络配置为您的网络插件将您的集群集成到您的现有网络环境中。
您只能在安装集群之前指定高级网络配置。
不支持通过修改安装程序创建的 OpenShift Container Platform 清单文件来自定义网络配置。支持应用您创建的清单文件,如下面的过程所示。 |
您已创建install-config.yaml
文件并完成了对其的任何修改。
更改到包含安装程序的目录并创建清单
$ ./openshift-install create manifests --dir <installation_directory> (1)
1 | <installation_directory> 指定包含集群install-config.yaml 文件的目录的名称。 |
为高级网络配置创建一个存根清单文件,名为cluster-network-03-config.yml
,位于<installation_directory>/manifests/
目录中
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
在cluster-network-03-config.yml
文件中指定集群的高级网络配置,例如以下示例
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
defaultNetwork:
ovnKubernetesConfig:
ipsecConfig:
mode: Full
可选:备份manifests/cluster-network-03-config.yml
文件。安装程序在创建 Ignition 配置文件时会使用manifests/
目录。
集群网络的配置指定为集群网络运算符 (CNO) 配置的一部分,并存储在名为cluster
的自定义资源 (CR) 对象中。CR 指定operator.openshift.io
API 组中Network
API 的字段。
在集群安装期间,CNO 配置从Network.config.openshift.io
API 组中的Network
API 继承以下字段
clusterNetwork
分配 Pod IP 地址的 IP 地址池。
serviceNetwork
服务的 IP 地址池。
defaultNetwork.type
集群网络插件。OVNKubernetes
是安装期间唯一支持的插件。
您可以通过设置名为cluster
的 CNO 对象中defaultNetwork
对象的字段来指定集群的集群网络插件配置。
集群网络运算符 (CNO) 的字段在以下表格中描述
字段 | 类型 | 描述 |
---|---|---|
|
|
CNO 对象的名称。此名称始终为 |
|
|
指定分配 Pod IP 地址的 IP 地址块以及分配给集群中每个单独节点的子网前缀长度的列表。例如
|
|
|
服务的 IP 地址块。OVN-Kubernetes 网络插件只支持服务网络的单个 IP 地址块。例如
您只能在创建清单之前在 |
|
|
配置集群网络的网络插件。 |
|
|
此对象的字段指定 kube-proxy 配置。如果您使用的是 OVN-Kubernetes 集群网络插件,则 kube-proxy 配置无效。 |
对于需要跨多个网络部署对象的集群,请确保为 |
defaultNetwork
对象的数值在以下表格中定义
字段 | 类型 | 描述 | ||
---|---|---|---|---|
|
|
|
||
|
|
此对象仅对 OVN-Kubernetes 网络插件有效。 |
下表描述了 OVN-Kubernetes 网络插件的配置字段
字段 | 类型 | 描述 | ||
---|---|---|---|---|
|
|
Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元 (MTU)。这是根据主网络接口的 MTU 自动检测到的。您通常不需要覆盖检测到的 MTU。 如果自动检测到的值与您的预期值不符,请确认节点上主网络接口的MTU是否正确。您无法使用此选项更改节点上主网络接口的MTU值。 如果您的集群需要为不同的节点设置不同的MTU值,则必须将此值设置为集群中最低MTU值减去 |
||
|
|
用于所有Geneve数据包的端口。默认值为 |
||
|
|
指定一个配置对象来自定义IPsec配置。 |
||
|
|
指定IPv4设置的配置对象。 |
||
|
|
指定IPv6设置的配置对象。 |
||
|
|
指定一个配置对象来自定义网络策略审计日志记录。如果未设置,则使用默认的审计日志设置。 |
||
|
|
可选:指定一个配置对象来自定义如何将出站流量发送到节点网关。
|
字段 | 类型 | 描述 |
---|---|---|
|
字符串 |
如果您的现有网络基础设施与 默认值为 |
|
字符串 |
如果您的现有网络基础设施与 默认值为 |
字段 | 类型 | 描述 |
---|---|---|
|
字符串 |
如果您的现有网络基础设施与 默认值为 |
|
字符串 |
如果您的现有网络基础设施与 默认值为 |
字段 | 类型 | 描述 |
---|---|---|
|
整数 |
每个节点每秒生成的最大消息数。默认值为每秒 |
|
整数 |
审计日志的最大大小(字节)。默认值为 |
|
整数 |
保留的最大日志文件数。 |
|
字符串 |
以下其他审计日志目标之一
|
|
字符串 |
syslog工具,例如 |
字段 | 类型 | 描述 |
---|---|---|
|
|
将此字段设置为 此字段与Open vSwitch硬件卸载功能存在交互。如果将此字段设置为 |
|
|
您可以使用 |
|
|
可选:指定一个对象来配置用于IPv4地址的主机到服务流量的内部OVN-Kubernetes伪装地址。 |
|
|
可选:指定一个对象来配置用于IPv6地址的主机到服务流量的内部OVN-Kubernetes伪装地址。 |
字段 | 类型 | 描述 | ||
---|---|---|---|---|
|
|
在内部用于启用主机到服务流量的伪装IPv4地址。主机也配置了这些IP地址以及共享网关桥接接口。默认值为
|
字段 | 类型 | 描述 | ||
---|---|---|---|---|
|
|
在内部用于启用主机到服务流量的伪装IPv6地址。主机也配置了这些IP地址以及共享网关桥接接口。默认值为
|
字段 | 类型 | 描述 |
---|---|---|
|
|
指定IPsec实现的行为。必须是以下值之一
|
defaultNetwork:
type: OVNKubernetes
ovnKubernetesConfig:
mtu: 1400
genevePort: 6081
ipsecConfig:
mode: Full
您可以将集群配置为使用 OVN-Kubernetes 网络插件的混合网络。这允许支持不同节点网络配置的混合集群。
此配置对于在同一集群中运行 Linux 和 Windows 节点是必需的。 |
您在 install-config.yaml
文件中为 networking.networkType
参数定义了 OVNKubernetes
。有关在您选择的云提供商上配置 OpenShift Container Platform 网络自定义的更多信息,请参阅安装文档。
更改到包含安装程序的目录并创建清单
$ ./openshift-install create manifests --dir <installation_directory>
其中
<installation_directory>
指定包含集群 install-config.yaml
文件的目录名称。
为高级网络配置创建一个存根清单文件,名为cluster-network-03-config.yml
,位于<installation_directory>/manifests/
目录中
$ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
EOF
其中
<installation_directory>
指定包含集群 manifests/
目录的目录名称。
在编辑器中打开 cluster-network-03-config.yml
文件,并使用混合网络配置 OVN-Kubernetes,如下例所示
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
defaultNetwork:
ovnKubernetesConfig:
hybridOverlayConfig:
hybridClusterNetwork: (1)
- cidr: 10.132.0.0/14
hostPrefix: 23
hybridOverlayVXLANPort: 9898 (2)
1 | 指定用于附加覆盖网络上节点的 CIDR 配置。hybridClusterNetwork CIDR 必须与 clusterNetwork CIDR 不重叠。 |
2 | 为附加覆盖网络指定自定义 VXLAN 端口。这对于在 vSphere 上安装的集群中运行 Windows 节点是必需的,并且不得为任何其他云提供商配置。自定义端口可以是任何开放端口,但不包括默认的 4789 端口。有关此要求的更多信息,请参阅 Microsoft 文档 主机之间 Pod 到 Pod 的连接在我的 Kubernetes 集群(在 vSphere 上运行)中中断。 |
Windows Server 长期服务通道 (LTSC):对于具有自定义 |
保存 cluster-network-03-config.yml
文件并退出文本编辑器。
可选:备份 manifests/cluster-network-03-config.yml
文件。安装程序在创建集群时会删除 manifests/
目录。
有关在同一集群中使用 Linux 和 Windows 节点的更多信息,请参阅 了解 Windows 容器工作负载。 |
您可以在兼容的云平台上安装 OpenShift Container Platform。
您只能在初始安装期间运行安装程序的 |
您已配置了托管集群的云平台帐户。
您拥有 OpenShift Container Platform 安装程序和集群的拉取密钥。
您已验证主机上的云提供商帐户是否具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示一条错误消息,其中显示缺少的权限。
切换到包含安装程序的目录并初始化集群部署
$ ./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
|
您可以通过导出集群 kubeconfig
文件以默认系统用户身份登录到集群。kubeconfig
文件包含有关集群的信息,CLI 使用这些信息将客户端连接到正确的集群和 API 服务器。该文件特定于集群,并在 OpenShift Container Platform 安装期间创建。
您已部署 OpenShift Container Platform 集群。
您已安装 oc
CLI。
导出 kubeadmin
凭据
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig (1)
1 | 对于 <installation_directory> ,请指定您存储安装文件的目录的路径。 |
验证您可以使用导出的配置成功运行 oc
命令
$ oc whoami
system:admin
OpenShift Container Platform 安装后,默认情况下存在 kubeadmin
用户。您可以使用 OpenShift Container Platform Web 控制台以 kubeadmin
用户身份登录到集群。
您可以访问安装主机。
您已完成集群安装,并且所有集群运算符都可用。
从安装主机上的 kubeadmin-password
文件中获取 kubeadmin
用户的密码
$ cat <installation_directory>/auth/kubeadmin-password
或者,您可以从安装主机上的 |
列出 OpenShift Container Platform Web 控制台路由
$ oc get routes -n openshift-console | grep 'console-openshift'
或者,您可以从安装主机上的 |
console console-openshift-console.apps.<cluster_name>.<base_domain> console https reencrypt/Redirect None
在 Web 浏览器中导航到前面命令输出中详细说明的路由,并以 kubeadmin
用户身份登录。
可选:选择退出远程运行状况报告
可选:删除云提供商凭据