OpenShift支持的部署基础架构有两种类型:
·Installer-Provisioned Infrastructure,简称IPI。
·User-Provisioned Infrastructure,简称UPI。
使用IPI方式部署OpenShift,绝大多数具体的配置工作都由Installer完成,因此部署过程非常简单。使用UPI方式部署OpenShift,需要进行很多手工配置。
无论采用IPI方式还是UPI方式部署,OpenShift集群中的Master节点都必须使用Red Hat CoreOS(简称RHCOS)操作系统。如果使用IPI方式安装,Worker节点也必须使用RHCOS操作系统,但采用UPI安装,Worker节点可以选择使用RHCOS操作系统或RHEL操作系统。但出于统一管理和维护的考虑,我们建议Woker节点也使用RHCOS操作系统。
几乎所有的基础设施都支持使用UPI方式部署,目前OpenShift 4.6支持IPI方式部署的基础架构有:
·AWS
·Azure
·GCP
·Red Hat OpenStack
·RHV
·VMware vSphere
·X86物理服务器
目前OpenShift 4.6支持UPI模式部署的基础架构有:
·AWS
·Azure
·GCP
·Red Hat OpenStack
·VMware vSphere
·X86物理服务器
·IBM Z
·IBM Power
可以看到,OpenShift支持的基础设施类型很多,在不同类型的基础设施上的部署过程也大同小异。本节我们会大致说明通用安装过程,然后演示以Bare metal模式离线安装OpenShift的示例。
在Repo中的“OpenShift 4.5.3在Openstack上的UPI离线安装”记录了在OpenStack上离线安装OpenShift的过程,供读者参考。本书第1版中的OpenShift 3的安装步骤请参考Repo中的“OpenShift 3.11安装”。在第6章,我们将介绍如何在AWS中国区部署OpenShift。更多OpenShift部署的细节请参考官方文档,链接如下:
·OpenShift 4.6企业版链接: https://access.redhat.com/documentation/en-us/openshift_container_platform/4.6/html-single/installing_on_bare_metal/index
·OpenShift 4社区版链接:https://docs.okd.io/latest/install/index.htm
在大部分客户的实际环境中,无法直接访问公网,这就需要离线部署OpenShift。OpenShift的离线部署只支持UPI方式,也就是说,即使在红帽OpenStack基础设施上,如果想离线部署OpenShift,也必须使用UPI方式。
在讲述具体部署之前,我们先对离线部署OpenShift的要求和大致过程进行说明。
OpenShift离线部署需要的安装角色如下:
·管理机:也可称为工具机,主要是安装一些客户端工具以及管理整个OpenShift依赖的基础环境。另外,管理机通常能够访问外网,这样也可以在管理机上访问外网拉取安装镜像,并将其推送到离线环境的容器镜像仓库中。
·容器镜像服务器:为离线安装提供镜像,具体方案参考“3.2.2配置OpenShift离线镜像”。
·DNS服务器:为OpenShift节点和应用提供域名解析。
·HTTP服务器:用于在安装过程中Master节点和Worker节点获取RHCOS镜像和配置文件的位置。
·负载均衡器:OpenShift要求Master节点为3个,因此在安装的时候,需要负载均衡器,另外,多个Router也需要负载均衡器,可以选择HAproxy或者F5实现。
·NFS服务器:测试环境如果没有企业级存储,还需要配置一个NFS服务器,为OpenShift提供外部持久化存储。
·Bootstrap:该主机启动一个临时Master,由它来引导整个OpenShift集群的启动。当OpenShift安装完毕后,这个节点可以关闭或删除。
·Master节点:OpenShift集群的管理节点。
·Worker节点:OpenShift集群的工作节点。
在上述安装角色中,Bootstrap、Master节点、Worker节点都使用RHCOS操作系统,管理机可以使用RHEL操作系统。如果基础设施的服务器资源有限,可以将管理机、镜像服务器、DNS服务器、Http服务器、软负载均衡器、NFS服务器等几个角色使用一台服务器承载。当然,我们也可以把管理机的角色和其他几个角色单独分开,使用两台服务器承载,即一台管理机、一台辅助安装节点(其他角色)。
按照官方文档,OpenShift的集群最小资源配置要求如表3-1所示。
表3-1 OpenShift部署节点最低配置
关于每个节点的数量,根据官方建议在一套OpenShift集群中应该包含:
·一个Bootstrap节点。
·必须3个Master节点。
·至少两个Worker节点,这样当一个Worker节点出现故障,Pod可以在另外一个Worker节点上重启。
·如果在生产环境,需要将Worker细分为App Node和Infra Node(建议至少3个),在这种情况下,Worker节点至少5个。
了解了离线部署的要求之后,接下来介绍离线部署的大致过程。
本小节介绍的安装方式,适用于OpenShift 4.3、OpenShift 4.4、OpenShift 4.5。OpenShift 4.6的离线+bare metal模式安装方法略有调整,调整内容会在3.2.3节的第12小节中提及。想安装OpenShift 4.6的朋友,请先阅读这一小节。
离线部署过程大致如图3-4所示。
图3-4 OpenShift离线部署过程示意图
如图3-4所示,OpenShift离线部署的大致过程如下:
1)同步公网镜像,实现本地镜像仓库。
我们需要将OpenShift的安装镜像(110个左右容器镜像)同步到数据中心本地镜像仓库,然后整个部署过程不再需要访问外网镜像仓库。
2)获取其他部署需要的在线资源和辅助机器的配置。
·下载RHCOS操作系统的镜像,下载的时候需要选择与基础架构对应的版本。下载地址: https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos 。如果在物理服务器上安装,需要下载rhcos-4*-x86_64-metal-bios.raw.gz(用于安装RHCOS操作系统)和rhcos-4*-x86_64-installer.iso(用于引导启动Bootstrap服务器)。
·配置其他的安装角色。如在管理机上安装并配置DNS服务器、HTTP服务器、HAproxy服务器、NFS服务器等。
·下载openshift-install文件(版本必须与安装镜像相同,否则离线安装会失败)、OC客户端和pull-secret文件到管理机,并在管理机生成SSH Key。
3)准备OpenShift安装文件。
·通过openshift-install create install-config命令行生成install-config.yaml文件。该文件主要包含Base Domain、Master节点数、Pod IP地址段、Service IP地址段、本地镜像仓库的域名、从本地镜像仓库下载的pull secret等。
·执行openshift-install create manifests--dir=<installation_directory>,生成manifests。安装目录中必须包含修改后的install-config.yaml文件。命令执行完成后,会生成很多集群安装配置文件,如manifests/cluster-scheduler-02-config.yml。我们可以在配置文件中设置masterSchedulabel,即Master节点是否调度业务Pod。
·执行openshift-install create ignition-configs--dir=<installation_directory>,执行完毕后,会生成如下文件:
├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
bootstrap.ign是Bootstrap主机的安装配置,master.ign是Master节点的安装配置,worker.ign是Worker节点的安装配置。
·将所有.ign配置文件、RHCOS的ISO文件拷贝到HTTP服务器对应的目录上,以便Bootstrap、Master、Worker启动的时候可以从HTTP服务器获取操作系统ISO和.ign配置文件。
4)启动Bootstrap主机引导OpenShift集群。
·启动Bootstrap引导主机。
不同的环境创建Bootstrap主机的方式稍有不同,但我们可以使用物理主机的安装方式,在所有的环境安装,用rhcos-4*-x86_64-installer.iso启动Bootstrap引导主机。首先将主机引导至维护模式,查看主机的磁盘名和网卡名,记录下来。
重启主机,启动至RHCOS的安装界面时,按Tab键,然后输入如图3-5中所示的内容。
图3-5 配置RHCOS操作系统
以图3-5环境为例,在启动Bootstrap主机时,添加的配置内容如下。
coreos.inst.install_dev=sda coreos.inst.image_url=http://192.168.137.202:8080/ rhcos-4.2.0-x86_64-metal-bios.raw.gz coreos.inst.ignition_url= http://192.168.137.202:8080/bootstrap.ign ip=192.168.137.210::192.168.137.2: 255.255.255.0:bootstrap.ocp4.example.com:ens33:none nameserver=192.168.137.202
配置说明如下:
·设定系统安装到sda磁盘上。
·192.168.137.202为HTTP服务器的地址,会从该服务器上获取RHCOS的安装程序和bootstrap.ign文件。
·Bootstrap主机的IP地址设置为192.168.137.210、网关地址为192.168.137.2、子网掩码为255.255.255.0。
·Bootstrap主机的域名为bootstrap.ocp4.example.com。
·Bootstrap的网卡为ens33。
·Bootstrap的域名服务器地址为192.168.137.202。
·启动Master节点。
启动三个Master节点,启动注入参数示例如下(参数含义同bootstrap.ign)。
coreos.inst.install_dev=sda coreos.inst.image_url=http://192.168.137.202:8080/rhcos-4.2.0-x86_64-metal-bios. raw.gz coreos.inst.ignition_url=http://192.168.137.202:8080/master.ign ip= 192.168.137.203::192.168.137.2:255.255.255.0:master-0.ocp4.example.com: ens33:none nameserver=192.168.137.202
不同的Master节点注意替换IP地址和主机名。
·启动Worker节点。
根据需要启动多个Worker节点,启动注入参数示例如下(参数含义同bootstrap.ign)。
coreos.inst.install_dev=sda coreos.inst.image_url=http://192.168.137.202:8080/rhcos-4.2.0-x86_64-metal-bios.raw. gz coreos.inst.ignition_url=http://192.168.137.202:8080/worker.ign ip= 192.168.137.206::192.168.137.2:255.255.255.0:worker01.ocp4.example.com: ens33:none nameserver=192.168.137.202
不同的Worker节点注意替换IP地址和主机名。
5)验证集群状态。
等待安装完毕后,使用如下命令查看clusteroperators的版本,AVAILABLE的状态均为True表示集群状态健康,如图3-6所示。
# oc get clusteroperators
图3-6 查看Cluster Operator状态
当我们看到所有的ClusterOperator都已经正确安装,也就表示OpenShift集群部署成功。
可以看到整个离线安装过程中,步骤还是相对较多的。而离线部署的第一个工作就是同步公网镜像,创建本地镜像仓库,因此在正式介绍部署操作之前,我们先介绍配置OpenShift离线镜像的方法。