概述
在去年 OpenShift 4.1 刚刚出来折腾了好久,坑挺多的,今天安装4.3明显坑少了很多,基本没什么坑,就是基础环境的准备花了挺多时间,做个记录。
- 安装方式是baremetal,我用的是VMware虚拟机,使用的是PXE方式装系统。
安装环境介绍
- 7台机器:
创建一台基础架构节点,我使用rhel7.6;另外创建6台虚拟机,不需要指定系统文件,8C16G100G硬盘。
基础架构节点
:主要有负载均衡、Apache、DNS,以及定义集群的相关文件生成和存放的位置。
bootstrap节点
:一个引导节点,会临时生成一个kubernetes集群,负责openshift集群的安装,openshift安装好后,最后kubernetes集群会消失,随后这个节点也没用了。
master节点
:与ocp3一样。
work节点
: 与ocp3一样,不过router相关组件也运行在这上面,没有了infra这种角色的节点。
- 网络
一台基础架构节点:
172.31.20.100
一台bootstrap节点:
172.31.20.101
三台master节点:
172.31.20.102-104
两台worker节点:
172.31.20.105-106
网关
:172.31.20.254
DNS Server
:172.31.0.121
基础架构节点
基础架构节点我使用 GitHub 上一个大神准备工具进行搭建,也供我们参考学习一下如何准备基础架构环境:
https://github.com/RedHatOfficial/ocp4-helpernode
在基础架构节点上安装相关环境
- 下载github代码
注意要使用新版本的ansible,我使用的是2.9.6,否则ansible会报错ssh-key生成的问题。
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm
yum -y install ansible git
git clone https://github.com/RedHatOfficial/ocp4-helpernode
cd ocp4-helpernode
- 准备ansible相关文件
cp docs/examples/vars.yaml .
- 修改mac地址等相关参数如下:
---
disk: sda
helper:
name: "helper"
ipaddr: "172.31.20.100"
dns:
domain: "poc.com"
clusterid: "ocp4"
forwarder1: "172.31.0.121"
forwarder2: "8.8.4.4"
dhcp:
router: "172.31.20.254"
bcast: "172.31.20.255"
netmask: "255.255.255.0"
poolstart: "172.31.20.101"
poolend: "172.31.20.109"
ipid: "172.31.20.0"
netmaskid: "255.255.255.0"
bootstrap:
name: "bootstrap"
ipaddr: "172.31.20.101"
macaddr: "00:50:56:b7:fa:e1"
masters:
- name: "master00"
ipaddr: "172.31.20.102"
macaddr: "00:50:56:b7:87:b4"
- name: "master01"
ipaddr: "172.31.20.103"
macaddr: "00:50:56:b7:87:95"
- name: "master02"
ipaddr: "172.31.20.104"
macaddr: "00:50:56:b7:a8:32"
workers:
- name: "worker00"
ipaddr: "172.31.20.105"
macaddr: "00:50:56:b7:db:1e"
- name: "worker01"
ipaddr: "172.31.20.106"
macaddr: "00:50:56:b7:29:74"
- 先下载相关文件基础文件,再导入基础架构节点,否则在执行ansible下载非常慢
ocp_bios: "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.3/4.3.8/rhcos-4.3.8-x86_64-metal.x86_64.raw.gz"
ocp_initramfs: "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.3/4.3.8/rhcos-4.3.8-x86_64-installer-initramfs.x86_64.img"
ocp_install_kernel: "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.3/4.3.8/rhcos-4.3.8-x86_64-installer-kernel-x86_64"
ocp_client: "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.3.8/openshift-client-linux-4.3.8.tar.gz"
ocp_installer: "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.3.8/openshift-install-linux-4.3.8.tar.gz"
- 将下载好的文件导入的路径,如果没有对应的路径,手动创建。
mkdir -p /var/www/html/install/
mkdir -p /var/lib/tftpboot/rhcos/
cp openshift-client-linux-4.3.8.tar.gz /usr/local/src/openshift-client-linux.tar.gz
cp openshift-install-linux-4.3.8.tar.gz /usr/local/src/openshift-install-linux.tar.gz
cp rhcos-4.3.8-x86_64-metal.x86_64.raw.gz /var/www/html/install/bios.raw.gz
cp rhcos-4.3.8-x86_64-installer-initramfs.x86_64.img /var/lib/tftpboot/rhcos/initramfs.img
cp rhcos-4.3.8-x86_64-installer-kernel-x86_64 /var/lib/tftpboot/rhcos/kernel
- 执行ansible
ansible-playbook -e @vars.yaml tasks/main.yml
- 查看环境的工具使用
/usr/local/bin/helpernodecheck
Usage:
helpernodecheck {dns-masters|dns-workers|dns-etcd|dns-other|install-info|haproxy|services|nfs-info}
- 创建Ignition文件
mkdir ~/ocp4
cd ~/ocp4
mkdir -p ~/.openshift
- 去下载pull-secret文件,然后放到~/.openshift目录下
mkdir -p ~/.openshift
- 查看helper_rsa文件是否存在
现在的ansible会帮助我们创建密钥文件,也可以关闭:
ls -1 ~/.ssh/helper_rsa
- 准备创建install-config文件
cd ~/ocp4
cat < install-config.yaml
apiVersion: v1
baseDomain: poc.com
compute:
- hyperthreading: Enabled
name: worker
replicas: 0
controlPlane:
hyperthreading: Enabled
name: master
replicas: 3
metadata:
name: ocp4
networking:
clusterNetworks:
- cidr: 10.254.0.0/16
hostPrefix: 24
networkType: OpenShiftSDN
serviceNetwork:
- 172.30.0.0/16
platform:
none: {}
pullSecret: '$(< ~/.openshift/pull-secret)'
sshKey: '$(< ~/.ssh/helper_rsa.pub)'
EOF
- 创建manifests文件:
openshift-install create manifests
- 将master设置为不可调度
sed -i 's/mastersSchedulable: true/mastersSchedulable: false/g' manifests/cluster-scheduler-02-config.yml
- 创建ignition文件:
openshift-install create ignition-configs
- 放到对应路径:
cp ~/ocp4/*.ign /var/www/html/ignition/
restorecon -vR /var/www/html/
chmod o+r /var/www/html/ignition/*.ign
- 开始安装
openshift-install wait-for bootstrap-complete --log-level debug
漫长的等待,等待的过程中做些啥呢?
- 登录三台虚拟机的console,看看日志它们都在干嘛
- 从基础架构节点登录到bootstrap节点,用下面的命令查看日志,能看到安装过程中的信息:
ssh core@bootstrap
journalctl -b -f -u bootkube.service
- 同理也可以登录master和work节点,用如下命令查看容器和镜像:
sudo podman images
sudo podman ps
sudo crictl ps
sudo crictl images
- 切换为root
sudo su -
安装过程中其实有很多报错,但是那些报错是因为镜像没有拉取到,容器没有起来,对应的服务没有起来导致的报错,只需要等待就可以了,但是前提是得你的网络还不错。
安装结束后
- 准备认证文件
export KUBECONFIG=/root/ocp4/auth/kubeconfig
# 或
cp ~/ocp4/auth/kubeconfig ~/.kube/config
- 查看csr请求
oc get csr
oc get csr --no-headers | awk '{print $1}' | xargs oc adm certificate approve
oc get csr | grep 'system:node'
- 部署nfs storageclass
helpernodecheck nfs-setup
- 将镜像仓库设置为可管理
oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
- 将镜像仓库以route暴露出去
oc patch configs.imageregistry.operator.openshift.io/cluster --type merge -p '{"spec":{"defaultRoute":true}}'
- 设置镜像仓库的存储为pvc
$ oc edit configs.imageregistry.operator.openshift.io
storage:
pvc:
claim:
- 查看image-registry是否ready:
oc get clusteroperator image-registry
- 查看pvc是否创建:
oc get pvc --all-namespaces
- 拿到集群输出信息去登录:
openshift-install wait-for install-complete
参考链接
https://github.com/RedHatOfficial/ocp4-helpernode/blob/master/docs/quickstart.md