当前位置: 首页 > news >正文

容器化应用: 在阿里云搭建多节点 Openshift 集群

概述

两节点集群做试验
计算节点要配置的东西比较少, 建议先配置计算节点, 然后切换到 Master 节点慢慢搞.
在阿里云的美国区(硅谷)开了两个ECS(按量)

  • Master: 2CPU, 16G内存, CentOS 7.4 64位
  • Node1: 1CPU, 8G内存, CentOS 7.4 64位

可是, 自定义镜像能在国内跨区复制, 但是总算借助米国的网络算是把整个流程跑通了, 国内的网络出国各种卡.

配置

配置计算节点和控制节点, 稍微有点区别, 如下

计算节点

# 设置主机名
hostnamectl set-hostname node1.example.com

# 安装依赖包
yum install -y docker wget git net-tools bind-utils iptables-services bridge-utils bash-completion

# 启用, 启动 Docker 服务
systemctl enable docker; systemctl start docker

# 启用, 启动网络管理器
systemctl enable NetworkManager; systemctl start NetworkManager

# 停止, 禁用防火墙
systemctl stop firewalld ; systemctl diable firewalld

# Ansible和系统自带的urllib3有冲突, 卸载之: Error unpacking rpm package python-urllib3-1.10.2-3.el7.noarch
pip uninstall urllib3

Master 控制节点

# 设置主机名
hostnamectl set-hostname master.example.com

# 本地域名解析
echo "172.20.62.195 master.example.com" >> /etc/hosts
echo "172.20.62.196 node1.example.com" >> /etc/hosts

# 安装依赖包
yum install -y docker wget git net-tools bind-utils iptables-services bridge-utils bash-completion

# 启用, 启动 Docker 服务
systemctl enable docker; systemctl start docker

# 启用, 启动网络管理器
systemctl enable NetworkManager; systemctl start NetworkManager

# 停止, 禁用防火墙
systemctl stop firewalld ; systemctl diable firewalld

# Ansible和系统自带的urllib3有冲突, 卸载之: Error unpacking rpm package python-urllib3-1.10.2-3.el7.noarch
pip uninstall urllib3

# 安装, 启用, 启动ETCD分布式数据库
yum -y install etcd
systemctl enable etcd; systemctl start etcd

# 下载EPEL
yum -y install https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

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

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

# 生成秘钥
ssh-keygen -f /root/.ssh/id_rsa -N ''

# 复制秘钥到集群中的所有节点, 实现无密码访问
for host in master.example.com node1.example.com; do ssh-copy-id -i ~/.ssh/id_rsa.pub $host;  done

# 下载 openshift-ansible
wget https://github.com/openshift/openshift-ansible/archive/openshift-ansible-3.7.0-0.126.0.tar.gz
tar zxvf openshift-ansible-3.7.0-0.126.0.tar.gz

# 备份
cp /etc/ansible/hosts /etc/ansible/hosts.bak

# 配置 /etc/ansible/hosts
# /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.0
# 如果CPU内存满足条件, 可以注释掉 openshift_disable_check
# Master 节点要求 2 CPU核心, 16G内存, 40G磁盘
#   Node 节点要求 1 CPU核心,  8G内存, 20G磁盘
openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability

# 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]
master.example.com

# host group for nodes, includes region info
[nodes]
master.example.com
node1.example.com
node1.example.com openshift_node_labels="{'region': 'infra', 'zone': 'east'}"

[etcd]
master.example.com

开工, 坐等结果

ansible-playbook ~/openshift-ansible-openshift-ansible-3.7.0-0.126.0/playbooks/byo/config.yml

然后

如果有啥毛病, 把错误消息复制下来Google. 百度没有! 如果一切正常, 可以通过下面的一些命令查看集群的信息

查看节点列表

oc get nodes

我是谁

当前登录用户是WHO?

oc whoami

显示集群资源列表

oc get all -o wide

创建用户

htpasswd -b /etc/origin/master/htpasswd dev dev

以集群管理员登录

oc login -u system:admin

给DEV账号添加集群管理员角色

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

打洞

master.example.com, node1.example.com, 是通过本地 /etc/hosts 文件解析的, 无法通过公网访问. 要公网访问, 可以使用DNS.

在本机 /etc/hosts 添加如下一行:

127.0.0.1 master.example.com

执行如下命令打洞到远程Master

ssh -L 127.0.0.1:8443:master.example.com:8443 root@47.88.54.94

47.88.54.94 是真实的IP, 但是后面谁用就不知道了!!!

浏览器打开: https://master.example.com:8443

参考资料

相关文章:

  • pyspider爬取数据导入mysql--1.安装驱动
  • 微信模板消息发送
  • CTF---隐写术入门第二题 小苹果
  • 敏捷开发思想及Scrum实践
  • WCF技术剖析之二十一:WCF基本异常处理模式[中篇]
  • 调用函数
  • Linux运维之道之admin1.4(权限和归属,LDAP认证)
  • 001大数据简介
  • 使用ADO.NET查询和操作数据库(合集)
  • php json_decode无法解析特殊问好字符
  • Android RecyclerView (一) 使用完全解析
  • 多列等高布局
  • 前端小姿势
  • 杀死进程命令
  • Android******Context******
  • @angular/forms 源码解析之双向绑定
  • AWS实战 - 利用IAM对S3做访问控制
  • co模块的前端实现
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • mysql外键的使用
  • nodejs调试方法
  • PV统计优化设计
  • React中的“虫洞”——Context
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 阿里云购买磁盘后挂载
  • 从setTimeout-setInterval看JS线程
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 事件委托的小应用
  • 数据可视化之 Sankey 桑基图的实现
  • 优化 Vue 项目编译文件大小
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Java性能优化之JVM GC(垃圾回收机制)
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # Java NIO(一)FileChannel
  • # 数据结构
  • (1) caustics\
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (C++20) consteval立即函数
  • (阿里云万网)-域名注册购买实名流程
  • .naturalWidth 和naturalHeight属性,
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET中两种OCR方式对比
  • @JoinTable会自动删除关联表的数据
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [3D基础]理解计算机3D图形学中的坐标系变换