加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

基于K8S的容器云平台如何部署微服务?

发布时间:2018-08-14 03:00:47 所属栏目:云计算 来源:talkwithtrend
导读:K8S是第一个将一切以服务为中心,一切围绕服务运转作为指导思想的创新型产品,它的功能和架构设计自始至终都遵循了这一指导思想,构建在K8S上的系统不仅可以独立运行在物理机、虚拟机集群或者企业私有云上,也可以被托管在公有云中。 微服务架构的核心是将

同时可以通过标签的方式来管理计算节点,在不同的计算节点划分为不同的可用区或组。在部署应用时,使用节点选择器将应用部署至带有指定标签的目标计算节点上。为了保证高可用,标签组合的目标计算节点数要大于1。这样可以避免一台目标节点宕机后,调度器还能找到满足条件的计算节点进行容器部署。

-应用高可用

基于软件(HAproxy)负载均衡服务,容器服务弹性伸缩时无需人工对负载均衡设备进行配置干预,即可保证容器化应用的持续、正常访问;可通过图形界面自定义负载均衡会话保持策略。

由于平台内部通过软件定义网络为每个应用容器分配了IP地址,而此地址是内网地址,因此外部客户无法直接访问到该地址,所以平台使用路由器转发外部的流量到集群内部具体的应用容器上,如果应用有多个容器实例,路由器也可实现负载均衡的功能。路由器会动态的检测平台的元数据仓库,当有新的应用部署或者应用实例发生变化时,路由器会自动根据变化更新路由信息,从而实现动态负载均衡的能力。

20

简单一点来说,就是内部服务的动态发现、负载均衡、高可用和外部访问的路由;

通过service,解耦动态变化的IP地址,POD可以随意关停,IP可以任意变,只要DNS正常,服务访问不受影响,但是这里面你的随时保证有个可用的POD,这个时候你就得需要LB了,或者说LB干的就是这个事情。

内部服务之间访问通过service解决了,那么外部访问集群内服务,则通过router即是解决,外网访问要不要负载均衡,大规模高并发情况下是肯定的,当然,外部负载均衡通常需要用户自己搞定了,F5或者开源的HAproxy都行!

Q5: 多租户在kubernets/openshift的实现和管理?

A5:

租户是指多组不同的应用或者用户同时运行在一个基础资源池之上,实现软件、硬件资源的共享,为了安全需求,平台需要提供资源隔离的能力。

在OCP中,project是一个进行租户隔离的概念,它来源于kubernetes的namespace,并对其进行了功能的扩展。利用Project,OCP平台从多个层面提供了多租户的支持。

1. 权限控制。通过OCP平台细粒度的权限管理机制,管理员可以对不同的用户和组设置不同project的权限,不同用户登录以后只能操作和管理特定的project

2. 网络隔离。OCP平台使用openvswitch来管理内部的容器网络,提供两种类型的网络模式,一种是集群范围内互通的平面网络,另一种是project级别隔离的网络。每个project都有一个虚拟网络ID(VNID),不同VNID的流量被openvswitch自动隔离。所以不同项目之间的服务在网络层不能互通。

3. Router隔离。Router是OCP平台一个重要软件资源,它提供了外部请求导入OCP集群内部的能力。OCP提供了Router分组的功能,不同的project可以使用独立的Router,不互相干扰,这样就避免了由于某些应用流量过大时对其他应用造成干扰。

物理资源池隔离。在多租户的环境中,为了提高资源的利用率一般情况下物理资源池是共享的,但是有些用户也会提供独占资源池的需求。针对这种类型的需求,OCP平台利用nodeSelector的功能可以将基础设施资源池划分给特定的project独享,实现从物理层面的隔离。

openshift里面对多租户问题有比较好的解决方案,openshift默认使用OVS来实现SDN,高级安装里面默认使用ovs-subnet SDN插件,网络实现类似于flat网络,因此要实现多租户可以在安装过程中设置参数:

os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant'

这样openshift将使用ovs-multitenant多租户插件,实现租户之间的安全隔离,另外,在openshift的多租户和容器中心化日志实现中,每个租户都只能查看属于自己项目的日志,这个确实有亮点的!

除了OVS插件,openshift是完全支持CNI标准的,因此,是要是符合CNI标准的三方SDN插件,都是可以在openshift中使用的,目前支持的SDN插件有:

1、Cisco Contiv;

2、Juniper Contrail; 

3、Nokia Nuage;

4、Tigera Calico ;

5、VMware NSX-T ;

另外,openshift是支持部署在物理机、虚拟机、公有云和私有云上的,可能有些用户会利用已有的公有云或私有云来部署。这个时候,如果使用OVS插件,你OpenShift中的SDN可能出现overlay on overlay的情况,此借助三方SDN插件是个不错的选择,比如flannel+hostgw在性能上肯定就优于默认的ovs-multitenant。

Q6: elasticsearch在K8S中部署?

A6

不论是IaaS还是PaaS,手工部署ELK都是不推荐的,通过ansible可以自动实现,至于如何实现,可以参考redhat文档:

https://docs.openshift.org/3.9/install_config/aggregate_logging.html

至于说分布式存储、本地存储还是集中存储,这个没有既定答案,都是可以参考行业实现,比如Redhat就是参考对象

不建议elasticsearch采用分布式存储,日志亮大情况下如果是分布式存储es写会是瓶颈。

根据你的描述,应该是有两个方面的问题:

1)es的后端存储的选择

2)Pod的创建

问题一:

分布式,本地,集中存储不管是在传统环境,还是在容器的环境中,都有使用。目前对于数据库应用,我们看到还是传统存储-集中存储,占了绝大多数的市场。

分布式存储,随着云计算的兴起,诞生的一种存储架构。它的优势很明显,无中心节点,弹性伸缩,适合云应用,等等。传统的厂商,netapp,emc,ibm,hp都有分布式存储,都是基于其传统的技术;新兴的开源分布式存储ceph,已经成为分布式存储的领军技术,有redhat,suse,xsky,联想,华三等。

分布式存储的劣势主要是,还处于发展阶段,技术有待成熟,有待市场的接受。

本地存储,一般使用的应该比较少。主要是数据复制同步方面的问题。

集中存储,目前用的最多的,不管是FCSAN还是IPSAN,其稳定性和安全性都是能够满足要求的。但是,在性价比,可扩展性方面都存在很大的问题。

问题二:

K8S的所有的流程都不是手动完成的,都是基于自动化完成。可以使用chef/ansible/puppt等工具完成。

Q7: K8S集群中的各受管节点以及其中的容器如何做监控?

A7:

kubernetes已成为各大公司亲睐的容器编排工具,各种私有云公有云平台基于它构建,其监控解决方案目前有三种:

(1)heapster+influxDB

(2)heapster+hawkular

(3)prometheus

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读