OpenShift 3.9 多节点集群(Ansible)安装

2024-02-23 07:38

本文主要是介绍OpenShift 3.9 多节点集群(Ansible)安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OpenShift集群的部署可以分为以下几个阶段:

1、主机环境准备:准备OpenShift集群需要的主机,并进行集群环境准备。

2、安装依赖包:提前安装使用Ansible安装OpenShift集群所依赖的第三方包。

3、Ansible执行安装:使用Ansible Playbook进行自动化安装。

4、OpenShift系统配置:在使用Ansible执行安装完成之后的系统配置。

5、测试问题处理

 


一、主机环境准备

类型

主机名(域名)

IP

操作系统

内存

磁盘

Master

master.192.168.40.161.nip.io

192.168.40.161

CentOS7.5

2G

sda:10G for OS

sdb:20G for docker

Node

node1.192.168.40.162.nip.io

192.168.40.162

CentOS7.5

2G

sda:10G for OS

sdb:20G for docker

Node

node2.192.168.40.163.nip.io

192.168.40.163

CentOS7.5

2G

sda:10G for OS

sdb:20G for docker

 

说明:在安装的过程中,使用了nip.io结尾的域名,关于nip.io的问题,请查阅 nip.io 网站 。

 

1、检查主机与Internet的状态

由于在安装的过程中需要通过Internet下载相关依赖,因此需要检查三台主机与Internet的状态。

 

2、检查主机名

按照上面表格中所列的主机名进行主机名检查。如果不一致,可以通过下面的命令进行配置,如下:

hostnamectl set-hostname master.192.168.40.161.nip.io

 

3、检查主机名(域名)的解析是否正常

可以通过 ping $(hostname)来验证主机名到主机IP的解析情况。

如果出现不能ping通的情况,可以直接修改各个节点的 /etc/hosts 文件,加上静态的域名解析。

 

此外由于使用的是nip.io的域名,正常的DNS都能够解析到正确的IP地址;但是在输入命令的过程中使用全域名会很麻烦,因此在hosts中添加了主机名的缩写配置,如下:

192.168.40.161 master

192.168.40.162 node1

192.168.40.163 node2

 

4、检查SELINUX是否开启

官方文档推荐开启SELINUX,否则会导致安装失败。

修改方式如下:

/etc/selinux/config

SELINUX=enforcing

SELINUXTYPE=targeted

 

5、配置三台主机ssh免密访问

5.1)在所有节点上以root账号登陆,并进入到/root的主目录

[root@master ~]$ pwd

/root

[root@master ~]$

 

5.2)在所有节点上生成密钥对。

[root@master ~]$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/.ssh/id_rsa):

Created directory '/home/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/.ssh/id_rsa.

Your public key has been saved in /home/.ssh/id_rsa.pub.

The key fingerprint is:

29:1c:df:59:0d:5f:ee:28:07:c0:57:21:15:af:a3:88 root@master

The key's randomart image is:

+--[ RSA 2048]----+

| .. oo=o.|

| ...= + |

| . .o o o|

| . o o o . + |

| o S o . = .|

| . . . + . |

| E . . |

| |

| |

+-----------------+

[root@master ~]$

 

5.3)然后进入.ssh目录,把公钥复制到authorized_keys

[root@master ~]$ cd .ssh

[root@master .ssh]$ ls

id_rsa id_rsa.pub

[root@master .ssh]$ cp id_rsa.pub authorized_keys

 

5.4)分发ssh公钥到各个节点

先将node1和node2的公钥添加到master节点的authorized_keys文件中。

[root@node1 .ssh]$ ssh-copy-id master

[root@node2 .ssh]$ ssh-copy-id master

最后再使用scp将master中的authorized_keys文件传送到各个节点。

 

此处,需要注意.ssh(755)及.ssh/authorized_keys(644)的权限。 

 

 


二、安装依赖包

1、所有主机上执行以下命令进行系统更新

yum install -y update

安装完成之后,重新系统生效。

 

2、所有的主机下执行以下命令安装OpenShift依赖的软件包。

yum install wget git net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct bash-completion.noarch bash-completion-extras.noarch python-passlib NetworkManager -y

 

