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

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

本部分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安装多节点集群成功。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

centos7上安装redis

关闭防火墙: systemctl stop firewalld.service #停止firewall systemctl disable firewalld....

3989
来自专栏全华班

系统方案合集-RedHat安装WebLogic11g软件

导读 | RedHat安装WebLogic11g 一、安装JDK 切换到root用户,在安装盘server目录下执行 rpm -ivh java-1.6.0...

3557
来自专栏别先生

关于yum网络版仓库(本地yum仓库的安装配置,如果没网了,做一个局域网内的yum仓库)

2017-11-13 22:49:48 1:两种方式:     a、每一台机器都配一个本地文件系统上的yum仓库 file:///packege/path/ ...

17810
来自专栏三丰SanFeng

zookeeper集群搭建

最近公司用到了zookeeper做集群管理,这里按步骤记录一下其中的一些经验,也给后来的同学一些参考。由于这里只有一台服务器,因此搭建的其实是伪集群,多台服务器...

2257
来自专栏张善友的专栏

Minikube之Win10单机部署

Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作。如果你曾经用过Docker部署容器,那么可...

3946
来自专栏后端之路

Jenkins小坑之执行Shell

背景 之前使用jenkins的大概率是作为远程部署,通常使用over ssh plugin作部署 ? 问题 我们正常使用ssh时当Java应用运行时没有问题 但...

4605
来自专栏云计算教程系列

如何在CentOS 7上安装和配置Ghost

Ghost是一个轻量级的开源博客平台,易于使用。Ghost是完全可定制的,有许多主题可用。

1223
来自专栏电光石火

Docker Settings

1263
来自专栏Java后端技术

Docker三十分钟快速入门(上)

​   最近,Docker技术真是一片火热,它的出现也弥补了虚拟机资源消耗过高的问题,直接让虚拟化技术有了质的飞跃。那么本文我们来聊一聊Docker,和大家一起...

793
来自专栏L宝宝聊IT

MFS搭建分布式文件系统

1136

扫码关注云+社区