Docker优化的方法有哪些

本篇内容主要讲解“Docker优化的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker优化的方法有哪些”吧!

一.介绍

和之前介绍的Crane不同,来自好雨云(GoodRain)的云帮(CloudHelp目前已改名RainBond)是基于K8S的,说实话,感觉比Crane的开源态度更好点,看得出来是认真在弄的。Crane我发的issue至今无人回复,感觉应该是凉了

关于云帮的定位,可以参考下官方的FAQS

Q: 云帮开源版的定位是什么?

A: 中小企业CI/CD平台,生产环境的应用管理平台。云帮不是拉近开发和运维的距离,而是让开发和运维做他们本来应该做的事情。开发对程序和业务负责,运维对资源负责,云帮作为开发和运维的助手。

Q: 发布开源版的目的是什么?

A: 希望能有更多的企业和个人爱好者享受到容器及云计算技术所带来的高效与便利。通过社区版让广大的用户了解云帮产品的设计理念。

Q: 开源版发展规划

A: 云帮是个平台级的产品,即使是开源版我们首要关注的是稳定性,产品设计会本着 功能简洁够用 的原则,降低使用门槛,让用户以最简单的方式来体验容器技术带来的红利。

Q: 云帮企业版是否有生产环境运行的案例?开源版是不是只是演示和测试的“玩具”?

A: 说到这个问题,我想需要明确一下大家判断一项技术或产品在“生产环境” 运行的标准是什么。只有对这个标准或定义明确了,讨论这个问题才有意义。咱们从稳定性、可维护性、扩展性、支持服务四个方面来说明:

1. 稳定性:云帮公有云实际上就是我们在公有IaaS平台之上运行的一套云帮企业版。云帮公有云已上线运营超过700天,没有发生过一次因底层程序而造成的事故,SLA可达99.999% ,开源版基础模块的核心代码与企业版 100%一致。

2. 可维护性:云帮基础技术单元是Docker,服务编排和调度使用kubernetes,这两款软件是目前关注度最高的开源项目,文档和技术社区都非常成熟。云帮的其他模块我们都采用Docker镜像的方式进行打包,利用kubernetes内部的高可用机制保证高可用。因此平台的维护成本非常低,再加上好雨技术团队多年的平台维护经验,云帮的部署、监控体系都非常的完善。

3. 扩展性:云帮平台云生支持分布式部署,借助kubernetes的容器调度机制,可以数秒钟启停上千个容器。平台容器主机也支持动态伸缩,可以在3分钟内上线新的容器主机。

4. 服务支持:针对开源版我们提供及时的产品更新服务,平台bug,安全补丁会按照开发进度第一时间修复。提供社区、微信/QQ群在线支持,并提供完备的文档支持。
另外云帮企业版目前主要是私有化项目,已超过100家企业部署了企业版,如: zdoo.com 、姚记彩票网等。云帮社区版也有不少中小企业在生产环境中运行。

不说其他的,但是可以看出云帮是会持续维护的,起码不会突然凉凉,不是为了开源而开源的玩具,所以如果需要一个基于K8s的管理平台,云帮或许也是个选择。

二.安装

准备工作直接看官方文档吧 为啥会有3.4和3.5呢,因为我这个教程放了一阵子,然后发现官方发布了3.5...那么我就介绍3.5好了,毕竟3.4实验性质更多一点

总结一下:

  • CentOS7的系统(必须是systemd的,Debian理论上可以,但是推荐CentOS7)

  • 配置足够(要求配置不低,实际使用建议集群)

  • NTP校时(配置ntpd以及修改时区)

  • 服务器必须配置静态IP,确保不会因为DHCP在重启后发生IP变动

  • 环境干净(官方建议装了Docker和kubelet的全部卸载了再来)

  • 最好下面安装完后就不要去修改hostname(非要改请同时修改/etc/host和/etc/hostname,并保证各节点不重复)

