重磅!又一款Docker/K8s管理平台的瑞士军刀

点击上方“终端研发部”,选择星标

回复“资源”,领取全网最火的Java核心知识总结~

原文链接:http://javajgs.com/archives/215

前言

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

1.介绍:

关于云帮的定位,可以参考下官方的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的管理平台,云帮或许也是个选择。

2.安装:

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

3.5新版 https://www.rainbond.com/docs/stable/getting-started/pre-install.html
3.4旧版 https://www.kancloud.cn/good-rain/cloudhelp-community-install/198497

总结一下:

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

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

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

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

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

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

安装云帮

bash<(curl-shttp://repo.goodrain.com/install/3.5/start.sh)

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

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

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

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

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

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

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

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

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

添加计算节点到node集群里

grctl node add-i<计算节点内网ip>--Rolecompute

计算节点uid

uuid=(grctl nodelist|grep<计算节点内网ip>|awk'{print2}')

安装计算节点服务

grctl install compute--nodesuuid 上线计算节点服务 grctl nodeupuuid

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

我这边只介绍基础的

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

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

3.优化:

1. 修改文件描述符限制

vi/etc/security/limits.conf

增加如下内容

root soft nofile102400
root hardnofile102400
soft nofile102400 hard nofile102400

如果要生效需要重启

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-m200Mimage

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

WARNING:Your kernel does notsupport swap >limitcapabilities,memory limited without swap.

可以使用如下命令来解决

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

更多可以参考官方文档:

https://www.rainbond.com/docs/stable/platform-maintenance/performance-tuning/create-a-docker-storage-device.html
旧版文档: https://www.kancloud.cn/good-rain/cloudhelp-community-install/198880
新版文档: https://www.rainbond.com/docs/stable/getting-started/pre-install.html

阅读更多

2019,我迟来的总结

YYYY-MM-DD 的黑锅,我们不背!

别再 select * 了,送你 12 个查询技巧!

Google 开源的依赖注入库,比 Spring 更小更快!

一线大厂的分布式唯一ID生成方案是什么样的?

贼好用的Java工具类库!GitHub星标10k+

程序员对于35岁的担忧:未来真的没有什么好的前景吗?

IntelliJ IDEA 快捷键终极大全,速度收藏!

相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

喜欢就给个“在看

Docker和Kubernetes(K8s)是两个在容器化和云原生应用管理中非常重要的工具。 **Docker**: Docker是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,几乎不需要进行任何修改。Docker的核心是Docker镜像(Image),它是已打包的应用及其运行环境的描述。使用Docker,你可以轻松地创建、部署和管理独立、可复现的软件容器。 **Kubernetes (K8s)**: Kubernetes是一个开源的容器编排系统,它提供了一种标准化的方式来自动化容器化应用的部署、扩展和管理K8s将容器作为服务来抽象和管理,可以处理应用的生命周期、资源调度、服务发现以及故障恢复等复杂任务。Kubernetes通过一组叫做Pod的最小部署单元,以及Deployment、Service、ReplicaSet等更高级别的资源定义来组织和管理容器。 Kubernetes的优点包括: 1. **可扩展性**: 可以轻松扩展应用程序实例的数量,应对流量波动。 2. **弹性**: 当有节点故障时,K8s可以自动重启容器或替换失败的Pod。 3. **资源管理**: 它提供了自动化的资源分配和优化,如CPU、内存和存储。 4. **服务发现与负载均衡**: 内置的服务发现机制,支持自动路由和负载均衡。 **相关问题--:** 1. DockerDockerfile的区别是什么? 2. Kubernetes有哪些主要组件? 3. 如何在K8s集群中部署和更新应用程序? 4. Docker和Kubernetes的结合能带来哪些优势?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值