3、所有的主机安装docker

yum install docker-1.13.1 -y

 

4、配置docker使用的存储

echo DEVS=/dev/sdb > /etc/sysconfig/docker-storage-setup

echo VG=DOCKER >> /etc/sysconfig/docker-storage-setup

echo SETUP_LVM_THIN_POOL=yes >> /etc/sysconfig/docker-storage-setup

echo DATA_SIZE="100%FREE">> /etc/sysconfig/docker-storage-setup

 

rm -rf /var/lib/docker

 

wipefs --all /dev/sdb

docker-storage-setup

 

5、配置docker镜像加速

选择阿里云的镜像服务器进行加速,修改 /etc/docker/daemon.json 文件,如下所示:

[root@master ~]# more /etc/docker/daemon.json

{

"registry-mirrors": ["https://换成自己的地址.mirror.aliyuncs.com"]

}

配置完成之后,所有主机启动docker,命令如下:

systemctl enable docker

systemctl start docker

 


三、在Master主机上执行Ansible集群安装

1、启用EPEL仓库以安装Ansible

#install epel

yum -y install epel-release

 

# Disable the EPEL repository globally so that is not accidentally used during later steps of the installation

sed -i -e "s/^enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo

 

yum -y --enablerepo=epel install ansible pyOpenSSL #3.9必须2.5版本

2、从 github 上clone openshift-ansible 3.9版本

git clone -b release-3.9 https://github.com/openshift/openshift-ansible

说明:最近通过本blog重新安装openshift集群时,发现总是出现各种各样的问题,如 /etc/dnsmasq.d/origin-upstream-dns.conf 、/etc/origin/node/resolv.conf 等文件缺失,因此将原来从github上clone源代码,修改为下载已经release的版本。

 

2、从github上下载openshift-ansible已经release的版本

wget https://github.com/openshift/openshift-ansible/archive/openshift-ansible-3.9.32-1.zip

下载完成之后,进行解压并重命为 openshift-ansible。

 

3、修改软件源

由于目前OpenShift-ansible还没有添加3.9的源,所以需要自行修改下,方法如下:

  • 进行openshift-ansible/roles/openshift_repos/templates/ 复制一份 CentOS-OpenShift-Origin37.repo.j2 为 CentOS-OpenShift-Origin39.repo.j2。
  • 修改CentOS-OpenShift-Origin39.repo.j2中的源修改为国内的,比如阿里云。

[centos-openshift-origin39]

name=CentOS OpenShift Origin

baseurl=http://mirrors.aliyun.com/centos/7/paas/x86_64/openshift-origin39/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS

 

[centos-openshift-origin39-testing]

name=CentOS OpenShift Origin Testing

baseurl=http://buildlogs.centos.org/centos/7/paas/x86_64/openshift-origin39/

enabled={{ 1 if openshift_repos_enable_testing else 0 }}

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS

 

[centos-openshift-origin39-debuginfo]

name=CentOS OpenShift Origin DebugInfo

baseurl=http://debuginfo.centos.org/centos/7/paas/x86_64/

enabled=0

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS

 

[centos-openshift-origin39-source]

name=CentOS OpenShift Origin Source

baseurl=http://vault.centos.org/centos/7/paas/Source/openshift-origin39/

enabled=0

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS

 

4、配置 ansible inventory 文件,保存到 /etc/ansible/inventory.ini文件中。

# 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

#使用origin社区版

openshift_deployment_type=origin

#指定安装版本

openshift_release=3.9

 

#指定默认域名,访问的时候需要使用该域名,没有dns服务器,需要手动添加本地hosts文件

openshift_master_default_subdomain=apps.192.168.40.161.nip.io

 

#禁止磁盘、内存和镜像检查

openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability

 

#disk_availability:报错信息是推荐的master磁盘空间剩余量大于40GB。测试环境无法满足,跳过检测。

#memory_availability:报错信息是推荐的master内存为16GB,node内存为8GB,测试环境无法满足,跳过检测。

#docker_image_availability:报错信息是需要的几个镜像未找到,选择跳过,装完集群后,在使用的时候再自行下载。

