业务容器化改造实践(二)

来源: 云巴巴 2019-09-18 11:06:36

在上一篇文章《业务容器化改造实践(一)》中,我们讲到了业务容器化改造的思路和方案,业务容器化改造主要是从三个方面进行:进行业务微服务拆分、业务发布流程自动化和构建容器云管理平台。同时介绍了方案中选用的技术或工具,使用Kubernetes构建容器平台,用Harbor构建镜像仓库,用Gitlab作为代码仓库,用Jenkins作为CI/CD工具集。

本篇文章用于介绍利用Rancher、Harbor构建Kubernetes集群和私有镜像仓库,共同组成容器云管理平台,后续将以此平台为基础实施业务的容器化改造。

容器云管理平台的方案及规划

容器云管理平台的方案架构

我们选择Kubernetes作为容器平台,除了官方开源的Kubernetes平台之外,各大公有云厂商也都推出了公有云版本的Kubernetes平台,比如:阿里云的ACK(Aliyun Container Service for Kubernetes)、腾讯云的TKE(Tencent Kubernetes Engine)、华为云的CCE(Cloud Container Engine)、谷歌的GKE(Google Kubernetes Engine)、亚马逊的EKS(Amazon Elastic Container Service for Kubernetes)、微软的AKS(Azure Kubernetes Service)等。还有一批厂商推出了可私有部署的kubernetes平台或管理平台,比如:IBM的ICP(IBM Cloud Private)和Rancher公司的RKE(Rancher Kubernetes Engine)都是可以私有部署的Kubernetes平台。另外Rancher公司的Rancher产品是一款Kubernetes的管理平台,通过该平台我们可以在私有的物理机、虚拟机或者公有云的云主机上快速安装部署Kubernetes平台,也可以直接接管公有云厂商提供的公有云版本的Kubernetes集群。

无论是使用公有云的Kubernetes平台还是自建私有的Kubernetes平台,其技术架构基本上一致,都是以服务器层为基础,在其上构建Kubernetes平台,利用命令行或者web界面调用其中封装好的API接口来操纵和使用Kubernetes集群。二者的区别主要是公有云厂商提供了所有的IaaS层资源,用户在其上购买云主机,一键部署Kubernetes集群,然后使用,不用关心底层的实现和维护问题,同时公有云厂商提供了完善的配套工具和解决方案:如监控、日志、镜像仓库、应用商店等;而自建私有的Kubernetes平台,需要用户自己准备相关的服务器,然后在其上安装Kubernetes集群,再根据需要在其上搭建配套的监控、日志、镜像仓库、应用商店等,同时用户需要根据实际情况去维护自下而上所有的系统和服务。

上图是容器云管理平台的方案架构,我们利用Rancher自建私有的Kubernetes平台,同时利用Harbor搭建私有镜像仓库,最终建好的容器云管理平台主要由四层组成:第一层为基础设施层,包含了服务器、存储、网络等基础资源,其中服务器可以是物理机,基于VMware、OpenStack、CloudStack的虚拟机,甚至是来自公有云的云主机。第二层是容器基础设施层,即docker层,是在服务器主机的操作系统上安装Docker,将底层的环境和资源容器化,形成可以供容器使用的计算资源、存储资源、网络资源等。第三层应用编排和资源调度层,即Kubernetes层,利用Rancher构建Kubernetes平台,将Docker层的资源调度起来,同时可以编排容器,决定容器可以运行几个副本,在哪台主机上运行,遇到压力峰谷时自动扩缩容。最上面一层是应用管理层,即用户可以通过界面对整个平台进行管理,管理台中同时可以提供配套的管理工具,如:CI/CD工具集、镜像仓库、应用商店、监控、日志、多租户管理等。

容器云管理平台的规划

首先明确一下我们需要搭建的内容:一套Kubernetes平台、一套私有镜像仓库、一套CI/CD工具集、一套代码仓库。其中CI/CD工具集和代码仓库可以直接在Kubernetes平台中运行,因此不必单独搭建。为了方便管理企业自身的业务镜像,同时搭建Kubernetes平台的时候就已经用到很多镜像,所以私有的镜像仓库可以独立部署。利用Rancher搭建Kubernetes平台的时候,Rancher管理台自身可以作为一个单独的容器来运行,也可以先用Rancher的RKE搭建一套Kunernetes集群,在集群中运行高可用的Rancher管理台。

