使用VirtualBox构建Openshift集群1搭建Openshift本地环境云计算容器化Contents使用VirtualBox构建Openshift集群 ............................................................... 1集群规划定义虚拟机安装依赖项配置访问创建安装是红帽基于和的云开发平台即服务()。而即的开源版本。在本机上搭建一套完整的环境较为麻烦,有以下几种方式:使用构建集群使用VirtualBox构建Openshift集群按照安装文档应该可以在本地搭建一个集群,但是纯手动安装的话比较复杂,幸好有这个项目可以帮助我们简单的构建出一个集群环境。集群规划下面是计划搭建的最简单的单、多的一个集群配置:整个安装步骤可以分为这几步:创建好、三个虚拟机通过文件设置好域名解析在、上都安装依赖配置在上可以通过访问到、在上安装在上执行部署定义虚拟机如果手动从安装虚拟机、再安装系统的话,需要耗费不少时间,通过我们可以快速自动化地创建出这样的一个机器集群,类似从拉取一样。定义这些只需要创建一个:Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.box_check_update = false 使用VirtualBox构建Openshift集群2 config.vm.provider "virtualbox" do |vb| vb.memory = 2048 vb.cpus = 1 end config.vm.provision "shell", inline: <<-SHELL /vagrant/common.sh SHELL config.hostmanager.enabled = true config.hostmanager.manage_host = true config.hostmanager.ignore_private_ip = false (1..2).each do |i| config.vm.define "node0#{i}" do |node| node.vm.network "private_network", ip: "#{NETWORK_BASE}#{i}" node.vm.hostname = "node0#{i}.example.com" end endend以上的配置定义了操作系统、内存和,以及网络和域名设置,然后创建、。这里用到了的插件,他会去修改宿主机以及虚拟机的文件,增加域名映射。同时,可以把一些公共的依赖项安装脚本进行,例如安装。然后,还需要创建节点:config.vm.define "master", primary: true do |master| master.vm.network "private_network", ip: "#{NETWORK_BASE}0" # master.vm.hostname = "master.example.com" master.hostmanager.aliases = %w(master.example.com etcd.example.com nfs.example.com) master.vm.provider "virtualbox" do |vb| vb.memory = "4096" vb.cpus = 2 endend创建了之后,就可以利用vagrant up命令来创建和启动这些虚拟机了。 使用VirtualBox构建Openshift集群3这里的域名配置有个坑,那就是会会生成一个的映射在文件里面,但是这个文件开头还有指向,像这样:127.0.0.1 master.example.com master127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6## vagrant-hostmanager-start192.168.11.102 node02.example.com192.168.11.100 master.example.com192.168.11.101 node01.example.com## vagrant-hostmanager-end所以这里设置的master.hostmanager.aliases,同时要手动修改:hostnamectl set-hostname master.example.com安装依赖项各个节点上都需要安装环境,使用下面的命令安装:yum -y install docker-1.13.1# http://softpanorama.org/VM/Docker/Installation/rhel7_docker_package_dockerroot_problem.shtmlusermod -aG dockerroot vagrantcat > /etc/docker/daemon.json <<EOF{ "group": "dockerroot" 使用VirtualBox构建Openshift集群4}EOFsystemctl enable dockersystemctl start docker同时需要禁用掉:setenforce 0sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config而在上需要装更多的依赖项:yum install wget git net-tools bind-utils yum-utils iptables-services bridge-utils bash-completion kexec-tools sos psacctyum install unzipyum -y install https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/ansible-2.9.6-1.el7.ans.noarch.rpm这里安装依赖项之前,可以考虑将源替换为源,这样速度会稍微快一点。配置ssh访问应为整个集群安装是在上进行的,但实际上有一些东西是需要操作的,因此要配置好在上能直接无密码登录到其他的上。这里通过私钥的形式来设置,首先在中if File.exist?(".vagrant/machines/master/virtualbox/private_key") master.vm.provision "master-key", type: "file", source: ".vagrant/machines/master/virtualbox/private_key", destination: "/home/vagrant/.ssh/master.key"endif File.exist?(".vagrant/machines/node01/virtualbox/private_key") master.vm.provision "node01-key", type: "file", source: ".vagrant/machines/node01/virtualbox/private_key", destination: "/home/vagrant/.ssh/node01.key"endif File.exist?(".vagrant/machines/node02/virtualbox/private_key") master.vm.provision "node02-key", type: "file", source: ".vagrant/machines/node02/virtualbox/private_key", destination: "/home/vagrant/.ssh/node02.key"end然后通过下面的命令将文件拷贝过去:vagrant provision --provision-with master-key,node01-key,node02-key这一步的目的是因为在创建这些的时候,这个还没有生成,只能在创建完之后才能成功拷贝过去。然后设置的配置:# vagrant ssh master#vim ~/.ssh/configHost *StrictHostKeyChecking no 使用VirtualBox构建Openshift集群5到这一步,、访问都应该是成功的,如果想检查是否配置成功,可以在上测试:vagrant ssh masterdocker -vssh -i node01.key vagrant@node01.example.com创建Inventory通过执行需要一个文件,如下:[OSEv3:children]mastersnodesetcd[OSEv3:vars]ansible_ssh_user=vagrantansible_become=trueopenshift_deployment_type=originopenshift_disable_check=disk_availability,memory_availability,docker_storage,docker_image_availability[masters]master.example.com ansible_ssh_private_key_file="/home/vagrant/.ssh/master.key"[etcd]master.example.com ansible_ssh_private_key_file="/home/vagrant/.ssh/master.key"[nodes]master.example.com containerized=false etcd_ip=192.168.11.100 openshift_node_group_name='node-config-master-infra' ansible_ssh_private_key_file="/home/vagrant/.ssh/master.key"node01.example.com openshift_node_group_name='node-config-compute' ansible_ssh_private_key_file="/home/vagrant/.ssh/node01.key"node02.example.com openshift_node_group_name='node-config-compute' ansible_ssh_private_key_file="/home/vagrant/.ssh/node02.key"这里有几点坑:containerized=false etcd_ip=192.168.11.100这个如果不加会导致错误这个文件保存到。安装在上面安装yum -y install https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/ansible-2.9.6-1.el7.ans.noarch.rpmwget https://github.com/openshift/openshift-ansible/archive/openshift-ansible-3.11.187-1.zip然后,最好把里面的修改成国内的,否则很可能安装不成功或者要花很长时间: 使用VirtualBox构建Openshift集群6sed -i 's/mirror.centos.org/mirrors.163.com/g' openshift-ansible/roles/openshift_repos/templates/CentOS-OpenShift-Origin311.repo.j2正是安装:ansible-playbook /home/vagrant/openshift-ansible/playbooks/prerequisites.yml && ansible-playbook /home/vagrant/openshift-ansible/playbooks/deploy_cluster.yml如果一切正常的话,就可以安装成功了。其中有几步比较耗时大概十分钟左右),需要点耐心:TASK [openshift_node : Install node, clients, and conntrack packages]TASK [openshift_node : Check status of node image pre-pull]成功之后,可以看到:PLAY RECAP ***********************************************************************************************************localhost : ok=11 changed=0 unreachable=0 failed=0 skipped=5 rescued=0 ignored=0master.example.com : ok=622 changed=275 unreachable=0 failed=0 skipped=987 rescued=0 ignored=0node01.example.com : ok=130 changed=63 unreachable=0 failed=0 skipped=167 rescued=0 ignored=0node02.example.com : ok=130 changed=63 unreachable=0 failed=0 skipped=167 rescued=0 ignored=0INSTALLER STATUS *****************************************************************************************************Initialization : Complete (0:00:18)Health Check : Complete (0:00:04)Node Bootstrap Preparation : Complete (0:34:23)etcd Install : Complete (0:00:32)Master Install : Complete (0:07:48)Master Additional Install : Complete (0:00:34)Node Join : Complete (0:06:56)Hosted Install : Complete (0:00:56)Cluster Monitoring Operator : Complete (0:02:47)Web Console Install : Complete (0:01:45)Console Install : Complete (0:01:21)Service Catalog Install : Complete (0:07:53)然后就可以访问https://master.example.com:8443/了: 使用VirtualBox构建Openshift集群7多节点集群()安装