精选文章

容器云平台OpenShift3.11集群部署历险记(中)

2020-05-21 16:41:51 | 来源:中培企业IT培训网

继续我们的踩坑之旅吧!


第五步:安装ansible,可以通过如下命令安装ansible最新版本:

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

sed -i -e "s/^enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo

yum -y --enablerepo=epel install ansible pyOpenSSL


但有时我们希望安装指定版本的话(经常会碰到一些兼容性的问题),上面的命令就不好用了,那么我们可以用下面的方法来安装:

sudo yum -y install ansible

sudo yum -y install epel-release

sudo yum -y install python-pip

sudo pip install --upgrade pip

sudo pip install --upgrade ansible==2.7.10


当然openshift3.11版本对ansible的版本要求至少在2.6.5以上,读者随便用指定版本或最新版本安装ansible都可以用满足要求的。


第六步:以此镜像为模板,我分别修改了3台虚拟机,每台虚拟机4G内存和2核cpu:

分别修改3台机器主机名:

hostnamectl set-hostname master01.okd.com

hostnamectl set-hostname node01.okd.com

hostnamectl set-hostname node02.okd.com


修改3台机器的/etc/hosts,都写入以下设置:

192.168.122.159 master01.okd.com

192.168.122.158 node01.okd.com

192.168.122.160 node02.okd.com


配置完IP和主机名后我要检验三台虚拟主机的连通情况:

ping master01.okd.com

ping node01.okd.com

ping node02.okd.com


结果发现相互之间都ping不通,然而百度都是可以访问的,这让我一个运维老手顿时傻眼,当然这个小坑很容易被我填平了,究其原因是因为我克隆的3台虚拟机的mac地址是一样的,只要修改它们的mac地址不同即可,如下图所示:



第七步:在master01.okd.com主机上安装playbook,正是有了playbook脚本我们才能比较方便的完成openshift的集群部署工作,但真的方便吗?天坑正在等待我们……


用以下命令完成下载和安装:

yum install -y unzip zip

cd /

wget https://github.com/openshift/openshift-ansible/archive/release-3.11.zip

unzip release-3.11.zip


第八步:为playbook脚本提速,我们要修改openshift-ansible-release-3.11 olesopenshift_repos emplatesCentOS-OpenShift-Origin311.repo.j2文件,将镜像地址改为mirrors.aliyun.com,如下图所示:


第九步:修改master01.okd.com主机的/etc/ansible/hosts文件,内容如下:

[OSEv3:children]

masters

nodes

etcd


[OSEv3:vars]

ansible_ssh_user=root

openshift_deployment_type=origin

# 机器配置还达不到官方推荐的配置,所有这里把机器配置检查关掉,不然安装会失败

openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability

openshift_master_identity_providers=[{'name':'htpasswd_auth','login':'true','challenge':'true','kind':'HTPasswdPasswordIdentityProvider',}]

os_firewall_use_firewalld=true

openshift_master_default_subdomain=okd.com

openshift_master_cluster_hostname=master01.okd.com

openshift_master_cluster_public_hostname=master01.okd.com


[masters]

master01.okd.com


[etcd]

master01.okd.com


[nodes]

# default project默认registry-console指向master

# default project默认router和docker-registry指向infra

# 如果不匹配会出现pending状态

master01.okd.com openshift_node_group_name='node-config-master'

node01.okd.com openshift_node_group_name='node-config-infra'

node02.okd.com openshift_node_group_name='node-config-compute'


上面这段hosts文件脚本中其实也隐藏了一个坑,那就是:

node01.okd.com openshift_node_group_name='node-config-infra',很多文章不管三七二十一,和node02.okd.com节点一样,全部配置成'node-config-compute',即使最后安装成功了,但你会发现router和docker-registry服务状态一直是pending状态,原因是default project默认router和docker-registry指向infra,所以我们必须要为某一个节点配置'node-config-infra',否则安装好的openshift在没有了default project项目的router和docker-registry服务情况下将啥事都不能干,您说这个坑还小吗?当然这还不是天坑,起码装出来了呀,问题在于根本装不出来,因为天坑就在前面了,当你遇到天坑的话,打道回府的是多数,我经过不断的排疑填平了天坑,心里暗自窃喜。大家继续跟着我走向天坑吧!


第十步:为了完成集群部署的自动操作,我们必须为3台机器配置免密登录,在master01.okd.com主机上运行如下命令完成:

生成秘钥一直回车 ssh-keygen

ssh-copy-id master01.okd.com

ssh-copy-id node01.okd.com

ssh-copy-id node02.okd.com

生成秘钥和复制后测试一下免密的互联性:

ansible all -m ping

如果您看到下图的结果则表明免密互联成功:

然后再通过下面的命令重启每个host的dnsmq即可:

ansible all -m shell -a "systemctl restart dnsmasq"

如下图所示:

恭喜您,又向天坑迈进了一步!


第十一步:准备集群部署前的检查测试工作,我们在master01.okd.com主机上运行如下命令:

ansible-playbook /openshift-ansible-release-3.11/playbooks/prerequisites.yml

当您看到下图中没有任何一个failed的结果时,代表检测成功:

 


第十二步:集群安装,终于到这步了,官方告知我们可以运行下面这条命令:

ansible-playbook /openshift-ansible-release-3.11/playbooks/deploy_cluster.yml

即可完成整个集群部署,但事实上能够很顺利一条龙打通的几乎是不可能的,官坑也害人呀!我分析了deploy_cluster.yml脚本,发现其实就是按顺序执行如下几个分部的脚本:

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-checks/pre-install.yml

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-node/bootstrap.yml

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-etcd/config.yml

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-master/config.yml(这里就是天坑的位置)

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-master/additional_config.yml

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-node/join.yml

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-hosted/config.yml

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-monitoring/config.yml

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-web-console/config.yml

ansible-playbook /openshift-ansible-release-3.11/playbooks/openshift-console/config.yml


每一个分部脚本必须没有任何一个failed才算安装部署完成。我推荐大家按顺序分步执行每个yml脚本!


好了,小伙伴们在《容器云平台OpenShift3.11集群部署历险记(下)》里继续看我怎么填平一路的坑和最后的天坑吧!


标签: 云平台 容器云