Kubernetes集群中,部署容器应用时,如果涉及到应用数据的持久化,一般可以采用给容器挂载外部目录的方式来实现,即将外部的目录(来自宿主机的目录,或者是NFS等存储)映射到容器中的目录上,容器中的数据就可以存储到外部的目录中,从而实现了数据的持久化。考虑到容器可能会在任意的一个宿主机上运行,只要容器启动就需要访问到对应的目录,因此不能直接使用宿主机操作系统上的目录,而要使用一个所有宿主机都能够访问到的共享的目录或存储。解决方案有多种,可以使用基于宿主机本地硬盘的分布式存储(如Ceph),可以使用外部的存储设备(如NFS等),或者使用云厂商提供的云硬盘。我们这里采用NFS的方式来提供共享的存储。

因此,我们使用一台服务器来运行私有镜像仓库和Rancher管理台,三台服务器运行Kunernetes集群,服务器外接NFS共享存储,在Kubernetes集群中运行Jenkins、Gitlab以及业务应用。最终容器云管理平台的规划如下:

使用Rancher创建Kubernetes集群

服务器及操作系统准备

准备四台服务器,安装好Linux操作系统,Linux内核要求在3.10以上,推荐的操作版本为:RedHat/CentOS 7.4以上、Ubuntu 16.04以上。

事先规划好主机名、IP,以及Rancher管理台和Harbor镜像仓库的域名,并在/etc/hosts中或DNS中做好配置。

假设Rancher管理台的域名为rancher.yuandingit.com,Harbor镜像仓库的域名为harbor.yuandingit.com 。

安装 Docker

所有服务器上均安装Docker,目前Rancher及Kubernetes支持的docker版本有操作系统自带的docker 1.13,或者docker-ce 17.03、18.06、18.09等。

以上为笔者编写本文时查询的结果,未来可能有变化,具体的可自行查询官方文档进行确认。下面为在CentOS操作系统中安装docker-ce的方法,我们使用清华大学的YUM源进行安装。

安装 Rancher Server

本次规划中,Rancher Server和Harbor在一台服务器上,由于二者均需要使用80和443端口,因此可以将Rancher Server的端口调整为8080和8443,为了保证Rancher Server的数据持久化,可以挂在本地的目录给Rancher Server的容器,因此单容器运行Rancher Server管理台的命令如下:

成功运行之后,Rancher Server将以单容器的形式在主机上运行,可以通过https://xx.xx.xx.xx:8443 或者 https://rancher.yuandingit.com:8443 访问Rancher Server的管理台。

登录到Rancher Server中只有,可以创建Kubernetes集群,在添加集群中选择“自定义”,之后可根据节点的角色,复制相关的命令到节点上执行即可。

部署Harbor镜像仓库

安装 Harbor

Harbor镜像仓库由一系列服务组成,主要包含镜像仓库、数据库、门户、代理等,这些服务均以容器的形式运行。Harbor使用的是docker-compose进行编排,因此我们需要安装docker-compose和harbor。

docker-compose是二进制的命令,直接将命令的路径添加到PATH即可使用。harbor软件包解压后需要修改harbor.cfg文件的配置,主要修改镜像仓库的域名地址(hostname)及密码(harbor_admin_password)

配置文件中的hostname为harbor镜像仓库的地址,该地址也是该镜像仓库中镜像名称的前缀,比如配置为:harbor.yuandingit.com 。

配置完成后可按照如下方式执行安装:

# 执行install.sh脚本进行安装,如果需要同时安装chart包管理和镜像扫描功能,可以加对应的参数

./install.sh --with-chartmuseum --with-clair

安装完成后,会启动若干个容器,占用操作系统的80、443、4443端口,可以通过https://xx.xx.xx.xx 或者 https://harbor.yuandingit.com 访问镜像仓库的管理台。

使用 Harbor

