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

相关文章

来自专栏魏艾斯博客www.vpsss.net

STATE[HY000] [2002] No such file or directory 宝塔面板和网站无法打开

1785
来自专栏散尽浮华

Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)--负载均衡marathon-lb

之前介绍了Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)的操作,多余的废话不说了,下面接着说下在该集群环境下的负载均衡ma...

3959
来自专栏写写代码吃吃瓜

Ubuntu环境下Tornado环境部署

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

如何在CentOS上创建Kubernetes集群

在本教程中,您将使用Ansible和Kubeadm从头开始设置Kubernetes集群,然后给它部署一个容器化的Nginx程序。

5.8K12
来自专栏YouMeek

Python 爬虫基础 — 介绍 + 环境搭建(不含代码级别资料)

3294
来自专栏黑白安全

W8ay 一句话管理网页端

第二版本完成了自定义命令 在include\model\PHPShell_Build_mothod.php中自定义命令即可,将自动完成编码加密过程

1092
来自专栏编程坑太多

『高级篇』docker之DockerSwarm的集群环境搭建(28)

PS:以上就完成高可用的docker swarm的集群环境,其实真心比其他的简单。

1002
来自专栏杂七杂八

Anaconda安装与初步使用

Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本...

4365
来自专栏一只程序汪的自我修养

手把手教你用Jenkins自动发布Docker

首先,我们要有个Jenkins咯,下载链接:https://jenkins.io/download/

2706
来自专栏bdcn

Anaconda配置和使用 原

原来一直使用原生python和pip的方式,换了新电脑,准备折腾下Anaconda。

5281

扫码关注云+社区