1.openshift搭建
第1章 主机规划和所需文件
1.1 主机规划
|
IP地址 |
域名 |
用途 |
|
11.11.233.125 |
master01.song.test.cnpc |
容器编排、etcd |
|
11.11.233.126 |
master02.song.test.cnpc |
容器编排、etcd |
|
11.11.233.134 |
master03.song.test.cnpc |
容器编排、etcd |
|
11.11.233.127 |
node1.song.test.cnpc |
Infra |
|
11.11.233.128 |
node2.song.test.cnpc |
Infra |
|
11.11.233.129 |
node3.song.test.cnpc |
Infra |
|
11.11.233.130 |
node4.song.test.cnpc |
容器运行 |
|
11.11.233.131 |
node5.song.test.cnpc |
容器运行 |
|
11.11.233.132 |
node6.song.test.cnpc |
容器运行 |
|
11.11.233.133 |
ha.song.test.cnpc registry.song.test.cnpc |
Haproxy,registry |
1.2 主机环境检测与确认
通过top,free,lsblk等命令检测各服务器的硬件配置是否符合规划
在registry主机上安装ansible 并执行一下play
1)网络配置检测
检测各服务器网络配置是否正确,包含ip地址,网络连通性,bond配置等。
注:bond的故障模拟测试在机房服务器配置网络过程中完成。
2)时区检测
使用date命令检测各服务器时区是否为CST。
运行ntpq -p或chronyc sources -v查看是否配置NTP。
3)主机名检测
检测各服务器的主机名是否符合规划。如果未在安装期间配置,则后续执行命令修改。
4)检测所有服务器libvirtd服务是否处于停止状态
# systemctl stop libvirtd
# systemctl disable libvirtd
# systemctl mask libvirtd
关闭服务之后重启服务器即可。
5)所有节点关闭firewalld
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl mask firewalld
6)所有节点关闭selinux
# setenforce 0;
# sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config;
NetworkManager
master,node,haproxy节点的selinux不要关。默认为开启,不要改
NetworkManager默认开启,不要关
[master]
11.11.233.125 name=master01
11.11.233.126 name=master02
11.11.233.134 name=master03
[node]
11.11.233.127 name=node1
11.11.233.128 name=node2
11.11.233.129 name=node3
11.11.233.130 name=node4
11.11.233.131 name=node5
11.11.233.132 name=node6
[other]
11.11.233.133 name=ha
[test:children]
master
node
other
[test:vars]
ansible_ssh_user=sysadm
ansible_ssh_pass=Passc0de@tpcpjl
1.3 搭建yum仓库和docker仓库(ocp3.6)
OpenShift 3安装及运行依赖的RPM、Docker镜像及程序,需要在联网环境下预先下载。
需要下载的文件列表如下:
|
名称 |
备注 |
|
YUM源镜像 |
OpenShift安装所依赖的YUM Repo: l rhel-7-server-extras-rpms-3.6 l rhel-7-server-ose-3.6-rpms l rhel-7-fast-datapath-rpms-3.6 |
|
Docker镜像 |
OpenShift运行所依赖的Docker镜像 l jenkins-2-rhel7-latest.tar.gz l logging-deployer-v3.6.tar.gz l metrics-deployer-v3.6.tar.gz l ose-haproxy-router-v3.6.173.0.96.tar.gz l jenkins-slave-maven-rhel7-latest.tar.gz l logging-elasticsearch-v3.6.tar.gz l metrics-hawkular-openshift-agent-v3.6.tar.gz l ose-pod-v3.6.173.0.96.tar.gz l jenkins-slave-nodejs-rhel7-latest.tar.gz l logging-fluentd-v3.6.tar.gz l metrics-heapster-v3.6.tar.gz l ose-sti-builder-v3.6.173.0.96.tar.gz l logging-auth-proxy-v3.6.tar.gz l logging-kibana-v3.6.tar.gz l ose-deployer-v3.6.173.0.96.tar.gz l registry-console-v3.6.tar.gz l logging-curator-v3.6.tar.gz l metrics-cassandra-v3.6.tar.gz l ose-docker-registry-v3.6.173.0.96.tar. |
[root@ha ~]# tree -L 3 /mnt/
/mnt/
├── registry
│ └── docker
│ └── registry
└── yum
├── rhel-7-fast-datapath-rpms
│ ├── Packages
│ └── repodata
├── rhel-7-server-ansible-2.4-rpms
│ ├── Packages
│ └── repodata
├── rhel-7-server-extras-rpms
│ ├── Packages
│ └── repodata
├── rhel-7-server-ose-3.6-rpms
│ ├── Packages
│ └── repodata
├── rhel-7-server-ose-3.7-rpms
│ ├── Packages
│ └── repodata
├── rhel-7-server-ose-3.8-rpms
│ ├── Packages
│ └── repodata
├── rhel-7-server-ose-3.9-rpms
│ ├── Packages
│ └── repodata
└── rhel-7-server-rpms
├── Packages
└── repodata
配置好httpd和 repo文件
[root@ha ~]# cat /etc/yum.repos.d/redhat7.3.repo
[server-ose-3.9-rpms]
baseurl = http://11.11.233.133/rhel-7-server-ose-3.9-rpms
name = Red Hat OpenShift Container Platform 3.9 RPMs
enabled = 0
gpgcheck = 0
[rhel-7-server-ose-3.6-rpms]
name = rhel-7-server-ose-3.6-rpms
baseurl = http://11.11.233.133/rhel-7-server-ose-3.6-rpms/
gpgcheck = 0
enabled = 1
[rhel-7-server-ose-3.8-rpms]
baseurl = http://11.11.233.133/rhel-7-server-ose-3.8-rpms
name = Red Hat OpenShift Container Platform 3.8 RPMs
enabled = 0
gpgcheck = 0
[rhel-7-server-ose-3.7-rpms]
baseurl = http://11.11.233.133/rhel-7-server-ose-3.7-rpms
name = Red Hat OpenShift Container Platform 3.7 RPMs
enabled = 0
gpgcheck = 0
[rhel-7-server-extras-rpms]
baseurl = http://11.11.233.133/rhel-7-server-extras-rpms
name = Red Hat rhel-7-server-extras-rpms RPMs
enabled = 1
gpgcheck = 0
[rhel-7-fast-datapath-rpms]
baseurl = http://11.11.233.133/rhel-7-fast-datapath-rpms
name = Red Hat rhel-7-fast-datapath-rpms RPMs
enabled = 1
gpgcheck = 0
[rhel-7-server-ansible-2.4-rpms]
baseurl = http://11.11.233.133/rhel-7-server-ansible-2.4-rpms
name = Red Hat rhel-7-server-ansible-2.4-rpms RPMs
enabled = 1
gpgcheck = 0
[rhel-7-server-rpms]
baseurl = http://11.11.233.133/rhel-7-server-rpms
name = Red Hat rhel-7-server-rpms RPMs
enabled = 1
gpgcheck = 0
[root@ha ~]# yum repolist
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id repo name status
rhel-7-fast-datapath-rpms Red Hat rhel-7-fast-datapath-rpms RPMs 38
rhel-7-server-ansible-2.4-rpms Red Hat rhel-7-server-ansible-2.4-rpms RPMs 10
rhel-7-server-extras-rpms Red Hat rhel-7-server-extras-rpms RPMs 141
rhel-7-server-ose-3.6-rpms rhel-7-server-ose-3.6-rpms 483
rhel-7-server-rpms Red Hat rhel-7-server-rpms RPMs
仓库使用 docker-registry
[root@ha ~]# cat /etc/docker-distribution/registry/config.yml
version: 0.1
log:
fields:
service: registry
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /mnt/registry
http:
addr: :5000
secret: 95d5b1erc2a905586e790f794514ea38
测试镜像拉取
v3.6: Pulling from registry.song.test.cnpc:5000/openshift3/logging-curator
9cadd93b16ff: Already exists
4aa565ad8b7a: Already exists
d131575534ed: Pull complete
Digest: sha256:9a0d7cf6532da31f08239cc25e74bad118a828b4dc3a67a8bf442ff6faba140f
Status: Downloaded newer image for registry.song.test.cnpc:5000/openshift3/logging-curator:v3.6
第2章 安装OpenShift预备
2.1 安装软件包并配置基础环境
l 在所有节点上安装OpenShift需要的软件包。命令如下:
|
yum -y install wget git net-tools bind-utils iptables-services bridge-utils bash-completion vim atomic-openshift-excluder atomic-openshift-docker-excluder unzip kexec sos psacct; yum -y update; atomic-openshift-excluder unexclude; |
l 确认SELinux为permissive状态。命令如下:
|
setenforce 0; sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config; |
l 所有节点关闭firewalld。命令如下:
|
systemctl disable firewalld; systemctl stop firewalld; |
2.2 配置免密登录
l 在Master节点上生成SSH所需之秘钥。命令如下,应答输入请直接输入回车。
|
ssh-keygen; |
l 在Master节点上配置Master节点到所有节点的SSH主机互信。命令如下,请根据提示输入远程主机Root账户密码。
l 如果root登录关闭,需要开启,使用如下命令:sed -i 's/PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config
l cat /etc/ssh/sshd_config
2.3 本地DNS服务器创建与配置
每个master和node
|
# 因为dnsmasq服务会和libvirt服务冲突,所以此处把它干掉 yum remove libvirt -y ps -ef |grep dnsmasq |grep -v grep |awk '{print $2}' |xargs -i kill -9 {} systemctl disable libvirtd systemctl stop libvirtd |
2.3.1 添加dnsmasq配置
每个master节点添加wildcard域名指向。命令如下:
|
cat > /etc/dnsmasq.d/openshift-cluster.conf <<EOF local=/song.test.cnpc/ address=/.apps.song.test.cnpc/11.11.233.133 EOF |
若router为高可用部署,此ip应该为ha主机的ip 11.11.233.133
启动dnsmasq服务
每个master节点启动dnsmasq服务。命令如下:
|
systemctl restart dnsmasq; systemctl enable dnsmasq; |
2.3.2 配置iptables
每个master和node节点修改iptables规则。命令如下:
|
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak.$(date "+%Y%m%d%H%M%S"); sed -i '/.*--dport 22 -j ACCEPT.*/a\-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT' /etc/sysconfig/iptables; sed -i '/.*--dport 22 -j ACCEPT.*/a\-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT' /etc/sysconfig/iptables; systemctl restart iptables; systemctl restart NetworkManager; |
2.3.3 配置各节点域名解析
配置每个Node节点域名解析。命令如下:
|
cat > /etc/dnsmasq.d/openshift-cluster-node.conf <<EOF server=11.11.233.125 server=11.11.233.126 server=11.11.233.134 EOF 此部署方式,若第一个节点down,dns轮询到第二个节点需等5秒,会导致应用通过dns访问中断 三个ip分别为master节点ip |
|
systemctl restart dnsmasq; systemctl enable dnsmasq; |
2.3.4 测试DNS解析
在每个node节点执行
|
nslookup docker-registry-default.apps.jtdjnet.cnpc
|
2.4 安装配置docker
2.4.1 安装Docker
在所有master、node,registry上安装Docker。命令如下:
|
yum -y install docker; #安装docker systemctl enable docker; cp /etc/sysconfig/docker /etc/sysconfig/docker.bak.$(date "+%Y%m%d%H%M%S") sed -i s/".*OPTIONS=.*"/"OPTIONS='--selinux-enabled --log-driver=journald --insecure-registry 172.30.0.0\/16 --insecure-registry registry.song.test.cnpc:5000'"/g /etc/sysconfig/docker; sed -i 's/registry.access.redhat.com/registry.song.test.cnpc:5000/g' /etc/sysconfig/docker echo "BLOCK_REGISTRY='--block-registry public --block-registry registry.access.redhat.com' ">>/etc/sysconfig/docker; |
2.4.2 配置docker存储
POC和测试可跳过。生产环境必须配置
磁盘名称先fdisk -l 看下,有的环境可能不叫sdb,叫vdb等
|
cat<<EOF>/etc/sysconfig/docker-storage-setup DEVS=/dev/sdb VG=docker-vg SETUP_LVM_THIN_POOL=yes EOF docker-storage-setup |
设置完后查看配置更改是否成功
|
cat /etc/sysconfig/docker-storage DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/docker-docker-pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true " |
2.4.3 启动docker
|
systemctl restart docker; docker info;
|
返回值要有registry.song.test.cnpc:5000和172.30.0.0
第3章 OpenShift 3安装
l 在registry节点安装openshift的安装脚本
|
yum -y install atomic-openshift-utils |
l 登录Master01节点执行安装。命令如下:
|
cat > /etc/ansible/hosts <<EOF # Create an OSEv3 group that contains the masters, nodes, and etcd groups [OSEv3:children] masters nodes etcd lb
# Set variables common for all OSEv3 hosts [OSEv3:vars] ansible_ssh_user=root
# uncomment the following to enable htpasswd authentication; defaults to DenyAllPasswordIdentityProvider
# host group for masters [masters] djmast001.song.test.cnpc.cnpc djmast002.song.test.cnpc.cnpc djmast003.song.test.cnpc.cnpc
[lb] djmlbt001.song.test.cnpc.cnpc
# host group for etcd [etcd] djmast001.song.test.cnpc.cnpc djmast002.song.test.cnpc.cnpc djmast003.song.test.cnpc.cnpc
# host group for nodes, includes region info [nodes] djmast001.song.test.cnpc.cnpc djmast002.song.test.cnpc.cnpc djmast003.song.test.cnpc.cnpc djinft001.song.test.cnpc.cnpc openshift_node_labels="{'region': 'infra', 'zone': 'default', 'router': 'router'}" djinft002.song.test.cnpc.cnpc openshift_node_labels="{'region': 'infra', 'zone': 'default', 'router': 'router'}" djinft003.song.test.cnpc.cnpc openshift_node_labels="{'region': 'infra', 'zone': 'default', 'infra': 'infra'}" djnodt001.song.test.cnpc.cnpc openshift_node_labels="{'region': 'primary', 'zone': 'zone1'}" djnodt002.song.test.cnpc.cnpc openshift_node_labels="{'region': 'primary', 'zone': 'zone2'}" djnodt003.song.test.cnpc.cnpc openshift_node_labels="{'region': 'primary', 'zone': 'zone3'}" djnodt004.song.test.cnpc.cnpc openshift_node_labels="{'region': 'primary', 'zone': 'zone4'}" djnodt005.song.test.cnpc.cnpc openshift_node_labels="{'region': 'primary', 'zone': 'zone5'}" EOF
执行安装 ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml;
备用卸载命令: ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/adhoc/uninstall.yml; |
备注:在安装的过程中会出现下面问题,Wait for API to become available,这是在调用API接口时找不到对应文件,就会一直尝试连接
l 重启sshd服务,命令如下:systemctl restart sshd
1.openshift搭建的更多相关文章
- openshift搭建私有registry
1.创建registry服务器 (1)安装需要的包 yum -y install podman httpd-tools (2)创建registry目录 mkdir -p /opt/registry/{ ...
- 上一周,小白的我试着搭建了两个个人博客:在github和openshift上
上一周,突发奇想,想搭建个自己的博客. 由于是突发奇想,自然想先找免费的试试手.仔细搜索下,选定了目标Openshift和Github. Openshift 安装WordPress OpenShift ...
- [转]OpenShift 集群搭建指南
转自:http://www.cnblogs.com/zhangning/p/7251810.html OpenShift 集群搭建指南 v1.0 搭建Hyper-v虚拟机或物理机 配置物理机静态IP, ...
- 记一次搬迁到 OpenShift 并搭建 PHP5.5 环境等
http://blog.laobubu.net/archives/move-to-openshift/ 记一次搬迁到 OpenShift 并搭建 PHP5.5 环境等 Nov 24, 2014 十一月 ...
- Docker系列(十六):搭建Openshift环境
目的: 搭建Linux下的Openshift环境. 参考资料: 开源容器云OpenShift 构建基于Kubernetes的企业应用云平台 ,陈耿 ,P253 ,2017.06 .pdf 下载地址:h ...
- openshift 4.3 Istio的搭建(istio 系列一)
openshift 4.3 Istio的搭建 本文档覆盖了官方文档的Setup的所有章节 目录 openshift 4.3 Istio的搭建 安装Istio openshift安装Istio 更新is ...
- OpenShift Redhat 搭建NodeJS环境
https://openshift.redhat.com/ OpenShift 是 redhat 公司推出的一个 PaaS 云计算应用平台,开发者可在上面构建.测试.部署和运行应用程序,它支持 Jav ...
- 手把手教你在openshift上搭建wordpress博客(二)
相同公布于:http://www.longgaming.com/archives/128 推荐前往阅读 这一篇文章主要介绍一些经常使用插件的使用和配置. 下面是我个人安装的一些插件.大家能够依据须要自 ...
- 利用OpenShift托管Node.js Web服务进行微信公众号开发
最近写了一个微信的翻译机器人.用户只要关注该公众号,发送英文的消息,就能收到中文翻译的回复.有兴趣的读者可以扫描下面的二维码关注该公众号,尝试发送英文单词试试看.(有时候第一次发送单词会收到“该公众号 ...
随机推荐
- service mesh学习规划
istio go语言 谷歌开发 现有产品功能(每个功能具体支持哪些方式,优缺点) 服务注册发现 流量劫持 路由 负载均衡 熔断降级 流量控制(限流.流量分配) 重试机制 日志管理 支持的协议 监控(健 ...
- Tomcat部署虚拟主机
使用Tomcat部署加密虚拟主机,实现: a.使用www.a.com域名访问的页面根路径为/usr/local/tomcat/a/base b.使用www.b.com域名访问的页面根路径为/usr/l ...
- GDB学习笔记
GDB是UNIX及UNIX-like下的调试工具.GDB这个调试工具相比于VC.z的优点是具有修复网络断点以及恢复链接等功能. 一.功能 一般来说,GDB主要帮助你完成下面四个方面的功能: 1.启动你 ...
- visual studio 中添加命令行参数
argc argv
- android 6.0适配(总结)
6.0的适配主要是权限: 权限的分组: 普通权限:也就是正常权限,是对手机的一些正常操作,对用户的隐私没有太大影响的权限,比如手机的震动,网络访问,蓝牙等权限,这些权限会在应用被安装的时候默认授予,用 ...
- 用ASP实现文件下载
<% '**************************************************************'**使用方法: ...
- UE4开发PSVR游戏,使用RazorGPU进行调试的方法
打开Project Launcher,如果没有需要的Devkit平台目标,就点下方的Device Manager,右键Claim 相应的目标.如果已经出现在Project Launcher中,点击上方 ...
- Oracle中动态SQL详解(EXECUTE IMMEDIATE)
Oracle中动态SQL详解(EXECUTE IMMEDIATE) 2017年05月02日 18:35:48 悠悠倾我心 阅读数:744 标签: oracle动态sqloracle 更多 个人分类: ...
- 【easyui-combobox】下拉菜单自动补全功能,Ajax获取远程数据源
这个是针对easyUI的下拉菜单使用的,Ajax获取远程数据源 HTML 页面 <input id="uname" name="uname" class= ...
- JAVA中short和short相加自动转化为int
精度小于int的数值运算的时候都回被自动转换为int后进行计算 所以,下面的代码会报编译错误 short s1 = 1;short s2 = 1;s1= (s1+s2); 必须改成: short s1 ...