如果harbor采用http协议对外提供服务,其他节点在操作系统级别访问镜像仓库时,需要在本地的docker中配置insecure-registries参数,将镜像仓库添加到不安全的仓库列表中,之后才能正常使用该镜像仓库中的镜像。

# 修改 /etc/docker/daemon.json 文件,加入一行 "insecure-registries": ["harbor.yuandingit.com"],最终文件内容如下:

{

"insecure-registries": ["harbor.yuandingit.com"]

}

# 重启docker进程  

systemctl daemon-reload && systemctl restart docker

Harbor镜像仓库采用的是项目管理,即一个Registry中拥有多个项目,每个项目中拥有多个仓库(Repository),每个镜像仓库拥有多个标签(Tag),因此在使用harbor私有镜像仓库之前,需要在仓库中建立项目。登录Harbor之后,点击“新建项目”→填写项目名称,勾选访问级别。

Harbor私有镜像仓库中镜像的命名格式为:镜像仓库地址/项目名称/仓库名称:标签 ,比如镜像 harbor.yuandingit.com/test/test-image:v1.0 的各部分组成为:

镜像仓库地址:harbor.yuandingit.com

项目名称:test

仓库名称:test-image

标签:v1.0

在操作系统上,常用的镜像操作命令如下,供参考:

# 制作名称符合要求的镜像:假设为 harbor.yuandingit.com/test/test-image:v1.0

docker build -t harbor.yuandingit.com/test/test-image:v1.0 .

# 将已有镜像重命名为符合要求的镜像  

docker tag source-image:v1 harbor.yuandinit.com/test/test-image:v1.0

# 登录harbor私有镜像仓库,输入用户名和密码

docker login harbor.yuandingit.com

# 上传docker镜像  

docker push harbor.yuandinit.com/test/test-image:v1.0  

# 下载使用镜像  

docker pull harbor.yuandinit.com/test/test-image:v1.0

Rancher 访问 Harbor

Rancher与Harbor配套使用时,由于Harbor具有用户名密码认证,Rancher不能直接从Harbor镜像仓库下载镜像。

有两种方式解决此问题:一种是把Harbor中建立的项目设置为“公开”,避免进行访问验证,推荐在测试环境使用;另外一种是在Rancher中建立对应的Harbor镜像仓库的凭证secret,但是该配置只能针对某个命名空间或某个项目,每个命名空间都需要设置,推荐在生产环境使用。

配置secret也有两种方式,具体如下:

通过Rancher控制台设置镜像仓库secret的方法为,进入Kubernetes集群的一个项目中,点击“资源”→“镜像库凭证”→“添加镜像库凭证”→填写名称、镜像仓库地址、用户名和密码。

或者通过如下的命令创建:

# kubectl create secret docker-registry \  

# harbor-yuandingit-com \                             # secret的名称  

# --namespace=cicd \                                 # secret所属的命名空间  

# --docker-server=harbor.yuandingit.com \      # harbor私有镜像仓库的地址  

# --docker-username=admin \                    # harbor私有镜像仓库的用户名  

# --docker-password=xxxxxx                        # harbor私有镜像仓库的密码  

# --docker-email=xxx@xxx.com                      # 邮箱,必须填写

kubectl create secret docker-registry \  

harbor-yuandingit-com \  

--namespace=cicd \  

--docker-server=harbor.yuandingit.com \  

--docker-username=admin \  

--docker-password=xxxxxx \  

--docker-email=xxx@xxx.com

至此,我们在所有节点上安装了docker,安装了Rancher并创建了Kubernetes集群,同时还安装了Harbor私有镜像仓库,最基础的容器云管理平台已经搭建完成。后续我们将以此为基础安装Jenkins和Gitlab,并构建CI/CD流水线,实现业务发布流程的自动化,请继续关注。

更多产品了解

欢迎扫码加入云巴巴企业数字化交流服务群

产品交流、问题咨询、专业测评

都在这里!

 

评论列表

为你推荐

标准立项,生物特征识别多模态又进一步!

标准立项,生物特征识别多模态又进一步!

2月27日,蚂蚁金服宣布在电气和电子工程师协会(IEEE)成功申请成立“移动设备生物特征识别”标准工作组,并立项“生物特征识别多模态融合”国际标准,这标志着中国在生物识别国际标准输出上又向前迈进了一步。

