环境介绍(时长: 2 mins)
当前实验包括如下节点(node)
(1) bastion(堡垒机)
实验位置:
右侧命令行界面
主机名:
bastion.ocp1.cscdemo.cn
IP地址:
192.168.1.99 (受限网络) 、
172.16.195.xx (Internet访问) 、
172.16.177.xx(可忽略)
用途:
DNS、DHCP、HTTP、
haproxy、本地镜像库(Mirror Registry)
状态:已安装
(2) bootsrtap(点火机)
实验位置:
右侧VMware中 Bootstrap_192.168.1.100
主机名:
bootstrap.ocp1.cscdemo.cn
IP地址:
192.168.1.100 (受限网络)
用途:
用于安装Master节点,安装后即可删除
状态:待安装
(3) master (三台)
实验位置:
右侧VMware中 Master-0x_192.168.1.10x
主机名/IP:
master-1.ocp1.cscdemo.cn / 192.168.1.101
master-2.ocp1.cscdemo.cn / 192.168.1.102
master-3.ocp1.cscdemo.cn / 192.168.1.103
用途:OpenShift 主节点
状态:待安装
(4) worker (两台)
实验位置:
右侧VMware中 Worker-0x_192.168.1.11x
主机名/IP:
worker-1.ocp1.cscdemo.cn / 192.168.1.111
worker-2.ocp1.cscdemo.cn / 192.168.1.112
用途:工作负载
状态:待安装
检查bastion节点服务状态(时长: 5 mins)
为了简化安装体验,这里已将dnsmasq、haproxy、mirror-registry、Nginx配置完成
打开bastion的ssh命令行界面
1) 检查 dnsmasq 状态与相关配置文件
systemctl status dnsmasq
小贴士:在窗口右侧的操作区敲入上述命令,回车执行 点击( )可自动在操作区插入命令,更加快捷
cat /etc/dnsmasq.conf
cat /etc/dnsmasq.d/cscdemo.cn.conf
cat /etc/upstream_dns.conf
cat /etc/resolv.conf
用途:提供DNS DHCP服务,upstream_dns.conf 和 resolve.conf提供上下游的DNS地址
2) 检查 haproxy 状态与配置文件
systemctl status haproxy
cat /etc/haproxy/haproxy.cfg
用途:提供80 443 6443 22623端口的负载均衡服务
3) 检查 mirror-registry
podman ps
curl -u admin:redhat -k https://reg.ocp1.cscdemo.cn:5000/v2/_catalog
显示以下信息表示正常
{"repositories":["ocp4/openshift4"]}
用途:提供本地registry镜像库,我们已经下载到本地,该服务使用5000端口
4) 检查 Nginx 服务与配置文件
systemctl status nginx
cat /etc/nginx/nginx.conf
用途:安装节点时提供HTTP服务,由于默认80端口与haproxy冲突,这里改用8008端口
生成安装配置文件(时长: 10 mins)
1) 生成安装OCP配置文件 install-config.yaml
为了简化操作,我们已经生成该文件,可通过以下命令查看
cat /root/ocp1/install-config.yaml
其中
a) pull_Secret 用于从本地Registry和Redhat官网拉取安装文件(cat ~/pull_secret.json)
b) sshKey 用于节点间ssh互信 (cat ~/.ssh/id_rsa.pub)
c) additionalTrustBundle 为registry提供的证书 (cat /etc/pki/ca-trust/source/anchors/ca.pem)
2) 生成kubernetes集群的manfests
openshift-install create manifests --dir=/root/ocp1
3) 修改scheduler的配置清单,让其不往master节点上调度pod
sed -i 's/mastersSchedulable: true/\mastersSchedulable: false/' /root/ocp1/manifests/cluster-scheduler-02-config.yml
这里将 mastersSchedulable: true 改为 false,您也可以使用 vi 进行操作
4) 生成ignition文件并查看
openshift-install create ignition-configs --dir=/root/ocp1
ls /root/ocp1/*.ign
包括 bootstrap.ign / master.ign / worker.ign
,这是部署这些节点时的配置文件
5) 复制ignition文件到HTTP网站根目录,增加ignition访问权限,并验证可用
cp ~/ocp1/*.ign /usr/share/nginx/html/
chmod a+r /usr/share/nginx/html/*.ign
curl http://192.168.1.99:8008/worker.ign
安装bootstrap节点(时长: 20 mins)
1) (重要)修正VMware 时间
打开VMware vSphere Client,选中左侧192.168.1.9
的ESXi主机,右侧标签选中Configuration
,在Software
中点击Time Configuration
,点击右上角Properties...
修改为正确的时间(Time
)和日期(Date
),参考实验界面右下角Windows跳转机的时间
注:真实生产中需要用NTP服务器同步时间,否则部署会出现证书时间问题
2) 启动 Bootstrap
左导航中,右键 Bootstrap_192.168.1.100
,点击Power -> Power On
;
再右键 Bootstrap_192.168.1.100
,点击Open Console
,进入Bootstrap管理控制台
3)通过Bastion的ign文件安装 Bootstrap
等待Bootstrap从光驱引导完成后,在$提示符下输入
sudo coreos-installer install /dev/sda \ -I http://bastion:8008/bootstrap.ign \ --insecure-ignition
提示:如果命令输错,可以上键恢复错误命令,修改后再回车
等待100%完成后,在$提示符后输入 reboot
重启;
4) 监控Bootstrap安装状态
提示:同时按下 CTRL+ALT
,可以从当前管理控制台释放鼠标
等待启动完成后,出现bootstrap login:
提示符后,
切换到ssh窗口,如下图的 Bastion命令行界面,
输入
ssh core@bootstrap
第一次登陆需要输入 yes
同意连接,登陆bootstrap后,输入
journalctl -b -f -u release-image.service -u bootkube.service
在bootstrap界面实时监控OCP安装状态
再打开一个Bastion命令行窗口(双击上方的 1 Bastion
标签即可),
输入
openshift-install --dir=/root/ocp1 wait-for bootstrap-complete --log-level=debug
在bastion中监控bootstrap安装状态
安装master节点(时长: 25 mins)
1) 启动3台 master 节点
打开VMware vSphere Client,
左导航中,右键 Master-1_192.168.1.101
,点击Power -> Power On
;
再右键 Master-1_192.168.1.101
,点击Open Console
,进入Master-1管理控制台
参考上述方法,启动并进入 Master-2 和 Master-3 管理控制台
2) 开始安装系统
分别在3台Master管理控制台中输入
sudo coreos-installer install /dev/sda \ -I http://bastion:8008/master.ign \ --insecure-ignition
等待100%完成后,在$提示符后输入 reboot
重启;
3台master重启后,回到命令行界面,继续监控安装状态
3) 监控安装过程(此时视网络情况需要等待十几分钟)
等待第一个窗口bootstrap监控提示如下信息
Sending bootstrap-finished event.Tearing down temporary bootstrap control plane...
Waiting for CEO to finish...
Cluster etcd operator bootstrapped successfully
cluster-etcd-operator bootstrap etcd
bootkube.service complete
表示master安装成功
第二个窗口,master安装成功后,提示如下信息
DEBUG Bootstrap status: complete
INFO It is now safe to remove the bootstrap resources
DEBUG Time elapsed per stage:
DEBUG Bootstrap Complete: 24m25s
INFO Time elapsed: 24m25s
4) 拆除 Bootstrap
此时bootstrap节点已经完成使命,在第一个窗口(切记! ),键盘按下Ctrl+C,
回到#提示符,确认#前面是[core@bootstrap ~]
,输入
sudo poweroff
关闭 bootstrap(注意:一定在bootstrap执行此操作)
安装worker节点(时长: 60 mins)
1) 启动2台 worker 节点
打开VMware vSphere Client,
左导航中,右键 Worker-1_192.168.1.111
,点击Power -> Power On
;
再右键 Worker-1_192.168.1.111
,点击Open Console
,进入Worker-1管理控制台
参考上述方法,启动并进入 Worker-2 管理控制台
2) 开始安装系统
分别在2台Worker管理控制台中输入
sudo coreos-installer install /dev/sda \ -I http://bastion:8008/worker.ign \ --insecure-ignition
等待100%完成后,在$提示符后输入 reboot
重启;
3) 手工批准worker节点的kubelet证书
切回ssh的bastion界面,在第一个窗口输入
export KUBECONFIG=/root/ocp1/auth/kubeconfig
watch oc get csr -A
如果最后一列出现Pending,Ctrl+C
后,输入以下命令进行批复
oc get csr -A -o name |xargs oc adm certificate approve
再次执行以下命令,监控最后一列状态
watch oc get csr -A
如果有Pending状态,可以再次执行批复命令
oc get csr -A -o name |xargs oc adm certificate approve
直到 worker-1 和 worker-2 批复后变为Approved, Issued
状态即可
4) 监控安装过程
a) 监控Operator组件安装状况,在第二个窗口输入
export KUBECONFIG=/root/ocp1/auth/kubeconfig
watch oc get clusteroperators
b) 监控OCP安装情况,新打开第三个Bastion窗口输入
openshift-install --dir=/root/ocp1 wait-for install-complete --log-level=debug
这是安装的最后一步,需要等待几十分钟,如果报错退出命令,可以重复执行上一条命令继续监控
当提示如下信息,表示安装成功
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.ocp1.cscdemo.cn
INFO Login to the console with user: kubeadmin, password: XXXX-XXXX-XXXX-XXXX
安装完成并登录OCP管理界面(时长: 10 mins)
打开火狐浏览器,默认主页已设为 https://console-openshift-console.apps.ocp1.cscdemo.cn
点击 高级->添加例外->确认安全例外
,信任并例外站点后,
输入账号,用户名:kubeadmin
,密码参考上一步安装成功的提示,或者在ssh中查看以下文件获取密码
cat /root/ocp1/auth/kubeadmin-password