节点基于Libvirt on KVM的openshift4集群创建

怎么创建群  时间:2021-03-20  阅读:()

基于Libvirt on KVM的openshift4集群创建

概览

本文主要介绍了利用开源github社区的Openshift 4的l ibvirt实现来安装一个可以使用的openshift集群以及其中启动、控制和工作节点相关步骤的详细介绍。 [X1]

Openshift分为开源版本和商业版本出于技术交流的目的本文所讨论的都是开源版本主要的代码都在这里。

对比openshift3/4的安装和后续节点管理的工作最重要的区别是针对云的概念的引入从而极大程度的减轻管理员安装配置的负担之前的openshift3所针对的安装环境都是以机器(machine)为对象通过ansible来安装这样不仅复杂而且极易出错而openshift4的Instal ler Provisioned Infrastructure(IPI)所针对的安装环境主要是云所有所需要的资源

例如虚拟机/裸金属机存储网络负载均衡都通过访问云API从而动态获得极大的增加了安装的健壮性和弹性。 目前所支持的cloud列表可以参考支持列表。

Libvirt with KVM instal ler作为一个单机开发的工具可以提供方便的开发环境给开发者同时分析l ibvirt的安装过程也有助于读者深入浅出的理解openshift 4的安装过程以及openshift4内部组件的启动等内容。

基本概念

CoreOS是一个基于Linux内核的轻量级操作系统面向云和集群为主其主要的优势是一致、 安全、 可靠。关于CoreOS具体可以参考官方文档,CoreOS又分为fedora CoreOS 社区版和RHEL CoreOS(商业版)  CoreOS作为云原生操作系统 ignition是其很有特色以及和普通Linux不一样的地方下面这个ignition的实例主要的目的就是将生成的公钥注入部署出的虚拟机里这样当coreos启动之后可以通过公钥对应的私钥ssh登录。 Openshift4中控制节点(master)必须是CoreOS 工作节点(worker)可以是CoreOS。

{

"ignition": {

"config": {},

"timeouts": {},

"version": "2.1 .0"

},

"networkd": {},

"passwd": {

"users": [

{

"sshAuthorizedKeys": [

"ssh-rsa ABCD. . ."

]

}

]

},

….

}

Operator:简化应用程序部署和生命周期管理——自动化的执行应用程序维护扩展故障转移等工作,openshift 4的控制面几乎都建立在operator之上关于operator可以参考概念介绍如果读者对Operater的概念不是很理解也可以参考这里的实验教程。Cluster API :ClusterAPI是一个Kubernetes之上的可选项目 它使用Kuber ne tes的扩展机制(Custom Resource Definition)来创建、配置和管理集群(Cluster) 。关于ClusterAPI的用况范围等内容可以参考这篇和这篇文章 Cluster API作为通用的Kubernetes集群管理框架有许多不同种类的云提供商都以ClusterAPI为基础您可从此处获取云提供商的完整列表。 Openshift instal ler基于Cluster API的Kubernetes版本做了一定修改来创建工作节点。

Terraform:一种构建、更改和版本控制基础设施的工具(Infrastructure as code) 针对业界几乎所有的云平台都有自己的实现例如aws,openstack; l ibvirt等也有自己的provider实现 l ibvirt的实现一般只是拿来作为开发和测试使用的  openshift instal ler的l ibvirt安装方法现在使用terraform的l ibvirt实现来完成基于l ibvirt集群的控制面创建(bootstrap节点 master节点) 而worker节点则是通过Cluster API l ibvirt来安装的。从开发和测试的角度来说如果本地有机器通过l ibvirt创建开发环境是最经济和方便的。

环境准备

笔者使用的是RHEL7.6 请准备好基本和扩展的yum源以备安装时使用  另外默认的l ibvirt会创建至少三个虚拟机 bootstrap启动节点 master节点工作节点 而每个虚拟机的内存默认为6G 所以主机至少配置24G内存以上保证工作。

