DockOne微信分享(七十五):应用容器化之Kubernetes实践

  • 时间:
  • 浏览:1
  • 来源:大发5分快乐8APP下载_大发5分快乐8APP官网

A:Dubbo服务不需用暴露主机的IP和地址,只需用知道容器地址即可。有有哪些服务完全都在注册到ZooKeeper上边,通过ZooKeeper完成服务发现,Kubernetes不能根据暴露端口进行调度,当然一点应用要求容器能获取到宿主机的IP地址,这块亲戚朋友对Kubernetes做了一点修改,需用动态注入诸如宿主机IP,宿主机主机名信息到容器的环境变量中。
Q:ECP的定位和避免目标相比较目前亲戚朋友在用传统的云平台避免方案来讲下? 

Resis Master的Yaml文件如下,其中为了数据的迁移恢复和重建使用Glusterfs存储,当然你也需用加带一点存储,单个主从集群可能无法承载这么 来太大的请求,需用通过当前比较心智性心智心智成长期期的句子期的还还有一个 多多方案Twemproxy,通过代理实现数据分片,不能达到还还有一个 多多不错的效果:

Yaml文件如下,这上边有还还有一个 多多地方需用注意:

  1. 每还还有一个 多多Kafka的broker都还还有一个 多多多集群内唯一的broker_id,所以只能把整个Kafka集群装下 还还有一个 多多RC上边,而需用通过不同RC去分别定义每还还有一个 多多broker;
  2. Kafka依赖ZooKeeper,在这里亲戚朋友通过环境变量的最好的最好的最好的办法将域名传递到容器内;
  3. 这里这么 配置Kafka的持久化存储,可能每个Topic包含还还有一个 多多或多个partition,可能单个broker宕调无需影响集群,但会 当broker重建都在自动同步数据,传输传输速率非常快。

Redis

Redis是还还有一个 多多开源(BSD许可)的,内存中的数据行态存储系统,它需用用作数据库、缓存和消息上边件。Redis容器测试过程中,有几点性能难题图片需用注意,第一是Redis最大内存,可能不设置可能会总出 将内存耗尽的难题图片,第二是数据ttl时间设定以及清理keys策略,有有哪些完全都在为了避免内存严重不足时使用交换分区导致 性能下降,第三是数据持久化使用RBD,相对于较大文件aof持久化,RBD更适合快照恢复。可能是业务量不大的场景需用使用redis主从行态,如下图所示:

本文来自云栖社区合作者协议伙伴Dockerone.io,了解相关信息需用关注Dockerone.io。

当前亲戚朋友正在测试的是Redis 3.x的集群功能,每还还有一个 多多Redis完全都在还还有一个 多多service(slave默认不接受读写,需用执行readonly不能读),省去proxy代理提高传输传输速率。本身集群方案通过redis-trib.rb的create子命令构建, 在客户端配置所有service地址就需用操作集群上边的数据,但整个操作过程有还还有一个 多多地方需用通过手工完成,尚待完善:

  1. 整个集群创建redis-trib.rb是通过手动完成,这么 服务发现和自动化;
  2. 增加加点需用手动执行redis-trib.rb reshard分配slot。

Yaml文件如下

容器是本身轻量级的虚拟化技术,拥有持续集成、版本控制、可移植性、隔离性和安全性等优点,这么 来太大的应用跑在容器上边。但完全都在其严重不足,并完全都在所有场景都适合如高性能计算,可能满负荷运行的应用这么 必要虚拟化,一点对IO等运行环境要求比较高应用不适合容器化如Oracle数据库。容器给应用守护系统进程提供了还还有一个 多多独立的运行环境,并完全都在像虚拟机那样提供一套完全的操作系统,这是容器和虚拟机最大的区别,所以在用户在使用虚拟化如KVM、Vmware但是很少会担心到应用需用跑到虚拟机上边,通常所以针对虚拟化环境做性能调优,如KVM的CPU绑定、内存气球以及巨型页等。但应用Docker化更加复杂,除了避免虚拟机存在的计算、存储、网络以外难题图片,还需用避免Docker自身的难题图片,如:Docker相对与虚拟机的脆弱性、应用守护系统进程依赖的系统调用在Docker中这么 做限制,还有Docker镜像制作以及应用Docker化但是日志和性能整理等难题图片。Docker通过cgroup限制CPU和内存的使用,CPU限定通常是设置权重,无须能让还还有一个 多多容器获得选泽1Ghz的CPU,当然你也需用使用cpuset绑定到指定的物理核上,内存使用中不仅要设置内存大小需用限定交换分区的大小,这点怪怪的要,譬如MongoDB在内存严重不足时一定量使用交换分区。Docker相对短暂的生命周期决定了无需使用持久存储,容器挂了,存储的数据也会相应的丢失。可能数据需用持久化如MySQL的DBData数据,则需用把数据输出到组织组织结构的存储设备上,需用通过挂载NFS可能GlusterFS可能AWS存储等,在Kubernetes的PV的后端存储可能需用支持上述文件系统。用户也需用根据不同存储去实现Docker volume plugin,比较流行有Rancher/Convoy和Flocker,后者支持数据迁移,这为容器的迁移奠定了数据基础。容器应用之间相互依赖:Web应用访问数据库,API接口调用等,所以网络需用不能互通但会 支持多租户隔离,当前Docker网络有两大阵营,CNM和CNI。其中Calico需用有无 脚踏两只船的,它需用与Kubernetes集成,相比Overlay网络在网络传输过程还是有明显优势的,如下图所示,减少了包封装提高了网络传输和包避免传输传输速率。

