1 楔子

公司有个项目部署在 OpenShift 容器云平台上,出现问题较多,于是萌生在公司环境搭建现场仿真环境,由于资源没有生产环境多,就使用单节点简单模拟下

本文主要内容包括以下:

  1. 使用 Dnsmasq 实现 OpenShift 平台的内网域名解析
  2. 使用 oc 命令行工具初始化 OpenShift 3.9 单主机

2 规划

OpenShift基础服务约占4GB左右内存,由于使用 oc 进行初始化 OpenShift,所以不能集群扩容,又因为公司项目内存占用太大,所以与运维老哥协调了高配服务器。

硬件:

CPU型号 核心数 内存 硬盘
Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz 30C 125GB 4TB

软件:

软件名 版本
CentOS release 7.7.1908 (Core)
Docker 18.03.1-ce
OpenShift v3.9.71
Kubernetes v1.9.1
Dnsmasq 2.76-10.el7_7.1
  • k8s是 OpenShift 自动安装的,版本比较低,高版本可自行参考官方文档。

  • 主机系统、Docker等本文不再累述

3 安装配置OpenShift

3.1 配置oc命令行工具

下载 oc 客户端工具:https://github.com/openshift/origin/releases,由于现场提供了3.9.71版本的客户端,和这个版本区别不大,读者可用这个版本操作。

mkdir openshift && cd /home/openshift
curl -Lo oc-3.11.linux.tar.gz https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz
tar xvf oc-3.11.linux.tar.gz
mv oc /usr/local/bin
#验证
oc version
#bash补全,执行完成重新login下shell
yum install bash-completion
oc completion bash > /etc/bash_completion.d/oc

3.2 启动OpenShift

mkdir -p /data1/openshift
oc cluster up \
--use-existing-config=true \
--skip-registry-check=true \
--host-config-dir='/data1/openshift/config' \
--host-data-dir='/data1/openshift/data' \
--host-pv-dir='/data1/openshift/pv' \
--host-volumes-dir='/data1/openshift/volumes' \
--public-hostname='openshift.cnxx' \
--routing-suffix='dev.cnxx'
  • --host 开头的参考都是指定写到本机的目录位置,我的环境/data1硬盘空间大
  • --public-hostname 指定后续 DNS 映射的域名
  • --routing-suffix 指定部署服务的域名后缀,如 test-app.dev
  • 域名需要注意下,如果不作上游域名代理用什么域名都行,如果用了上游的代理,可能会被浏览器视为网络攻击拦截掉,提前使用dig命令尝试下
#默认无密OpenShift超级管理员
oc login -u system:admin
#创建集群管理员用户
htpasswd -c /data1/openshift/admin-htpasswd cluster-admin
#添加集群管理员权限
oc adm policy add-cluster-role-to-user cluster-admin cluster-admin
#创建项目
oc new-project hyhbbb --display-name='开发环境' #display-name可使用中文
#添加项目使用者
htpasswd -c /data1/openshift/hyhbbb-htpasswd hyhbbb
oc adm policy add-role-to-user admin hyhbbb -n hyhbbb

用户角色权限参考:

4 安装配置 Dnsmasq

Dnsmasq是一款DNS解析软件,适用于少量用户使用,有配置简单等优点。由于踩过了Bind9的坑,这里直接用 Dnsmasq 配置域名解析。

#安装dnsmasq
yum install -y dnsmasq

Dnsmasq 默认读取的是 /etc/hosts 作优先解析,使用 /etc/resolv.conf 作默认上游 DNS 服务器,这里就不修改 /etc/hosts/etc/resolv.conf

[root@server-127 openshift]# egrep -v "^#|^$" /etc/dnsmasq.conf
strict-order #使用严格顺序查找
listen-address=127.0.0.1,10.2.41.127 #dnsmasq监听地址,也可以通过其他参数指定网卡
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig #默认的配置文件,未动
address=/openshift.cnxx/10.2.41.127 #解析域名到10.2.41.127
address=/dev.cnxx/10.2.41.127 #解析dev.cnxx后缀的泛域名到10.2.41.127

重启服务

systemctl restart dnsmasq

验证

yum install bind-utils

[root@server-127 openshift]# dig openshift.cnxx

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> openshift.dev
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16855
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION:
;openshift.cnxx. IN A ;; ANSWER SECTION:
;openshift.cnxx. 0 IN A 10.2.41.127 ;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: 二 12月 29 13:54:55 CST 2020
;; MSG SIZE rcvd: 47

5 访问测试

6 Q&A

Q1: oc login -u system:admin 提示需要密码

A1: 参考如下方法:

vim /etc/profile
export KUBECONFIG=/data1/openshift/config/master/admin.kubeconfig
export CURL_CA_BUNDLE=/data1/openshift/config/master/ca.crt
source /etc/profile

Q2: htpasswd 命令未找到

A2: 安装 httpd

yum install -y httpd

htpasswd 参数:

-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,只将加密后的用户名密码显示在屏幕上;
-m 默认采用MD5算法对密码进行加密
-d 采用CRYPT算法对密码进行加密
-p 不对密码进行进行加密,即使用普通文本格式的密码
-s 采用SHA算法对密码进行加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户

Q3: htpasswd 创建的用户怎么删除?