安装和更新必要的软件

首先[X2] 需要安装必要的文件这些包作为编译的依赖如果不安装在编译过程中会出现错误

# yum -y install gcc gcc-c++ automake libtool zlib-devel glib2-devel bzip2-devel libuuid-devel spice-protocol spice-server-devel usbredir-devel libaio-devel golang-bin

如果找不到golang-bin 可以考虑从golang官网直接搜索golang的可执行文件并把golang可执行文件放在目录。

qemu更新

笔者的RHEL7.6环境下默认的qemu版本是1 .5.3 然而由于openshift 4 l ibvirt使用了fw_cfg设备来完成ingition的初始化而该版本的qemu是不支持fw_cfg的 如果不更新q e m u的话在安装过程中由于不能创建fw_cfg设备会遇到错误所以需要通过使能kvm-common这个源来更新qemu-kvm,具体请参考这里。

编译**openshift-instal ler**

从github下载openshift-instal l er 编译openshift-instal ler 由于l ibvirt是开发和测试使用的所以默认编译之后所支持的安装列表是不支持l ibvirt的需要加入TAGS=l ibvirt这个tag从而在编译过程来加入l ibvirt支持。

[root@jj-instal ler instal ler]#TAGS=l ibvirt hack/bui ld.sh

• minimum_go_version=1 .12

++go version

++cut -d' ' -f 3

• current_go_version=go1 .12.9

++version 1 .12.9

++IFS=.

++printf'%03d%03d%03dn' 1 129

++unset IFS

++version 1 .12

++IFS=.

++printf'%03d%03d%03dn' 1 12

++unset IFS

• '['001012009-lt 001012000']'

• LAUNCH_PATH=/root/go/src/github.com/openshift/instal ler

++dirname hack/bui ld.sh

• cd hack/. .

++go l ist -e-f'{{.Dir}}'github.com/openshift/instal ler

• PACKAGE_PATH=/root/go/src/github.com/openshift/instal ler

• test -z/root/go/src/github.com/openshift/instal ler

• LOCAL_PATH=/root/go/src/github.com/openshift/instal ler

• test /root/go/src/github.com/openshift/instal ler ' !='

/root/go/src/github.com/openshift/instal ler

• MODE=release

++git rev-parse--verify'HEAD^{commit}'

• GIT_COMMIT=d70ea3ee878a6c09ae309d614746107f05f207b5

++git describe--always--abbrev=40--dirty

• GIT_TAG=unreleased-master-2274-gd70ea3ee878a6c09ae309d614746107f05f207b5

• LDFLAGS=' -X github.com/openshift/instal ler/pkg/version.Raw=unreleased-master-2274-gd70ea3ee878a6c09ae309d614746107f05f207b5-Xgithub.com/openshift/instal ler/pkg/version.Commit=d70ea3ee878a6c09ae309d614746107f05f207b5'

• TAGS=l ibvirt

• OUTPUT=bin/openshift-instal l

• export CGO_ENABLED=0

• CGO_ENABLED=0

• case"${MODE}" in

• LDFLAGS=' -X github.com/openshift/instal ler/pkg/version.Raw=unreleased-master-2274-gd70ea3ee878a6c09ae309d614746107f05f207b5-Xgithub.com/openshift/instal ler/pkg/version.Commit=d70ea3ee878a6c09ae309d614746107f05f207b5-s-w'

• TAGS=' l ibvirt release'

• test

• go generate./datawriting assets_vfsdata.go

• echo' l ibvirt release'

• grep-q l ibvirt

• export CGO_ENABLED=1

• CGO_ENABLED=1

• go bui ld-ldflags' -X github.com/openshift/instal ler/pkg/version.Raw=unreleased-master-2274-gd70ea3ee878a6c09ae309d614746107f05f207b5-Xgithub.com/openshift/instal ler/pkg/version.Commit=d70ea3ee878a6c09ae309d614746107f05f207b5-s-w' -tags' l ibvirt release' -o bin/openshift-instal l ./cmd/openshift-instal l

