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 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

Oracle日常运维操作总结-数据库的启动和关闭

下面是工作中对Oracle日常管理操作的一些总结,都是一些基本的oracle操作和SQL语句写法,在此梳理成手册,希望能帮助到初学者(如有梳理不准确之处,希望指...

2295
来自专栏bdcn

Supervisord安装配置笔记 原

想要了解怎么配置需要管理的进程,只要打开 supervisord.conf 就可以了,里面有很详细的注释信息。

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

如何在Debian 9上将BIND配置为专用网络DNS服务器

管理服务器配置和基础架构的一个重要部分包括通过设置适当的域名系统(DNS),维护一种通过名称查找网络接口和IP地址的简便方法。使用完全限定的域名(FQDN)而不...

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

如何在CentOS 7上使用Pacemaker建立Apache主动 - 被动群集

高可用性是当今的一个重要主题,因为服务中断可能非常昂贵。谨慎采取措施,以便在发生中断时保持您的网站或Web应用程序正常运行。使用Pacemaker堆栈,您可以配...

200
来自专栏pangguoming

CentOS 7安装SSHFS 实现远程主机目录 挂载为本地目录

官方下载地址 https://github.com/libfuse/sshfs/releases

612
来自专栏PHP在线

LINUX软链接和硬链接

1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产...

3215
来自专栏运维小白

Linux基础(day38)

10.32/10.33 rsync通过服务同步 rsync 通过服务的方式同步 要编辑配置文件/etc/rsyncd.conf 启动服务rsync --daem...

1796
来自专栏张戈的专栏

Linux系统 df 命令显示异常、分区丢失问题解决

本文记录 2 种因 /etc/mtab 文件异常导致 df 命令显示异常、分区丢失问题的解决过程,以备后用。 ? 一、根目录丢失 前些日子,同事在 RTX 群里...

62010
来自专栏Brian

Linux 基础知识

---- 简要 作为了一个服务端开发人员而言,不仅有强大的内功而且也需要对一些工具和运维方面的知识。Linux毋容置疑是每一个后端开发人员必须熟悉或者精通的“大...

3095
来自专栏还债之路

web+nfs+rsync实时备份

1)在NFS服务端nfs01上共享/data目录,允许从NFS客户端web01、web02上分别挂载共享目录。

991

扫码关注云+社区