A3: 使用 htpasswd -d 用户名


Q4: 如图,不是私密连接是正常的,但是没有入口

A4: 此种情况是由于此域名已被使用,请更换域名或去除上游DNS代理(去除上游代理可能就上不了网了)

参考

https://blog.csdn.net/xiongzaiabc/article/details/105005412

https://my.oschina.net/u/4384701/blog/3386402

https://www.cnblogs.com/sammyliu/p/10083659.html

安装简易OpenShift单节点并配置DNS泛域名的更多相关文章

  1. Centos7安装 Hadoop(单节点)

    1.Hadoop简介 Hadoop是一个由Apache基金会所开发的开源分布式系统基础框架,使用Java开发,是处理大规模数据的软件平台. Hadoop可以从单一节点扩展到上千节点.用户可以在不了解分 ...

  2. DNS Wildcard(DNS泛域名)

    在DNS中,泛域名(wildcard Resource Record)可以被认为是一种合成RR的机制,借助于它,DNS服务器可以响应本来不存在的域名的请求,它的设计初衷是用来把所有邮件都转发到一个邮件 ...

  3. 000 centos7下安装elasticsearch7的单节点安装

    在这里,直接使用最新的包进行学习.这里的安装也以前的版本不同,不过因为学习,这部分安装的区别不具体研究了. 这里也是摸索型的记录,所以会出现报错情况,然后针对这种方式进行解决,最后达到安装完成的效果. ...

  4. Hadoop入门--HDFS(单节点)配置和部署 (一)

    一 配置SSH 下载ssh服务端和客户端 sudo apt-get install openssh-server openssh-client 验证是否安装成功 ssh username@192.16 ...

  5. 单节点etcd配置

    $ cat /etc/etcd/etcd.conf ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #监听URL,用于与其他节点通讯 ETCD ...

  6. 快速搭建rabbitmq单节点并配置使用

    安装erlang环境 wget http://erlang.org/download/otp_src_20.3.tar.gz tar xf otp_src_20.3.tar.gz && ...

  7. Service系统服务(四):搭建单区域DNS服务器、特殊DNS解析、配置DNS子域授权、搭建并测试缓存DNS

    一.搭建单区域DNS服务器 目标: 本例要求要求为DNS区域tedu.cn搭建一台DNS服务器,以便用户能通过域名的方式访问网站.测试阶段主要提供以下正向记录: svr7.tedu.cn ---> ...

  8. eureka server 单节点与多节点部署演示

    环境搭建 目录结构(ad-eureka为子模块) --ad-spring-cloud --ad-eureka --pom.xml --pom.xml 主pom.xml <?xml version ...

  9. eureka的简单介绍,eureka单节点版的实现?eureka的自我保护?eureka的AP性,和CP性?

    注意!!! 这是对上一篇博客 springcloud的延续,整个项目的搭建,来源与上一篇博客.一.什么是eureka? // eureka是一个注册中心,实现了dubbo中zookeeper的效果! ...

随机推荐

  1. synchronized底层揭秘

    前言 上篇文章我们从硬件级别探索,对可见性和有序性的认识上升了一个高度,却迟迟没有介绍原子性的解决方案. 今天我们就来聊一聊原子性的解决方案,锁. 引入锁机制,除了可以保证原子性,同时也可以保证可见性 ...

  2. LeetCode 049 Anagrams

    题目要求:Anagrams Given an array of strings, return all groups of strings that are anagrams. Note: All i ...

  3. [整理]qbxt集训10场考试 大 杂 烩 (后篇)

    前篇 Contest 6 A 两个数,第 \(i\) 轮从较大数(如果相等就是第一个)里减去 \(i\) ,问操作不能进行时两数分别为多少. 首先把大数减到和小数差不多,然后我们会发现接下来两数会轮流 ...

  4. Windows平台部署Asp.Net Core应用

    一. 简介 Asp.Net Core 部署方式有两种:依赖框架和独立部署. 1. 框架依赖的部署: 顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core. 由于 ...

  5. redis雪崩,击穿,穿透

    redis穿透 什么是redis穿透? 1.查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存 2.这将导致这个不存在的数据每次请求都要到存储层 ...

  6. 老猿学5G扫盲贴:中国移动网络侧CHF主要功能及计费处理的主要过程

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...

  7. Python中的迭代是什么意思?

    Python中的迭代是指通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代. ...

  8. 基础篇——怎么使用PowerDesigner进行数据库初始化

    1.使用PowerDesigner打开设计好的 .pdm文件 2.点击工具栏中的Database-->Database Generation-->Preview,就可以看到生成的创建数据库 ...

  9. Python 常用方法和模块的使用(time & datetime & os &random &sys &shutil)-(六)

    1 比较常用的一些方法 1.eval()方法:执行字符串表达式,并返回到字符串. 2.序列化:变量从内存中变成可存储或传输到文件或变量的过程,可以保存当时对象的状态,实现其生命周期的延长,并且需要时可 ...

  10. Java程序员需要了解的底层知识(一)

    硬件基础知识 - Java相关硬件 汇编语言的执行过程(时钟发生器  寄存器  程序计数器) 计算机启动过程 进程线程纤程的基本概念面试高频 -  纤程的实现 内存管理 进程管理与线程管理(进程与线程 ...