修改**l ibvirt**配置

由于默认l ibvirt的tcp端口没有打开因此需要通过修改l ibvirt daemon的配置来打开TCP连接端口(16509) 。

需要修改如下文件

/etc/l ibvirt/l ibvirtd.conf l isten_tls=0l isten_tcp=1auth_tcp="none"tc p_po rt="16509"

/etc/sysconfig/l ibvirtd LIBVIRTD_ARGS="--l isten"

重启l ibvirtd服务systemctl restart l ibvirtd确认l ibvirtd在16509端口上监听tcp请求 [root@jj-instal lerinstal ler]#netstat -tlunp|grep l ibvirttcp 000.0.0.0:165090.0.0.0:*LISTEN 3696/l ibvirtd

安装集群

到现在为止我们已经完成了所有的安装准备下面可以开始安装openshift集群了:使用如下命令我们会被要求提供一定的输入具体的参数选择如下:

[root@jj-instal ler instal ler]#bin/openshift-instal l create cluster

?SSH Publ ic Key/root/.ssh/id_rsa.pub

?Platform l ibvirt

?Libvirt Connection URI qemu+tcp://192.168.122.1/system

?Base Domain tt.testing

?Cluster Name test1

?Pul l Secret [?for help

INFO Fetching OS image: rhcos-42.80.20190827.1-qemu.qcow2***

INFO Creating infrastructure resources. . .

INFO Waiting up to 30m0s for the Kubernetes API at https://api .test1 .aa.testing:6443. . .Ssh publ ic key:如果选择了某个公钥(publ ic key)文件该公钥文件会通过Ignition被注入部署出来的CoreOS机器这样当遇到需要登录CoreOS的时候例如调试等可以通过ssh的方式来登录该Co reOS,该方法主要是开发测试中使用。

Platform:选择l ibvirt平台 如果前面编译的时候没有增加TAGS=l ibvirt 这里就不会出现l ibvirt的选项。

Libvirt connection URI :Libvirt连接URI 默认是qemu+tcp://192.168.122.1/system,除非运行instal ler的节点和运行l ibvirtd 也就是集群运行的节点不同 这个参数我们可以选择默认参数如果存在不同节点的情况例如instal ler是x86平台而l ibvirtd是I BMsystem z平台 可以调整该参数。

Base Domain:基本域名。

Cluster Name:集群名字 Base Domain和Cluster Name会在集群的Ingress/Router中使用。

Pul l Secret:请使用‘?’搜索如果没有的话需要访问这里并获取一个令牌(Token) 。集群安装过程分析

首先openshift instal ler会使用terraform 通过terraform l ibvirt provider 通过l ibvirt来创建两台虚拟机其中一个是启动节点 bootstrap  另一个是控制节点(master) 而terraform在创建虚拟机过程中的参数是根据上述准备过程用户输入生成的当然也可以根据实际需要修改很多默认值例如默认工作节点数量是1  本文不再赘述。当虚拟机创建完成之后可以观察到虚拟机情况如下所示在笔者的环境中使用了test1作为集群的名字 bootstrap代表启动节点 master代表控制节点。

[root@jj-instal ler~]#virsh l ist --al l

Id Name State

1 1 test1-gbvhv-bootstrap running

13 test1-gbvhv-master-0 running

虚拟机创建完成之后我们可以通过virsh console命令登入bootstrap和master节点在bootstrap和master的启动阶段会执行ignition从而完成所有的配置和初始化工作。[X3]

首先进入Bootstrap节点请注意这个IP 192.168.126.10是固定的 并且由于在笔者的环境中选择了注

入ssh publ ic key 这样当ingition完成之后我们可以通过私钥(private key)无密码访问bootstrap节点。

[root@jj-instal ler~]#ssh core@192.168.126.10

Warning:Permanently added'192.168.126.10' (ECDSA) to the l ist of known hosts.Red Hat Enterprise Linux CoreOS 42.80.20190827.1

WARNING:Direct SSH access to machines is not recommended.

This is the bootstrap node; itwi l l be destroyed when the master is ful ly up.

The primary service is"bootkube.service".To watch its status, run e.g.journalctl -b-f-u bootkube.service

[core@test1-vrq ms-bootstrap~]$

Bootstrap节点启动日志节选 通过journalctl -b-f-u bootkube.service查看 。Sep 0308:30:36 test1-gbvhv-bootstrap systemd[1]:Started Bootstrap a Kubernetescluster.

Sep 0308:31 :06 test1-gbvhv-bootstrap bootkube.sh[1624]:Rendering Cluster VersionOperator Manifests. . .

Sep 0308:31 :28 test1-gbvhv-bootstrap bootkube.sh[1624]:Rendering cluster configmanifests. . .

Sep 0308:31 :36 test1-gbvhv-bootstrap bootkube.sh[1624]:Rendering Kubernetes APIserver core manifests. . .

标准互联(450元)襄阳电信100G防御服务器 10M独立带宽

目前在标准互联这边有两台香港云服务器产品,这不看到有通知到期提醒才关注到。平时我还是很少去登录这个服务商的,这个服务商最近一年的促销信息比较少,这个和他们的运营策略有关系。已经从开始的倾向低价和个人用户云服务器市场,开始转型到中高端个人和企业用户的独立服务器。在这篇文章中,有看到标准互联有推出襄阳电信高防服务器100GB防御。有三款促销方案我们有需要可以看看。我们看看几款方案配置。型号内存硬盘IP...

€4.99/月Contabo云服务器,美国高性价比VPS/4核8G内存200G SSD存储

Contabo是一家运营了20多年的欧洲老牌主机商,之前主要是运营德国数据中心,Contabo在今年4月份增设新加坡数据中心,近期同时新增了美国纽约和西雅图数据中心。全球布局基本完成,目前可选的数据中心包括:德国本土、美国东部(纽约)、美国西部(西雅图)、美国中部(圣路易斯)和亚洲的新加坡数据中心。Contabo的之前国外主机测评网站有多次介绍,他们家的特点就是性价比高,而且这个高不是一般的高,是...

华纳云不限流量¥324/年,香港双向CN2(GIA)云服务器/1核1G/50G存储/2Mbps

华纳云(HNCloud Limited)是一家专业的全球数据中心基础服务提供商,总部在香港,隶属于香港联合通讯国际有限公司,拥有香港政府颁发的商业登记证明,保证用户的安全性和合规性。 华纳云是APNIC 和 ARIN 会员单位。主要提供香港和美国机房的VPS云服务器和独立服务器。商家支持支付宝、网银、Paypal付款。华纳云主要面向国内用户群,所以线路质量还是不错的,客户使用体验总体反响还是比较好...

怎么创建群为你推荐
filezilla_serverFileZilla无法连接服务器怎么解决传奇域名谁有霸气一点的传奇名字。给个discuz伪静态求虚拟主机Discuz 伪静态设置方法oscommercewedopay的通道怎么样?财务单据简单财务票据处理 是做什么localsettingsLocal Settings这个文件夹是干什么的?网站流量统计代码统计流量的代码怎么写啊? - 技术问答无法访问无法访问internet是怎么回事江苏电信网江苏电信天翼生活App可以办理宽带吗?上海电信中国电信股份有限公司上海分公司的领导介绍
重庆域名注册 大庆服务器租用 鲁诺vps 秒解服务器 uk2 淘宝双十一2018 免费全能空间 亚洲小于500m 网通ip 卡巴斯基官方免费版 lol台服官网 1g内存 傲盾官网 国外ip加速器 linux使用教程 国外视频网站有哪些 最漂亮的qq空间 中国电信网络测速 net空间 xuni 更多