2020-04-14 17:50:26

不吹不黑,聊聊以AI为核心的企业无线业务重构

不吹不黑,聊聊以AI为核心的企业无线业务重构

面对传统网络运维中基于管理员的强管理,网络中的风险、故障不可视、出现问题后被动式响应等一系列问题,以AI为核心的智感网络开始出现。信锐技术旗下的Turbo Sense 智感AI系列产品采用了智感AI射频芯片作为支撑,WiFi6协议加持,具有独立射频、模拟终端、主动感知的能力。

2024-03-27 13:54:26

为什么人工智能总是和伦理道德脱离不开

为什么人工智能总是和伦理道德脱离不开

现在,以新基建为核心,我们正在经历着一场规模空前的数字化、智能化革命。引领这场改变中国未来的革命就是说谁掌握了AI。 自2007年以来,人类生产力陷入低增长,甚至停滞状态,美国更创下200年来最低增速纪录,所以近十年来,全球经济学界一直被一大谜题困扰,想

2022-11-22 16:07:55

自动直播低成本获客,元筑数字人解决商家直播痛点

自动直播低成本获客,元筑数字人解决商家直播痛点

要怎样才能选择一款不用担心体力和心力,又逼真的数字人主播,请到商家的直播间里来实现自动直播呢?

2024-03-13 17:14:36

关于RPA常见的误区,你知道吗?

关于RPA常见的误区,你知道吗?

随着RPA(机器人流自动化)的发展,RPA技术给企业带来了诸多好处。然而,围绕RPA的概念与原理,企业如何运营我们还存在着一些误会,这些误解的存在,可能会给那些寄希望于RPA技术来改变其流程管理的企业或组织带来不确定性乃至误导。

2020-03-18 15:18:55

数字校园时代来了,腾讯微卡连接高校全景服务

数字校园时代来了,腾讯微卡连接高校全景服务

认清数字校园,结合时代需求探索数字校园建设方向是所有教育行业工作者、学校义不容辞的责任。

2024-03-27 10:29:04

严选云产品

深信服SD-WAN组网解决方案 深信服SD-WAN组网解决方案,分支设备具备安全防护能力,保障分支基础设施安全及核心财产安全。混合灵活组网,实现分支间、分支到总部、分支到云端的智能应用调度及链路优化,提高业务访问体验。引入SD-WAN控制器实现集中管控并简化部署流程,提高部署运维效率。
京东云星盾安全加速SCDN 安全加速,是京东云推出的一体化分布式安全防御产品,提供免费 SSL 证书,集成 Web攻击防护、CC 攻击防御、BOT 机器人分析,并将内容分发加速能力融于一身。在边缘节点注入安全能力,形成分布式的安全加速网络,让您的业务更安全、体验更流畅。适用于所有兼顾安全和内容加速的业务。
中服云工业互联网平台 中服云工业互联网平台,产线设备感知、生产流程管理、设备监控运维、数据自动化分析展示与一体的产品组合。建立统一的工业PaaS支撑底座,建设面向开发、运维、运营、工具与服务等能力子系统,最终以统一平台门户向各类用户提供服务。
长亭科技洞鉴X-Ray安全评估系统 洞鉴(X-Ray)是一款从资产视角出发,集Web漏洞扫描、主机服务漏洞扫描、基线合规检查于一体,同时可以实现资产和漏洞双闭环管理的安全评估系统。
CLOUDFIT智能多云管理平台 CLOUDFIT多云智能平台使客户能够实时监控、分析和管理云资产、成本、安全、性能效率、可靠性和卓越运营。CLOUDFIT显著降低客户18%-50%的云资源费用,通过更有效的资源利用率和更明确的购买建议消除闲置实例。
客晓晓智能服务机器人 客晓晓智能服务机器人,叠加客户属性、消费息、企业微信自定义标签圈定目标群体,智能过滤不符合条件客户。形成公域下单私域接收,自动操作; 再到私域维护,反哺公域的闭环路径,标准化服务指引,智能识别客户上下文语义信息并答复,优质答案推荐辅助提升员工能力。

甄选10000+数字化产品 为您免费使用

申请试用