K8S云平台是目前产品的主要部署方式,通过云平台进行产品、方案部署,可以加快部署的效率,特别是针对集群式、高可用部署,云平台具有天然的优势。云平台的部署模式在满足常规部署的同时,也提供了对于服务器资源的监控、运维的辅助,能协助运维人员快速进行服务器升级、扩容、启停等操作,降低运维的难度。

由于K8S的部署方案一直在不断完善,并且基于UMC建立了一键部署的模式,所以在进行环境部署的过程中,对整个部署过程进行了梳理,记录了整体的部署以及部署过程中的问题点。本次部署由于部署的是测试环境,所以使用的是三台服务器搭建的非高可用环境

总体说明

K8S云管理平台主要是为了满足对K8S集群的统一管理的,主要实现对K8S集群的部署、监控,以及对方案、环境、产品容器等的管理维护、运行监控、配置扩容等。

1.总体架构

UMC云管理平台是为了K8S统一管理与维护而开发的,支持多租户、多K8S集群、多方案、多产品/多组件的分布式高可用部署,简化系统使用者的操作过程和操作难度,提高了运维的工作效率。

umc平台部署使用(基于UMC的K8S和产品部署说明)(1)

底层通过容器化的产品套件作为支撑,包含ESB企业服务总线、MDM基础数据平台、IDM身份管理平台、DAP数据分析平台、Portal门户集成平台等产品。

中层通过K8S集群可根据自身需求对底层容器化的产品套件进行统一调度管理,UMC云管理平台可以对调度过来的各容器化的产品集成套件进行统一管理和监控。

2.部署方式

目前K8S的部署主要采用UMC一键部署的方式,而一键部署目前都是基于Ansible 部署脚本的方式实现的,ansible作为一种自动化运维的工具,能满足批量系统配置、批量程序部署、批量运行命令等功能,而K8S的一键部署就是通过Ansible自动调用安装脚本,从而完成整个的部署过程。在这个过程中,根据实际部署的需要以及使用的不同,又分成了外围产品部署、K8S部署等不同的阶段。

3.部署流程

K8S的部署流程都是基于Ansible完成的,而K8S的容器操作这是基于K8S的API,具体的操作流程有所不同,总体来说主要分为以下步骤:

1.外围产品部署:部署UMC、Nginx、Redis、jdk、MySQL等,主要目的是保证UMC产品可以正常访问,通过服务器手动执行脚本完成;

2.K8S部署:部署docker、K8S、NFS镜像库等,主要目的保证K8S集群的建立,通过UMC配置和操作完成整个过程;

3.产品部署:通过UMC完成,主要是通过K8S的API实现容器的管理。

前置条件

由于K8S的部署采用Ansible 部署脚本的方式,所以在部署K8S环境前,需要部署服务器的基础环境,包括解压缩工具、Ansible工具、时间同步工具(如果服务器时间不一致需要进行时间同步)等。

1.服务器准备

非高可用环境需要使用3台服务器,其中一台master,两个worker,并且需要在同一网段操作,并且保证服务器可以互通,参考配置如下:

umc平台部署使用(基于UMC的K8S和产品部署说明)(2)

注意:存储SSD需要挂载在根目录/,或者/opt目录

2.安装资料

umc平台部署使用(基于UMC的K8S和产品部署说明)(3)

3.安装工具

Ansible安装并放置到了对应的文件夹中,可以进行灵活配置,具体的操作步骤如下:

在master上创建目录,并上传Ansible安装包ansible-install.zip:

umc平台部署使用(基于UMC的K8S和产品部署说明)(4)

1.进入目录解压文件:

umc平台部署使用(基于UMC的K8S和产品部署说明)(5)

umc平台部署使用(基于UMC的K8S和产品部署说明)(6)

2.修改ansible-install目录下的install-ansible.sh文件:

umc平台部署使用(基于UMC的K8S和产品部署说明)(7)

根据服务器网络情况,选择对应有网或无网的配置,并调整对应的IP地址。

3.执行如下命令,给sh文件进行授权:

umc平台部署使用(基于UMC的K8S和产品部署说明)(8)