# 安装云帮
bash <(curl -s http://repo.goodrain.com/install/3.5/start.sh)

基本上算是一键安装了(如果你环境没问题的话)

可以看出来这个gr-docker-engine似乎是好雨云基于Docker 1.12的修改版,具体修改了啥就不清楚了,也可能是单纯的重新封装.

Docker优化的方法有哪些  docker 第1张

Hmm,这个安装比较极其漫长,请耐心等待,并且建议挂个screen防止断线

PS.如果发生长时间卡住不动的情况,请参照以下官方解决方案

检查当前任务是否生成相关日志文件,若未生成,则可以新开一个终端,执行systemctl restart rainbond-node
如重启node后以及未执行,使用`grctl tasks get <任务>` 检查依赖任务是否执行成功,若未成功,则检查依赖任务执行日志

Docker优化的方法有哪些  docker 第2张

完成后访问显示的URL,也就是http://服务器IP:7070/

第一次访问请注册(默认第一个注册为管理员)

Docker优化的方法有哪些  docker 第3张

Docker优化的方法有哪些  docker 第4张

注册完自动登录,界面还是挺好看的

Docker优化的方法有哪些  docker 第5张

添加计算节点的命令如下,这个是在管理节点上运行的,只要确保你为目标机器配置了SSH免密登陆(建议测试下能够在管理节点上直接登录过去),然后直接运行就OK了

# 添加计算节点到node集群里
grctl node add -i <计算节点内网ip> --Role compute
 
# 计算节点uid
uuid=$(grctl node list | grep <计算节点内网ip> | awk '{print $2}')
 
# 安装计算节点服务
grctl install compute --nodes $uuid
 
# 上线计算节点服务
grctl node up $uuid

云帮的使用花样还是比较多的,完整的请查看官方文档——>传送门

我这边只介绍基础的

Docker优化的方法有哪些  docker 第6张

Docker优化的方法有哪些  docker 第7张

这个是直接从官方的示例部署的,需要知道的是,每个云帮都会由好雨云分配一个二级域名,泛解析到你的节点上,所以访问用的是那个域名,似乎是可以通过修改/etc/goodrain/console.py中的WILD_DOMAIN来变更,不过不确定可行性。

另外的从Dockerfile啊,DockerCompose啥的创建应用就不提了,自己去玩玩吧。这个在我看来没有给你过多的选项,面板只是作为应用管理的存在,(服务器啥的)设置啥的全都是帮你固定的(自动配置),也许企业版有更多的设置,但是在我看来似乎是够用了,不用你去操心和折腾也许正是团队或者公司需要的(?)

三.优化

1、 修改文件描述符限制

vi /etc/security/limits.conf
#增加如下内容
root soft nofile 102400
root hard nofile 102400
* soft nofile 102400
* hard nofile 102400

如果要生效需要重启

2、 内核参数调优

vi /etc/sysctl.conf
#增加如下内容
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets=5000
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog=1024
net.ipv4.tcp_synack_retries=2
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
net.ipv4.conf.lo.arp_announce=2
vm.swappiness=10
vm.vfs_cache_pressure=50
vm.overcommit_memory=1
 
net.core.somaxconn = 65535
net.netfilter.nf_conntrack_max = 655350
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
 
#使修改马上生效
sysctl -p

3、 增加NFS挂载服务并发数

vi /etc/sysctl.conf
#增加如下内容
sunrpc.tcp_slot_table_entries = 128
 
#使修改马上生效
sysctl -p

4、 开启容器swap使用限制

如果在启动容器时只指定-m而不指定--memory-swap,那么--memory-swap默认为-m的两倍,比如

docker run -it -m 200M image

表示容器最多使用200M的物理内存和200M的swap。 如果提示如下错误,可能是因为主机上默认不启用cgroup来限制swap分区

WARNING : Your kernel does not support swap limit capabilities, memory limited without swap.

可以使用如下命令来解决

echo GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1" >> /etc/default/grub 
grub2-mkconfig -o /boot/grub2/grub.cfg >/dev/stdout 2>&1

到此,相信大家对“Docker优化的方法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是蜗牛博客网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram