openshift/origin学习记录(8)——基于镜像安装多节点集群(Containerized Installer)

本节内容是Docker镜像以及Ansible实现多节点集群Containerized Installer。大体流程和基于RPM的安装过程类似。

新更新了一篇3.10.0的安装博客,链接https://blog.csdn.net/huqigang/article/details/82351972

本部分openshift集群的部署分为以下几个阶段:

  1. 主机准备。准备openshift集群需要的主机。
  2. 安装前预配置。准备相应的系统配置与软件依赖。
  3. 执行安装。使用Ansible Playbook进行自动化安装。

主机准备

由于是在自己笔记本上尝试部署多节点集群,内存有限,这里采用两节点集群。

类型 主机名 IP 操作系统 CPU
Master master.example.com 192.168.121.158 CentOS 7.3 2G
Node node.example.com 192.168.121.157 CentOS 7.3 2G


需要分配2G内存。生产环境官方推荐Master至少16G内存,Node至少8G内存。

在这里,我给每台虚机均挂载了两块硬盘,其中一块/dev/sdb之后会作为Docker的存储空间。使用fdisk -l指令可以查看。

这里写图片描述

安装前预配置

配置主机名

确实主机名配置正确。如有需要,可采用hostnamectl命令设置主机名。例如:

# hostnamectl set-hostname master.example.com

此外需要保证主机名能够正确的解析到主机IP。可以通过ping $(hostname)来验证。

实际生产环境推荐配置相关的域名解析服务器。

在此直接修改各个节点的/etc/hosts文件,加上静态的域名解析。

192.168.121.158 master.example.com
192.168.121.157 node.example.com 
  • 开启SELINUX

官方文档推荐开启SELINUX,否则会导致安装失败。
修改/etc/selinux/config

SELINUX=enforcing
SELINUXTYPE=targeted

安装及配置软件包

  • 所有的节点下执行以下命令安装Openshift依赖的软件包。
# yum -y install wget git net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct vim lrzsz
  • 所有节点安装atomic。
# yum install -y atomic

安装及配置docker

  • 所有节点安装docker。
# yum install -y docker
  • 所有节点配置Docker。

修改/etc/sysconfig/docker-storage-setup。修改Docker镜像存储空间。修改后内容如下。

DEVS=/dev/sdb
VG=dockervg
  • 执行docker-storage-setup。

这里写图片描述

  • 所有节点启动docker。
# systemctl enable docker
# systemctl start docker

配置SSH

  • master节点上生成SSH密钥。
# ssh-keygen -f /root/.ssh/id_rsa -N ''

Ansible是基于Agentless架构实现的,即不需要在远程的目标主机上预先安装Agent程序。Ansible对远程主机命令的执行依赖SSH等远程控制协议。因为将在Master上执行Ansible Playbook安装openshift,所以需要配置Master到各个节点的互信,包括Master到Master的互信
在Master节点上执行:

for host in master.example.com node.example.com ; do ssh-copy-id -i ~/.ssh/id_rsa.pub $host;  done

这里写图片描述

镜像准备

因为是Containerized Installer,安装过程中需要下载镜像,这里选择提前准备好安装中必备的较大的镜像。
包括如下:

openshift/origin:v3.6.0
openshift/node:v3.6.0 (node + openshift-sdn + openvswitch RPM for client tools)
openshift/openvswitch:v3.6.0 (CentOS 7 + openvswitch RPM, runs ovsdb and ovsctl processes)
registry.access.redhat.com/rhel7/etcd:latest
openshift/origin-ansible:v3.6

这里的镜像列举不全,可以参考本文最后的一张截图查看集群所需的所有镜像。推荐提前在主机上pull好镜像,或者将镜像导入本地镜像仓库。

  • 在Master节点上将openshift/origin-ansible镜像pull到atomic 里:
# atomic pull --storage ostree docker:docker.io/openshift/origin-ansible:v3.6

该步的官网解释如下。

The openshift/origin-ansible image is a containerized version of the OpenShift Origin installer that runs as a system container. System containers are stored and run outside of the traditional docker service. Functionally, using the containerized installer is the same as using the traditional RPM-based installer, except it is running in a containerized environment instead of directly on the host.
The installer system container must be stored in OSTree instead of defaulting to docker daemon storage.

大意是openshift/origin-ansible这个镜像是OpenShift Origin容器版安装程序,以系统容器的方式运行。系统容器在传统docker服务之外存储和运行。
系统容器必须存储在OSTree中,而不是默认的docker储存。

配置Ansible

配置Ansible的hosts配置文件(记录了Ansible需要操作的目标主机信息)。

  • 创建hosts文件
# mkdir /etc/ansible
# touch /etc/ansible/hosts
  • 创建/etc/ansible/hosts文件,添加下面的内容。

可参考https://docs.openshift.org/latest/install_config/install/advanced_install.html官网内容进行编写。

# Create an OSEv3 group that contains the masters and nodes groups
[OSEv3:children]
masters
nodes
etcd

# Set variables common for all OSEv3 hosts
[OSEv3:vars]
# SSH user, this user should allow ssh based auth without requiring a password
ansible_ssh_user=root
openshift_deployment_type=origin
openshift_release=3.6.0
openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability
containerized=true
openshift_use_etcd_system_container=true

# uncomment the following to enable htpasswd authentication; defaults to DenyAllPasswordIdentityProvider
openshift_master_identity_providers=[{'name':'htpasswd_auth','login':'true','challenge':'true','kind':'HTPasswdPasswordIdentityProvider','filename':'/etc/origin/master/htpasswd'}]

# host group for masters
[masters]
master.example.com

# host group for nodes, includes region info
[nodes]
master.example.com openshift_schedulable=True openshift_node_labels="{'region': 'infra'}"
node.example.com openshift_node_labels="{'region': 'infra', 'zone': 'east'}"

[etcd]
master.example.com    

在Master节点上安装系统容器,使其被设置为系统服务

# atomic install --system --storage=ostree --name=openshift-installer --set INVENTORY_FILE=/etc/ansible/hosts docker:docker.io/openshift/origin-ansible:v3.6

参数INVENTORY_FILE为上文配置的Ansible的hosts配置文件,docker为使用的镜像文件。
这里写图片描述
想要卸载openshift-installer的话可以执行:

# atomic uninstall openshift-installer

在Master节点上启动安装

# systemctl start openshift-installer

另起一个窗口,使用journalctl -f -u openshift-installer可以查看实时日志。

这里写图片描述

验证安装结果

检查集群状态。

# oc get nodes

这里写图片描述

# oc get all

这里写图片描述

最终用到的镜像如下:

这里写图片描述

Containerized Installer安装多节点集群成功。

发布了67 篇原创文章 · 获赞 23 · 访问量 18万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章