注意相关提示,根据提示输入服务器密码,知道显示SUCCESS表示所有服务器全部连通。

注意:在离线安装过程中,由于不同服务器的环境不一样,可能出现依赖包缺失的问题,根据报错信息下载对应的依赖包,再手动上传到/opt/soft/ansible-install/ansible/目录,再重新执行部署脚本即可,下载地址可参考:http://rpmfind.net/Linux/rpm2html/search.php或者https://pkgs.org/,根据操作系统的版本下载对应的依赖。

外围产品

外围产品主要利用Ansible进行一键安装UMC、Nginx、Redis、jdk、MySQL等,先安装外围产品主要是保证UMC的正常访问,能操作UMC才能保证后续通过UMC一键部署K8S集群,以及产品容器的部署。

1.介质上传

1.输入如下命令创建产品介质放置的文件夹,并且进入:

umc平台部署使用(基于UMC的K8S和产品部署说明)(9)

2.将产品介质上传到soft目录:

umc平台部署使用(基于UMC的K8S和产品部署说明)(10)

3.输入命令进行解压,并且进入到文件夹中:

umc平台部署使用(基于UMC的K8S和产品部署说明)(11)

2.参数配置

1.配置hosts.ini文件,只需要配置master的ip:

umc平台部署使用(基于UMC的K8S和产品部署说明)(12)

2.配置group_vars目录下的all.yml文件:

umc平台部署使用(基于UMC的K8S和产品部署说明)(13)

修改各产品参数,包括路径、用户名、密码、端口、版本等信息。

3.部署安装

1.输入命令进行外围产品安装:

umc平台部署使用(基于UMC的K8S和产品部署说明)(14)

umc平台部署使用(基于UMC的K8S和产品部署说明)(15)

2.安装完成后执行如下命令,让jdk的环境变量生效:

umc平台部署使用(基于UMC的K8S和产品部署说明)(16)

umc平台部署使用(基于UMC的K8S和产品部署说明)(17)

3.访问数据库,修改root密码,改为复杂密码:

umc平台部署使用(基于UMC的K8S和产品部署说明)(18)

4.初始化UMC的数据库:

umc平台部署使用(基于UMC的K8S和产品部署说明)(19)

5.执行命令安装UMC:

umc平台部署使用(基于UMC的K8S和产品部署说明)(20)

6.执行命令查看UMC日志:

umc平台部署使用(基于UMC的K8S和产品部署说明)(21)

umc平台部署使用(基于UMC的K8S和产品部署说明)(22)

7.启动成功后浏览器通过ip:1010/UMC登录UMC:

umc平台部署使用(基于UMC的K8S和产品部署说明)(23)

8.登录修改全局变量,修改“UMC服务URL”,将地址改为http://ip:1010/UMC:

umc平台部署使用(基于UMC的K8S和产品部署说明)(24)

K8S集群

K8S集群部署也是采用Ansible部署的方式,但是在UMC产品中已经预置了K8S一键部署功能,可以通过UMC直接进行部署,并通过UMC的接入配置功能配置Nginx,实现基于Nginx的UMC和产品访问。

1.介质上传

1.执行命令在master上创建目录:

umc平台部署使用(基于UMC的K8S和产品部署说明)(25)

2.进入服务器解压两个文件。

umc平台部署使用(基于UMC的K8S和产品部署说明)(26)

umc平台部署使用(基于UMC的K8S和产品部署说明)(27)

注意:K8S安装包中的software_pkg.zip和外围产品的software_pkg.zIP内容不一样,不要混用。

2.集群部署

1.登录UMC,进入集群配置界面,新建集群:

umc平台部署使用(基于UMC的K8S和产品部署说明)(28)

2.新增集群后点击“一键生成”按钮生成初始化信息:

umc平台部署使用(基于UMC的K8S和产品部署说明)(29)

3.访问镜像仓库,修改IP地址,IP为master的IP,端口5000:

umc平台部署使用(基于UMC的K8S和产品部署说明)(30)

4.返回集群配置,查看镜像仓库:

umc平台部署使用(基于UMC的K8S和产品部署说明)(31)

5.切换节点信息,配置服务器,完善机器名、服务器IP、账号、密码:

umc平台部署使用(基于UMC的K8S和产品部署说明)(32)

注意:

1)修改机器名、IP、账号后先保存,再设置密码

2)测试连接成功即可,不需要校验节点或加入集群

6.配置完成后可以在节点列表页面进行“连通测试”,保证服务器可以互通:

umc平台部署使用(基于UMC的K8S和产品部署说明)(33)

7.回到基本信息,点击“一键部署”:

umc平台部署使用(基于UMC的K8S和产品部署说明)(34)

注意:部署前先检查一下IP信息,如果不对注意修改

8.点击前置检测,进行前置检测:

umc平台部署使用(基于UMC的K8S和产品部署说明)(35)

9.前置检测后会出现确认部署按钮,点击确认部署:

umc平台部署使用(基于UMC的K8S和产品部署说明)(36)

10.进入部署界面,点击确认部署进行K8S部署:

umc平台部署使用(基于UMC的K8S和产品部署说明)(37)

11.点击“查看日志”进行日志查看:

umc平台部署使用(基于UMC的K8S和产品部署说明)(38)

12.部署完成后会输出“successful!”:

umc平台部署使用(基于UMC的K8S和产品部署说明)(39)

13.返回部署页面,点击“检测K8S”进行部署检测:

umc平台部署使用(基于UMC的K8S和产品部署说明)(40)

14.成功后返回部署页面,点击“一键打标签”和“部署授权”:

umc平台部署使用(基于UMC的K8S和产品部署说明)(41)

15.点击“性能操作”执行节点污点删除,在master上删除即可:

umc平台部署使用(基于UMC的K8S和产品部署说明)(42)

umc平台部署使用(基于UMC的K8S和产品部署说明)(43)

16.查看ingress的状态:

umc平台部署使用(基于UMC的K8S和产品部署说明)(44)

3.接入配置

1.访问接入配置功能,新增接入配置:

umc平台部署使用(基于UMC的K8S和产品部署说明)(45)

umc平台部署使用(基于UMC的K8S和产品部署说明)(46)

2.节点信息,添加K8S-master节点:

umc平台部署使用(基于UMC的K8S和产品部署说明)(47)

3.修改节点,配置节点用途和部署目录(Nginx安装目录):

umc平台部署使用(基于UMC的K8S和产品部署说明)(48)

4.接入配置,“自动 补全”:

umc平台部署使用(基于UMC的K8S和产品部署说明)(49)

5.配置接入,修改server-inner和server-outter的listen、server_name属性:

umc平台部署使用(基于UMC的K8S和产品部署说明)(50)

注意:server-inner和server-outter的listen、server_name不能完全相同,并且不要和后续产品的访问端口重复。

6.查看配置,“部署”、“加载”:

umc平台部署使用(基于UMC的K8S和产品部署说明)(51)

7.通过配置后的端口访问UMC:

umc平台部署使用(基于UMC的K8S和产品部署说明)(52)

8.修改全局变量,将“UMC服务URL”改为Nginx的访问路径:

umc平台部署使用(基于UMC的K8S和产品部署说明)(53)

产品部署

集群部署完成后就需要进行产品的部署,也是通过UMC完成部署过程,包括上传产品镜像、初始化数据、部署产品和Redis组件、配置访问信息、启动产品、接入配置、访问测试等。

1.镜像上传

1.上传镜像前需要先上传基础镜像,上传base-centos-v4.0.tar到服务器:

umc平台部署使用(基于UMC的K8S和产品部署说明)(54)

2.导入镜像:

umc平台部署使用(基于UMC的K8S和产品部署说明)(55)

3.打标签,红色为私有镜像库地址,根据实际情况填写:

umc平台部署使用(基于UMC的K8S和产品部署说明)(56)

4.推送到仓库中:

umc平台部署使用(基于UMC的K8S和产品部署说明)(57)

5.查看推送成功:

umc平台部署使用(基于UMC的K8S和产品部署说明)(58)

umc平台部署使用(基于UMC的K8S和产品部署说明)(59)

6.访问UMC镜像信息,新增产品镜像(以ESB为例):

umc平台部署使用(基于UMC的K8S和产品部署说明)(60)

7.上传产品安装包(rar格式):

umc平台部署使用(基于UMC的K8S和产品部署说明)(61)

8.构造镜像、推送镜像:

umc平台部署使用(基于UMC的K8S和产品部署说明)(62)

注意:

1)上传、构造、推送是按顺序操作的,先上传、在构造、最后推送

2)同时将Redis镜像也上传到镜像仓库

umc平台部署使用(基于UMC的K8S和产品部署说明)(63)

2.产品配置

1.初始化产品数据,产品数据初始化有两种方式:

1)通过产品server的bin目录中的startconfigtool文件(Windows下用.cmd文件,Linux下用.sh文件)进行初始化;

2)通过UMC的数据处理功能,注意:如果是ESB产品,UMC初始化需要手动调整db_resource表中esb的连接信息

umc平台部署使用(基于UMC的K8S和产品部署说明)(64)

2.在租户配置中新增方案、环境,建立命名空间:

umc平台部署使用(基于UMC的K8S和产品部署说明)(65)

3.新增Redis组件配置:

umc平台部署使用(基于UMC的K8S和产品部署说明)(66)

4.配置产品参数,生成配置:

umc平台部署使用(基于UMC的K8S和产品部署说明)(67)

5.启动产品:

umc平台部署使用(基于UMC的K8S和产品部署说明)(68)

3.接入配置

1.选择产品环境,切换接入配置:

umc平台部署使用(基于UMC的K8S和产品部署说明)(69)

2.点击“自动补全”,添加默认配置,修改配置,修改server_name和listen:

umc平台部署使用(基于UMC的K8S和产品部署说明)(70)

注意:修改时注意修改X_Forwarded_Port,和listen保持一致

umc平台部署使用(基于UMC的K8S和产品部署说明)(71)

3.查看配置,部署、加载:

umc平台部署使用(基于UMC的K8S和产品部署说明)(72)

4.通过统一接入的Nginx的地址访问产品:

umc平台部署使用(基于UMC的K8S和产品部署说明)(73)

分析总结

K8S云平台的部署模式是目前公司产品和方案统一采用的部署方案,通过云平台模式不仅可以降低产品部署、运维的难度,同时对于服务器的资源监控、统计分析也能发挥作用,实现集中的、一体化的管理。

1.部署总结

本次部署验证是第一次完全通过UMC进行K8S部署安装,虽然之前使用过一键部署,但都是在服务器直接执行脚本的。通过本次通过UMC部署,发现在部署过程中还是有很多需要注意的关键点,后续部署过程中需要加以关注。

1.依赖的问题,因为不同服务器的基础环境不一样,可能有的服务器会缺少一下关键依赖,导致软件部署失败,就需要手动下载依赖包

2.时间不同步的问题,因为环境部署都是基于虚拟机,之前从未出现时间不一致的情况,但是这次部署由于虚拟机是复用的之前的,出现了比较大的时间差,但是K8S部署时集群一致无法创建,排查了很久才发现,后续需要注意将系统时间也纳入服务器检查范围

2.文档资料

由于K8S的部署方式经历多个阶段不断完善,在这过程中也输出了大量的部署文档,这些文档有的是手动部署的,有外围产品部署说明的,也有UMC环境部署的,虽然各个阶段的部署内容都包含了,但后续还是需要对文档进行统一整合归档,形成标准的部署规程,也便于后续项目中进行环境部署,提升环境部署的效率。

3.个人总结

UMC云平台实际是一个K8S的管理工具,通过配置实现对K8S集群的统一管理,通过UMC的管理功能可以将产品方案直接融合到平台中,实现不同产品、不同方案的快速组合,并且随着UMC产品的不断升级,也逐渐完善了一键部署、接入配置、灰度升级等功能,不断优化运维效率。

对于一名技术人员来说,项目管理的能力非常重要,但是对于产品的掌握、环境的优化、运维也是十分重要的,无论是项目中遇到的技术问题,还是在实施过程中评估工作,了解技术、具备一定的技术能力将大大提升对项目的掌握,才能有效地推送项目的进展。

本文由@数通畅联原创,欢迎转发,仅供学习交流使用,引用请注明出处!谢谢~

,