简介

openshift是基于k8s的开源容器云。

要求

系统环境:CentOS 7.5
搭建一个master节点,两个node节点
注意:
openshift3 依赖docker的版本为1.13.1
openshift3.10支持的是ansible2.4.3.0以上2.8.X以下
保证各节点时间统一,可以统一向阿里云时间服务器同步

准备工作

所有节点创建工作目录:在根目录下创建家目录
mkdir /home && cd /home # 先关闭防火墙,后续为了安全再重新配置防火墙 # 查看防火墙的状态
systemctl status firewalld # 关闭防火墙
systemctl stop firewalld # 关闭防火墙的自启动
systemctl disable firewalld

配置说明

修改主机名

#master:
#192.168.2.180
hostnamectl set-hostname master.example.com #node1:
#192.168.2.181
hostnamectl set-hostname node1.example.com #node2:
#192.168.2.182
hostnamectl set-hostname node2.example.com

域名映射

这3台主机(master,node1,node2)都需要在/etc/hosts文件中添加域名映射:
vim /etc/hosts

#添加如下内容
192.168.2.180 master.example.com
192.168.2.181 node1.example.com
192.168.2.182 node2.example.com

SSH相关

所有节点设置ssh连接超时:
sed -i 's/TMOUT=1800/#TMOUT=1800/g' /etc/profile

source /etc/profile

阿里云镜像

所有节点切换镜像源到阿里云(如果设置过请忽略此步):
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum makecache

设置SELINUX

所有节点开启selinux(openshift默认是推荐开启改设置的):
sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config

reboot
或者手动去修改:
# 查看selinux是否开启
cat /etc/selinux/config
# 编辑
vim /etc/selinux/config # 将SELINUX和SELINUXTYPE这两个键对应的值修改成如下
SELINUX=enforcing
SELINUXTYPE=targeted

安装工具

所有节点安装工具:
yum install -y wget git yum-utils net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct bash-completion.noarch bash-completion-extras.noarch java-1.8.-openjdk-headless python-passlib NetworkManager 

集群免密登录

在master节点生成rsa密钥,将生成好的密钥拷贝至包括自己在内的节点:
ssh-keygen -f /root/.ssh/id_rsa -N ''

复制公钥到其他节点

for host in master.example.com node1.example.com node2.example.com; do ssh-copy-id -i ~/.ssh/id_rsa.pub $host; done
按照提示进行操作:

安装docker

所有节点安装docker(如果是独立部署nfs,则nfs节点不用按照docker):
yum install -y docker-1.13. && docker version

镜像加速

所有节点安装修改docker的镜像加速为国内(提高下载速度):
vim /etc/docker/daemon.json

# 添加内容如下
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
注意:一定要保证该文件符合 json 规范,否则 Docker 将不能启动。之后重新启动服务。

启动Docker

所有节点启动docker:
# 开机启动
systemctl enable docker # 启动
systemctl start docker # 重启
systemctl restart docker # 停止
systemctl stop docker # 查看docker运行状况
systemctl status docker

安装ansible

在master节点安装ansible扩展库:
yum -y install epel-release
# 禁用扩展库防止后续安装出错
sed -i -e "s/^enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo

# 安装ansible和pyOpenSSL

yum install -y ansible pyOpenSSL 
# 我事先下载好了这个rpm包(在线下载会很慢,你可以使用rz命令或者filezilla软件上传下载好的文件到/home目录)
rpm -Uvh  https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/ansible-2.6.4-1.el7.ans.noarch.rpm
# 或者执行以下命令升级ansible到当前这个包的版本
rpm -Uvh ansible-2.6.-.el7.ans.noarch.rpm
# 如果找不到rz命令则可以执行以下命令来安装
yum install -y lrzsz

安装openshift

# 在master节点下载openshift源码:
git clone https://github.com/openshift/openshift-ansible

cd openshift-ansible

git checkout release-3.10
# 在master节点修改软件源(使用阿里云的源提高软件的安装速度):
vim /home/openshift-ansible/roles/openshift_repos/templates/CentOS-OpenShift-Origin310.repo.j2
源文件内容如下:
[centos-openshift-origin310]
name=CentOS OpenShift Origin
baseurl=http://mirror.centos.org/centos/7/paas/x86_64/openshift-origin310/
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS [centos-openshift-origin310-testing]
name=CentOS OpenShift Origin Testing
baseurl=http://buildlogs.centos.org/centos/7/paas/x86_64/openshift-origin310/
enabled={{ if openshift_repos_enable_testing else }}
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS [centos-openshift-origin310-debuginfo]
name=CentOS OpenShift Origin DebugInfo
baseurl=http://debuginfo.centos.org/centos/7/paas/x86_64/
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS [centos-openshift-origin310-source]
name=CentOS OpenShift Origin Source
baseurl=http://vault.centos.org/centos/7/paas/Source/openshift-origin310/
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS 修改为:
[centos-openshift-origin310]
name=CentOS OpenShift Origin
baseurl=http://mirrors.aliyun.com/centos/7/paas/x86_64/openshift-origin310/
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS [centos-openshift-origin310-testing]
name=CentOS OpenShift Origin Testing
baseurl=http://buildlogs.centos.org/centos/7/paas/x86_64/openshift-origin310/
enabled={{ if openshift_repos_enable_testing else }}
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS [centos-openshift-origin310-debuginfo]
name=CentOS OpenShift Origin DebugInfo
baseurl=http://debuginfo.centos.org/centos/7/paas/x86_64/
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS [centos-openshift-origin310-source]
name=CentOS OpenShift Origin Source
baseurl=http://vault.centos.org/centos/7/paas/Source/openshift-origin310/
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
# 在master节点编写inventory文件(备份):
mv -f /etc/ansible/hosts /etc/ansible/hosts.org

# 编辑ansible配置:

vim /etc/ansible/hosts

# 内容如下:

[OSEv3:children]
masters
nodes
etcd
nfs [OSEv3:vars]
ansible_ssh_user=root
openshift_deployment_type=origin
#因采用虚拟机部署学习 配置此选项跳过主机硬件信息检查
openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability
openshift_master_identity_providers=[{'name':'htpasswd_auth','login':'true','challenge':'true','kind':'HTPasswdPasswordIdentityProvider',}] openshift_master_default_subdomain=apps.test.example.com
openshift_deployment_type=origin
os_firewall_use_firewalld=true [masters]
master.example.com [etcd]
master.example.com [nodes]
master.example.com openshift_node_group_name='node-config-master'
node1.example.com openshift_node_group_name='node-config-compute'
node2.example.com openshift_node_group_name='node-config-compute' [nfs]
master.example.com
# 在master节点安装前检查与环境设置(自动安装脚本执行会花费很长时间):
ansible-playbook /home/openshift-ansible/playbooks/prerequisites.yml
# 在master节点正式安装(自动安装脚本执行会花费很长时间):
ansible-playbook /home/openshift-ansible/playbooks/deploy_cluster.yml
# 在master节点安装完成后创建用户:
# master节点下创建用户dev
htpasswd -bc /etc/origin/master/htpasswd dev dev

# 查看所有节点状态:

# 所有节点安装完成之后
oc get nodes

访问openshift后台

访问 https://openshift-master(或者IP):8443/console/

如果访问不了,需要再你本地的浏览器的主机添加主机映射
C:\Windows\System32\drivers\etc下面的hosts文件中添加一条记录如下:
 
-----------------------------------------------------------
 
192.168.2.180    master.example.com
 
-----------------------------------------------------------
 
出现登录界面后输入用户名和密码就是上一步创建的:dev/dev

卸载openshift

如果需要,可以通过这种方式卸载openshift。

ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/adhoc/uninstall.yml

以下内容来自官方的文档:
 

最低硬件要求

生产级硬件要求

测试或样本环境以最低要求运行。对于生产环境,以下建议适用:
 
master
在具有外部etcd的高可用性OKD群集中,主主机需要满足最低要求,并且每1000个pod具有1个CPU核心和1.5 GB内存。因此,2000个容器的OKD群集中主主机的建议大小是2个CPU内核和16 GB RAM的最低要求,加上2个CPU内核和3 GB RAM,总共4个CPU内核和19 GB RAM。
 
有关性能指导,请参阅 OKD主控主机的建议实践。
 
node
节点主机的大小取决于其工作负载的预期大小。作为OKD集群管理员,您需要计算预期的工作负载并为开销增加约10%。对于生产环境,请分配足够的资源,以便节点主机故障不会影响最大容量。
 
有关更多信息,请参阅 调整注意事项和群集限制。

存储管理

DNS域名解析要求

在每个主机上的/etc/hosts文件中添加条目是不够的。此文件不会复制到平台上运行的容器中。
 
OKD的关键组件在容器内运行,并使用以下过程进行名称解析:
    1.默认情况下,容器从其主机接收其DNS配置文件(/etc/resolv.conf)。
    2.然后OKD将pod的第一个名称服务器设置为节点的IP地址。
 
配置主机以使用DNS
确保环境中的每个主机都配置为从DNS服务器解析主机名。主机DNS解析的配置取决于是否启用了DHCP。如果DHCP是:
  • 禁用,然后将网络接口配置为静态,并将DNS名称服务器添加到NetworkManager。
  • 启用后,NetworkManager调度脚本会根据DHCP配置自动配置DNS。
 
设置未与云提供程序集成的群集时,必须正确设置节点的主机名。每个节点的主机名必须是可解析的,并且每个节点必须能够到达每个其他节点。
 
个人的建议是搭建一套域名服务器,供容器云做域名解析。
 

所需端口

OKD安装使用iptables在每个主机上自动创建一组内部防火墙规则 。但是,如果您的网络配置使用外部防火墙(例如基于硬件的防火墙),则必须确保基础架构组件可以通过充当某些进程或服务的通信端点的特定端口相互通信。
 
确保OKD所需的以下端口在网络上打开,并配置为允许主机之间的访问。根据您的配置和使用情况,某些端口是可选的。
 
节点到节点
主节点
master到master
负载均衡器的外部

master对外
IAAS部署

openshift3.10集群部署的更多相关文章

  1. 五、Kubernetes_V1.10集群部署-master-部署组件

    一.配置apiserver 1.生成启动文件 cat > /usr/lib/systemd/system/kube-apiserver.service <<EOF [Unit] De ...

  2. 四、Kubernetes_V1.10集群部署-master-创建kubeconfig

    1.生成配置文件 # 创建 TLS Bootstrapping Token # export BOOTSTRAP_TOKEN=$( /dev/urandom | od -An -t x | tr -d ...

  3. 二、Kubernetes_V1.10集群部署-master-etcd

    1.ETCD集群服务器: (1)172.18.6.39 (2)172.18.6.40 (3)172.18.6.41 1.安装etcd # yum -y install etcd 2.发布证书 cp - ...

  4. 六、Kubernetes_V1.10集群部署-node-部署节点组件

    一.配置kubelet 1.配置启动文件 # cat > /usr/lib/systemd/system/kubelet.service <<EOF [Unit] Descripti ...

  5. 三、Kubernetes_V1.10集群部署-master-部署flanne网络

    1. etcdctl --ca-file=/etc/etcd/ssl/ca.pem --cert-file=/etc/etcd/ssl/server.pem --key-file=/etc/etcd/ ...

  6. 一、Kubernetes_V1.10集群部署-master-生成证书

    一.证书生成 1.下载cfssl mkdir -p /etc/kubernetes/sslwget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget ...

  7. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...

  8. Openfire 集群部署和负载均衡方案

    Openfire 集群部署和负载均衡方案 一.   概述 Openfire是在即时通讯中广泛使用的XMPP协议通讯服务器,本方案采用Openfire的Hazelcast插件进行集群部署,采用Hapro ...

  9. 基于Tomcat的Solr3.5集群部署

    基于Tomcat的Solr3.5集群部署 一.准备工作 1.1 保证SOLR库文件版本相同 保证SOLR的lib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6 ...

随机推荐

  1. python 3 可迭代对象与迭代器

    1,可迭代对象 内部含有__iter__方法的对象是可迭代对象 遵循可迭代协议 dir() 检查对象含有什么方法 dir()会返回一个列表,这个列表中含有该对象的以字符串的形式所有方法名.这样我们就可 ...

  2. 【你不知道的javaScript 上卷 笔记4】javaScript 中闭包的一些运用

    什么是闭包 闭包是javaScript语言的一种特性,在 javaScript 中以函数作为承接单元.当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行. fun ...

  3. Graph Regularized Feature Selection with Data Reconstruction

    Abstract • 从图正则数据重构方面处理无监督特征选择: • 模型的思想是所选特征不仅通过图正则保留了原始数据的局部结构,也通过线性组合重构了每个数据点: • 所以重构误差成为判断所选特征质量的 ...

  4. 4.Docker 操作容器

    启动容器 所需要的命令主要为 docker run.例如,下面的命令输出一个 “Hello World”,之后终止容器. docker run ubuntu:16.04 /bin/echo 'Hell ...

  5. BZOJ2190 SDOI2008 仪仗队 gcd,欧拉函数

    题意:求从左下角能看到的元素个数 引理:对点(x,y),连线(0,0)-(x,y),元素个数为gcd(x,y)-1(中间元素) 即要求gcd(x,y)=1 求gcd(x,y)=1的个数 转化为2 \s ...

  6. MySQL安装版安装过程

    步骤1 步骤2 步骤3 步骤4 步骤5 步骤6 步骤7 步骤8 步骤9 步骤10 步骤11 步骤12

  7. 2018中国大学生程序设计竞赛 - 网络选拔赛---Find Integer!--hdu6441

    问题传送门:https://vjudge.net/contest/320779#problem/D 介绍一个名词:奇偶数列法则 Key part: #include<iostream> # ...

  8. eclipse中tomcat正常启动,但浏览器访问不了tomcat首页之tomcat配置问题

    症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问. 关闭eclipse里面的tomc ...

  9. Mac配置环境变量时终端显示bash-3.2解决方案

    1.问题描述 (base) -bash-3.2$ vi ~/.bash_profile (base) -bash-3.2$ source ~/.bash_profile 2.解决方案 无授权转,侵权删 ...

  10. ubuntu apt

    一些命令: sudo apt-get update  更新源 sudo apt-get install package --reinstall  重新安装包 sudo apt-get upgrade ...