#docker_storage:报错信息是推荐选择一块磁盘空间存储镜像,这里选择跳过。采用docker默认的方式存储镜像。

 

 

# 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'}]

 

#ntp时间同步

openshift_clock_enabled=true

 

#节点配额

openshift_node_kubelet_args={'pods-per-core': ['10']}

 

# host group for masters

[masters]

master openshift_schedulable=True

 

# host group for nodes, includes region info

[nodes]

master openshift_node_labels="{'region': 'infra'}"

node1 openshift_node_labels="{'region': 'infra', 'zone': 'default'}"

node2 openshift_node_labels="{'region': 'infra', 'zone': 'default'}"

 

[etcd]

master

5、修改脚本问题

openshift-ansible/roles/lib_utils/filter_plugins/openshift_master.py 的第487行

注释掉图片中框出来的两行。

 

6、开始安装

ansible-playbook -i /etc/ansible/inventory.ini openshift-ansible/playbooks/prerequisites.yml

ansible-playbook -i /etc/ansible/inventory.ini openshift-ansible/playbooks/deploy_cluster.yml

安装过程是完全自动化的,无需手动干预。在绝大多数情况下,Ansible的脚本Playbook是可以反复执行的。

第一条语句的运行结果:

第二条语句的运行结果:

 

7、检查

安装完成后,执行oc get nodes 检查当前集群的成员列表以及它们的状态。

其实在安装完成之后 第二个节点和第三个节点的roles类型为空,需要将其打上compute标签,命令如下:

oc label node node1.192.168.40.162.nip.io node-role.kubernetes.io/compute=true

 

 


四、OpenShift系统配置

1、创建用户

安装的时候,在Ansible的hosts文件中定义了HTPasswd文件作为后端的用户身份信息库。

 

安装程序自动生成了数据文件/etc/origin/master/htpasswd。但是此时该文件还是一个空文件,并没有任何用户信息。

 

需要通过htpasswd命令来创建用户。创建账号为dev密码为dev的用户。

[root@master ~]# htpasswd -b /etc/origin/master/htpasswd dev dev

 

2、给dev添加集群管理员权限

oc adm policy add-cluster-role-to-user cluster-admin dev

 

4、重启服务

systemctl restart origin-master-api

 

5、访问页面https://master.192.168.40.161.nip.io:8443

 

 


五、测试过程中的问题处理

1、无法通过github下载源代码

Cloning "https://github.com/gshipley/simplephp.git " ...

error: fatal: unable to access 'https://github.com/gshipley/simplephp.git/': Peer's certificate issuer has been marked as not trusted by the user.

解决方法:

原因是在 /etc/resolv.conf 中多了search *** (专业术语:FQDN),将其注释掉即可,但是当NetworkManager服务重新启动之后,之前的配置又会被覆盖,方法如下:

chattr +i /etc/resolv.conf

 

2、无法进行docker的注册

error: build error: Failed to push image: After retrying 6 times, Push image still failed due to error: Get https://docker-registry.default.svc:5000/v1/_ping: dial tcp 192.168.40.163:5000: getsockopt: connection refused

解决方法:

通过观察docker-registry的pod界面可知

 

,其绑定的IP地址为 172.30.135.115,因此在 /etc/hosts 中添加了

 

 

 

这篇关于OpenShift 3.9 多节点集群(Ansible)安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/737944

相关文章

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

MySql9.1.0安装详细教程(最新推荐)

《MySql9.1.0安装详细教程(最新推荐)》MySQL是一个流行的关系型数据库管理系统,支持多线程和多种数据库连接途径,能够处理上千万条记录的大型数据库,本文介绍MySql9.1.0安装详细教程,... 目录mysql介绍:一、下载 Mysql 安装文件二、Mysql 安装教程三、环境配置1.右击此电脑

在 Windows 上安装 DeepSeek 的完整指南(最新推荐)

《在Windows上安装DeepSeek的完整指南(最新推荐)》在Windows上安装DeepSeek的完整指南,包括下载和安装Ollama、下载DeepSeekRXNUMX模型、运行Deep... 目录在www.chinasem.cn Windows 上安装 DeepSeek 的完整指南步骤 1:下载并安装

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3