本文描述openshift4.7 baremental 在线安装方式,我的环境是 vmwamre esxi 虚拟化,也适用于其他方式提供的虚拟主机或者物理机。
本环境 3mater,2 worker
部署环境介绍
本此部署使用资源
方案还是采用高可用,比官方多了一个base节点,用来搭建部署需要的dns,pxe 等服务,这台系统用Centos7.6,因为centos解决源比较方便,等熟悉部署及所需安装包后可以换成RHEL。
其他机器都用RHCOS,就是coreos专门针对openshift的操作系统版本。通过PXE安装,不需要提前安装系统。
Machine | OS | vCPU | RAM | Storage | IP |
---|---|---|---|---|---|
bastion | Centos7.6 | 2 | 8GB | 100 GB | 192.168.2.29 |
bootstrap | RHCOS | 4 | 16GB | 120 GB | 192.168.2.30 |
master1 | RHCOS | 4 | 16 GB | 120 GB | 192.168.2.31 |
master2 | RHCOS | 4 | 16 GB | 120 GB | 192.168.2.32 |
master3 | RHCOS | 4 | 16 GB | 120 GB | 192.168.2.33 |
worker-0 | RHCOS | 4 | 16 GB | 120 GB | 192.168.2.34 |
worker-1 | RHCOS | 4 | 16 GB | 120 GB | 192.168.2.35 |
节点角色:
1台 基础服务节点,用于安装部署所需的 dns,pxe 服务。系统不限。同时承担负载均衡,用于负载master节点api及router,功能同3.x。这个服务现在需要自己部署,生产环境也可用硬负载。
1台 部署引导节点 Bootstrap,用于安装openshift集群,在集群安装完成后可以删除。系统RHCOS
3台 控制节点 Control plane,即master,通常使用三台部署高可用,etcd也部署在上面。系统RHCOS
2台 计算节点 Compute,用于运行openshift基础组件及应用 。系统RHCOS
安装顺序
顺序就是先准备基础节点,包括需要的 dns、dhcp 文件服务器、引导文件等,然后安装引导机 bootstrap,再后面就是 master, 再 node
安装准备
安装准备 - base基础配置
|base|centos7.6|4|8GB|100 GB|192.168.2.29|
- 安装系统 centos7.6 mini
设置IP,设置主机名,关闭防火墙和selinux
注意所有节点主机名采用三级域名格式 如 master1.aa.bb.com
hostnamectl set-hostname bastion.ocp4.example.com
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
- 设置 yum 缓存包到本地 - 可选步骤
针对在线安装,这样以后如果切换到离线安装,可以方便知道用了哪些包
编辑 /etc/yum.conf 把keepcache改为1
keepcache=1
yum -y install podman httpd httpd-tools vim
安装准备 oc command
下载最新的oc openshift-install 命令。进入下载链接,下载openshift client,openshift-install
直接选一个4.7最新的
https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/
tar -zxvf openshift-client-linux-4.7.5.tar.gz
mv oc /usr/local/bin/
oc version
Client Version: 4.7.5
tar -zxvf openshift-install-linux-4.7.5.tar.gz
chmod +x openshift-install
mv openshift-install /usr/local/bin/
openshift-install version
安装准备 – DNS,DHCP 部署
部署dnsmasq服务,这个服务可以同时做dns server, dhcp server和tftp,为后面的 RHCOS 提供PXE自动安装
yum install dnsmasq bind-utils tftp-server ipxe-bootimgs -y
# 配置dnsmasq,配置文件如下
# 需要提前把RHCOS节点的虚机创建好,在虚机配置里把MAC地址记下来
# 因为在内网里有其他机器,不把MAC和IP绑定,DHCP server准备的IP容易被其他机器拿去。
cd /etc/dnsmasq.d/
vi ocp4.conf
dhcp-range=192.168.2.30,192.168.2.38,255.255.255.0
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-match=set:bios,option:client-arch,0
dhcp-boot=tag:bios,undionly.kpxe
dhcp-match=set:efi32,option:client-arch,6
dhcp-boot=tag:efi32,ipxe.efi
dhcp-match=set:efibc,option:client-arch,7
dhcp-boot=tag:efibc,ipxe.efi
dhcp-match=set:efi64,option:client-arch,9
dhcp-boot=tag:efi64,ipxe.efi
dhcp-userclass=set:ipxe,iPXE
dhcp-option=option:router,192.168.2.1
dhcp-option=option:dns-server,192.168.2.29
dhcp-boot=tag:ipxe,http://bastion.ocp4.example.com:8080/boot.ipxe
address=/bastion.ocp4.example.com/192.168.2.29
address=/api.ocp4.example.com/192.168.2.29
address=/apps.ocp4.example.com/192.168.2.29
address=/api-int.ocp4.example.com/192.168.2.29
address=/master1.ocp4.example.com/192.168.2.31
address=/etcd-0.ocp4.example.com/192.168.2.31
address=/master2.ocp4.example.com/192.168.2.32
address=/etcd-1.ocp4.example.com/192.168.2.32
address=/master3.ocp4.example.com/192.168.2.33
address=/etcd-2.ocp4.example.com/192.168.2.33
address=/bootstrap.ocp4.example.com/192.168.2.30
address=/registry.example.com/192.168.2.29
srv-host=_etcd-server-ssl._tcp.ocp4.example.com,etcd-0.ocp4.example.com,2380,10
srv-host=_etcd-server-ssl._tcp.ocp4.example.com,etcd-1.ocp4.example.com,2380,10
srv-host=_etcd-server-ssl._tcp.ocp4.example.com,etcd-2.ocp4.example.com,2380,10
dhcp-host=00:50:56:95:45:00,bootstrap.ocp4.example.com,192.168.2.30
dhcp-host=00:50:56:95:69:72,master1.ocp4.example.com,192.168.2.31
dhcp-host=00:50:56:95:26:f2,master2.ocp4.example.com,192.168.2.32
dhcp-host=00:50:56:95:25:8d,master3.ocp4.example.com,192.168.2.33
dhcp-host=00:50:56:95:5d:13,worker1.ocp4.example.com,192.168.2.34
dhcp-host=00:50:56:95:fc:41,worker2.ocp4.example.com,192.168.2.35
log-queries
log-dhcp
log-facility=/var/log/dnsmasq.log
dhcp-range: 几台RHCOS预留的IP池,及掩码
dhcp-option=option:router: 网关地址
dhcp-option=option:dns-server: 这台部署机的IP,因为这台做dns server
dhcp-boot=tag:ipxe: 写这台部署机的主机名,其他不用改
下面的address,分别是主机名和IP地址
api.ocp4.example.com 多master,指向master的负载,这边写部署机,后面部署机上面安装负载均衡,负载指向到三个master api
apps.ocp4.example.com 指向部署机,部署机会安装通过haproxy 负载到infra的router
api-int.ocp4.example.com 同api.ocp4.example.com,指向openshift api,就是当前bastion节点
dhcp-host dhcp与mac配置,分别是几台RHCOS的mac地址,主机名,ip地址
配置tftp server,并启动dnsmasq,如果本机开启了防火墙还需要防火墙放行,我这台上面已经关闭防火墙了
mkdir -p /var/lib/tftpboot
ln -s /usr/share/ipxe/undionly.kpxe /var/lib/tftpboot
# 启动dnsmasq
systemctl enable dnsmasq && systemctl restart dnsmasq
# 查看dnsmasq服务状态,如果有报错,会提示错误在配置文件哪一行
systemctl status dnsmasq -l
# 本地修改 resolv.conf 文件
# 加一行下面参数,IP是本机地址,要写在其他nameserver前面
# 注意这个参数写在这里重启应该会丢,要想不丢,修改 /etc/sysconfig/network-scripts/ifcfg-ens192
# 加一行 DNS1=192.168.2.29 ,然后systemctl restart network
vi /etc/resolv.conf
nameserver 192.168.2.29
# 验证dns