Openshift集群安装

本博客将会介绍给三个节点上的openshift集群部署过程,这个集群包含一个Master和两个Node.

  1. 准备主机

类型

CPU

内存

硬盘

主机名

IP

OS

Master

1

2

20*2

server1.yuewen.com

192.168.31.117

Centos7

Node

1

2

20*2

server2.yuewen.com

192.168.31.118

Centos7

Node

1

2

20*2

server3.yuewen.com

192.168.31.119

Centos7

2. 配置主机名

使用如下命令为每个主机配置主机名

hostnamectl set-hostname server1.yuewen.com

hostnamectl set-hostname server2.yuewen.com

hostnamectl set-hostname server3.yuewen.com


3. 开启SELINUX, 修改/etc/selinux/config

SELINUX=enforcing

SELINUXTYPE=targeted

4. 激活网络(默认Centos7没有激活网络)

# nmcli con show

NAME     UUID                                  TYPE            DEVICE  

ens33    a6c20e40-6c95-40ba-86af-edfcd938b943  802-3-ethernet  ens33   

# nmcli con up ens33

# nmcli con mod ens33 connection.autoconnect yes

# systemctl restart NetworkManager


5. 安装软件包

所有的节点下执行以下命令安装Openshift依赖的软件包。

# yum install -y wget git net-tools bind-utils iptables-services bridge-utils bash-completion

6. 安装docker与配置

# yum install -y docker

配置Docker数据存储

vi /etc/sysconfig/docker-storage-setup

DEVS=/dev/sdb

VG=dockervg

运行

docker-storage-setup

配置Docker镜像服务器。

选择中国科技大学的镜像服务器进行加速。修改/etc/sysconfig/docker文件,在OPTIONS变量中追加--registry-mirror=https://docker.mirrors.ustc.edu.cn --insecure-registry=172.30.0.0/16 


所有节点启动docker

# systemctl enable docker

# systemctl start docker


7. 安装Ansible

openshift安装以Ansible为基础,需要启用EPEL仓库以安装Ansible

 

master节点上执行以下命令。

# yum -y install https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

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

# yum -y --enablerepo=epel install ansible pyOpenSSL

8. 节点互信

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


master节点上生成SSH密钥。

# ssh-keygen -f /root/.ssh/id_rsa -N ‘’


Master节点上执行:

for host in server1.yuewen.com server2.yuewen.com server3.yuewen.com; do ssh-copy-id -i ~/.ssh/id_rsa.pub $host;  done

9. 配置Ansible

Master节点上下载OpenshiftAnsible Playbook

# wget https://github.com/openshift/openshift-ansible/archive/openshift-ansible-3.6.173.0.81-1.tar.gz

# tar zxvf openshift-ansible-3.6.173.0.81-1.tar.gz

安装etcd

安装单MasterOpenshift集群可以不单独安装etcd。这里选择单独安装一个节点的etcd集群。 

在实际的生产环境中,推荐配置含有3个或以上成员的etcd集群,保证高可用性。 

Master上执行。

# yum -y install etcd

# systemctl enable etcd

# systemctl start etcd

配置Ansiblehosts配置文件

# mv -f /etc/ansible/hosts /etc/ansible/hosts.org

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


# 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.1

openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability,package_version


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

server1.yuewen.com


# host group for nodes, includes region info

[nodes]

server1.yuewen.com openshift_schedulable=True openshift_node_labels="{'region': 'infra'}"

server2.yuewen.com openshift_node_labels="{'region': 'infra', 'zone': 'east'}"

server3.yuewen.com openshift_node_labels="{'region': 'infra', 'zone': 'west'}"


[etcd]

server1.yuewen.com

10. 执行安装


安装过程是完全自动化的,无需手动干预。在绝大多数情况下,Ansible的脚本Playbook是可以反复执行的。因为要下载不少内容,整体安装时间还是比较长的。

如果安装Openshift的过程中出错了,修复问题后再次执行Playbook,可以在之前的基础上继续安装 

(由于网络波动、内存不足等原因,可能需要多次重复执行上述指令)。

# ansible-playbook ~/openshift-ansible-openshift-ansible-3.6.173.0.81-1/playbooks/byo/config.yml

安装完成后会出现结果汇总

PLAY RECAP *******************************************************************************************************************************************

localhost                  : ok=12   changed=0    unreachable=0    failed=0   

server1.yuewen.com         : ok=644  changed=61   unreachable=0    failed=0   

server2.yuewen.com         : ok=260  changed=61   unreachable=0    failed=0   

server3.yuewen.com         : ok=243  changed=12   unreachable=0    failed=0 

执行oc get nodes检查当前集群的成员列表以及它们的状态

[root@server1 .kube]# oc get nodes

NAME                 STATUS    AGE       VERSION

server1.yuewen.com   Ready     23h       v1.6.1+5115d708d7

server2.yuewen.com   Ready     14h       v1.6.1+5115d708d7

server3.yuewen.com   Ready     23h       v1.6.1+5115d708d7

如果出现错误

[root@server1 ~]# oc get node

Unable to connect to the server: x509: certificate signed by unknown authority


export KUBECONFIG=/etc/origin/master/admin.kubeconfig/etc/profile


11. 对接用户身份信息库

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

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

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

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

查看/etc/origin/master/htpasswd文件内容。以加密的形式存储了账号密码。

dev:$apr1$DH.7689R$g6azQwmLcSnK1MlrpEEnx0


12. dev添加集群管理员权限

# oc login -u system:admin

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

你可能感兴趣的:(Server维护,PAAS)