文档中心 > 聚石塔

【天艾信息】云原生迁移经验分享

更新时间:2023/06/25 访问次数:5404

一、K8S 的优势

1.1 应用扩缩容变得容易


随着业务的增长,或碰到大促,如果需要扩容,只需要购买ECS加入集群,通过阿里官方控制台直接扩容(见图)就可以达到增加业务的处理能力,速度相当之快,减少以往好多繁琐的步骤。现在只需要有足够的资源,几秒内就可以完成扩容,大大节省运维时间。


image.png


1.2 资源节省


通过K8S强大复杂的分配资源原则,尽可能的利用集群各节点的资源,让空余CPU、内存尽量集中在一起,减少内存碎片化, 可以部署更多更大内存应用。


1.3 运维效率提升


(1)便捷UI操作,无需关心K8S/docker等细节。

(2)ECS只是资源的载体,除此之外完全无视,不再需要记住ECS的密码。

(3)通过镜像,使用同镜像各容器应用配置完全一样,防止之前运维人员配置错误造成的影响。

(4)实现分批发布,替换原通过svn、jenkins发布方式,更加安全、快速。

(5)不再登记应用部署在哪里,维护一大堆文件夹。

(6)通过容器应用监控,了解应用的运行情况,减少之前一台ECS布署多个应用,只能监控到ECS的 性能,到不了每个应用。


image.png


二、了解集群


云原生迁移中,首先是要创建集群,集群是一组ECS的集合,作为一个整体向ISV提供一组网络资源,这些单个的ECS系统就是集群的节点(node)。


1.1 建几个集群,集群中有多少台ECS为合适?

这可能要根据各自的情况来定,对于我们来说,我们还是会习惯性根据功能模块来划分,WEB应用 (用户访问操作系统)一个集群,跟后台定时任务分开,后台定时任务可能又会分很多功能点,如果这 个功能本身就比较大,比如原来就需要10几台以上ECS机器来支持,那我们会单独为这功能点建立一个 集群。这样做的目的主要是为了好管理,耦合度低一点,一旦出问题不会影响其它业务,另外也更容易

计算该集群是否需要增加机器(我们用的是竞争模式)。集群添加多少ECS机器?当我们了解K8S:对于 N台ECS的集群来说,不可调度CPU = N*0.35C + 1C;不可调度内存 = N*500M(折损)+ N* 800M(系统预 留)+ N*100M(系统proxy组件占用) + 1000M(集群其他组件),为了减少资源的操失,原则上应选择大 机器,但有时要考虑到每台ECS的内外宽带的限制,ECS故障影响面,会平衡下不一味选择大机器。


1.2 建立集群时,Pod 和 Service网段的选择需要注意什么?

网段代表了这个集群的可用IP数,也就是容器的个数,说下我们碰到的问题,之前我们建了个集 群,网段为192.168.1.0/24,这说明了有256个ip可用,我们加了5台ECS,发布70个实例(容器),我们 希望这70个实例能平均分配到5台ECS来去,实际情况不是这样的,这70个实例全分配其中2台机器上, 另外3台,一个都没有部署,原因是什么呢,原来ECS可用IP是预分配的,这256个ip只够分配到2台机 器,所以如果集群下面的ECS比较多的话,尽可能选择大的网段,后面我们用另一网段10.1.0.0/16重建 集群,就能达到平均部署到不同的宿主机上。


三、镜像制作

3.1 官方镜像


官方提供了好些镜像,如果没有一些特殊的需要可直接使用,也提供健康检查机制,容器内我们的应 用如果挂掉,可通过这种机制自动重启。


3.2 制作自己的私有镜像


如果我们软件本身需要用到一些第三方组件的,比如字体需要支持黑体或截图的组件等等,那就需 要我们来制作镜像了,制作镜像可以更加灵活适应自身的需求。简单描述下我们如何制作带jdk环境的 centos的镜像:

1)安装之前,建议先yum -y upgrade更新软件包。

yum -y upgrade

2)docker安装脚本

安装 Docker

只需通过以下命令即可安装 Docker 软件:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y install docker-io

可使用以下命令,查看 Docker 是否安装成功:

docker version

若输出了 Docker 的版本号,则说明安装成功了,可通过以下命令启动 Docker 服务:

service docker start 启动
service docker restart 重启

3)配置阿里云加速器

参考阿里云官方:https://cr.console.aliyun.com/undefined/instances/mirrors

4)拉取centos镜像

docker pull centos

默认latest,我们拉取的是7的版本,指令如下:docker pull centos:7。

5)删除镜像

docker rmi -f {repository}:{tag}
docker rmi -f {image id}

6)启动容器

只需使用以下命令即可启动容器:

docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash

这条命令比较长,我们稍微分解一下,其实包含以下三个部分:

docker run <相关参数> <镜像 ID> <初始命令>

我们提前在/root/software放置了jdk安装包,进入镜像后在/mnt/software可找到这个安装包进行 安装

7)准备好安装软件放置 /root/software/,进入容器安装

8)制作常驻程序

自已制作镜像有个需要注意的,需要有个常驻程序,证明容器是存活动的,我们在目录 /acs/user下生成start.sh,里面内容为:

#!/bin/sh
while :
do
sleep 60
Done

9)容器生成镜像

不带入口执行,不带环境设置:

docker commit 8bae2d412846 aitui/app:1.0

带入口执行,带环境设置:

docker commit -c='ENTRYPOINT ["/acs/user/start.sh"]' -c='ENV LC_ALL zh_CN.UTF-8' 7356730495d8 aitui/app:1.0


 

FAQ

关于此文档暂时还没有FAQ
返回
顶部