天云skyform ECP平台是基于Kubernetes Calico的容器管理平台,具有日志整理分析、性能监控、镜像管理等一套完全的容器管理平台。上边介绍了Docker相关的一点相关知识,下面介绍具体的应用在Kubernetes平台上的集成。我把应用集成难度分还还有一个 多多等级:最容易是应用本身具有服务发现机制如Dubbo,盐晶 的支持自动扩缩容,这么 在Kubernetes集成可能变的非常简单;大次责应用属于需用修改配置就能在容器上边运行,最困难的是需用对应用进行二次开发可能对平台二次开发的应用。

ZooKeeper

ZooKeeper是还还有一个 多多高性能、高可用的分布式协调服务。整个ZooKeeper集群的对外提供2181服务端口,节点之间数据同步和选主分别使用的2888和3888端口。每还还有一个 多多ZooKeeper节点都需用个一点节点通信,所以都需用还还有一个 多多固定的IP地址,通过Kubernetes服务提供的虚IP(可能使用集群内可能部署DNS则配置域名即可)互相通信,行态如下图所示:

以上内容根据2016年8月9日晚微信群分享内容整理。分享人陈晓宇,北京天云融创软件技术有限公司,研发工程师,多年云计算以及分布式系统开发经验,对CloudStack、OpenStack等云管理系统有深入了解。长期致力于应用Docker化、Docker集群化方案的设计与研发。 DockOne每周都在组织定向的技术分享,欢迎感兴趣的同学加微信:liyingjiesz,进群参与,您有想听语句题可能想分享语句题需用给亲戚朋友留言。

可能是MongoDB的分片集群,行态如下所示:

每还还有一个 多多configsvr配置服务和Mongos路由服务完全都在通过service提供固定的访问接口。mongos通过configsvr域名配置。通过服务发现的脚本动态配置将副本集转成分片,本身分片的功能测试可能通过,但性能测试还在进行中。上边一点应用完全都在通过容器组织组织结构传递配置参数可能启动脚本修改应用的配置,但有的应用通过本身最好的最好的最好的办法是无法完成的,需用通过对应用可能对平台的改造不能完成,譬如IBM的任务调度平台OpenLava,它通过/proc/meminfo和/proc/cpuinfo获取内存和CPU,Docker这次责通过是挂载的主机proc文件系统,导致 应用在容器内读取是主机的CPU和内存,此时通过修改OpenLava代码使其从/sys/fs/cgroup/cpu/cpu.shares 获取CPU核数从/sys/fs/cgroup/memory/memory.limit_in_byte获取内存值,有的应用(多个pod)之间需用共享IPC,这次责功能Kubernetes是这么 的,需用通过平台改造去达到应用需求,还有应用需用根据IO去调度,有有哪些完全都在亲戚朋友ECP平台基于Kubernetes加带的功能。

Q&A

Q:请问在Kubernetes架构下 搭建分布式服务框架如Dubbo 需用将主机地址和暴露端口注册到ZooKeeper上,本身主机地址和暴露的端口亲戚朋友是如何避免的,即容器内的应用如何获取Docker宿主机地址?

原文发布时间为:2016-08-11

原文标题:DockOne微信分享(七十五):应用容器化之Kubernetes实践

Docker OVS SDN的最好的最好的最好的办法达到容器和容器以及容器和主机之间的网络互通也是非常好的设计思想,通过实现Docker的Network Drivers接口将容器挂到OVS上,通过ryu、Floodlight可能OpenDaylight等SDN控制器动态整理流表的达到网络互通;再结合iptables实现网络隔离。可能想实现大二层跨机房网络互通,需用集合Vxlan等Overlay技术。

本文作者:陈晓宇

存储使用nfs共享存储,原来ZooKeeper容器重建后就能恢复数据。