简介

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. 爬格子呀--IEEE极限编程大赛留念

    10.14,坐标:电子科技大学 24h,不间断的编程,感觉还是很爽的. 排名一般,但是这是开始,未来还很远. 题目举例1: 广袤的非洲大草原上,狮子居住在一个个的网格里,他们的势力范围会以曼哈顿路程的 ...

  2. Quartz.NET常用方法 02

    上一篇里介绍了Job和Trigger的常用方法,这一节将介绍Calendar,它的作用是排除特定的日期时间.   Calendar的常用类 DailyCalendar 排除每天某个时间段任务的执行 例 ...

  3. java读取解析application.yml

    java读取解析application.yml 不用依赖spring容器,可单独使用. bug已修改... 第一步.首先要2个jar <!-- properties和yaml格式化 --> ...

  4. linux--nginx学习

    nginx 1.nginx安装编译 1.yum install nginx(自动解决依赖) 2.源代码编译安装(优秀,自由选择软件版本,自定义第三方功能比如开启https) 3.rpm手动安装(垃圾) ...

  5. Spark学习之路 (二)Spark2.3 HA集群的分布式安装[转]

    下载Spark安装包 从官网下载 http://spark.apache.org/downloads.html 从微软的镜像站下载 http://mirrors.hust.edu.cn/apache/ ...

  6. java下的slf4j

    一.导读 我们使用log4j框架时,经常会用slf4j-api.在运行时,经常会遇到如下的错误提示: ? 1 2 3 4 5 SLF4J: Class path contains multiple S ...

  7. “公文流转系统 v1.0”

    1.项目需求: 河北金力集团是我省机械加工的龙头企业,主要从事矿山机械制造及各种机械零部件加工.企业有3个厂区,主厂区位于省高新技术开发区,3个分厂分别在保定.邢台和唐山.为增加企业的核心竞争力和加强 ...

  8. pytest-测试用例teardown和setup

    setup和teardown对于处理一些前置条件很有帮助 用例运行级别 模块级(setup_moudle/teardown_moudle)开始于模块始末,全局的 所有用例开始前/结束后执行一次(整个. ...

  9. SVM-支持向量机(二)非线性SVM分类

    非线性SVM分类 尽管SVM分类器非常高效,并且在很多场景下都非常实用.但是很多数据集并不是可以线性可分的.一个处理非线性数据集的方法是增加更多的特征,例如多项式特征.在某些情况下,这样可以让数据集变 ...

  10. Controller-->View传值的几种方法

    Controller --- > View 传值的方法 ViewBag ViewData TempData 向普通View页面传一个Model对象 向强类型页面传传一个Model对象 用一个Vi ...