k8s经典理论(还是和项目跑在一个服务器中)

伏羲号

理论上是独立部署最好。但实际情况吧看公司机器资源。不从实际情况考虑的架构都是耍流氓。redis主要耗内存。但生产环境中cpu,网络,磁盘都是要考虑的问题,而且我们的资源是有限的。

k8s经典理论(还是和项目跑在一个服务器中)

可以肯定的是最好不要和数据库在同一个节点部署。数据库需要单独部署。为什么这样说呢? 一个原因是因为数据库太重要了。我们不能因为redis的问题导致数据库被牵连。另一个原因。redis作为缓存,本身就是为了减少直接连库的压力。结果部署在一个节点上。数据库实例的压力是小了。但这个节点整体访问量,IO,cpu,内存并没有减小多少。甚至是增加了。因为一次请求要吗访问数据库,要吗访问redis,但现在都在一个节点上, 所以总量并没有减小。而redis自身还会淘汰数据,这其中又是一波耗节点资源的操作。

从另一个理想的角度考虑,我希望我的数据库实例挂了,能从redis中获取数据。我的redis挂了,能从数据线中获取数据。这样尽量保证业务正常。要实现这个目标,数据库和redis必须在不同的节点上。如果在同一个节点。而这个节点挂了。我们就没有取数据的地方了。

生产环境,中间件之间可以混合部署。比如redis,mq可以在同节点混合部署。业务项目之间可以混合部署。但业务不要和中间件部署到同节点。数据库独立节点部署。

redis最好也不要和其他的耗内存大户混合部署,如elasticsearch 这种的。

如果没有中间件节点。那就选个业务访问量少的节点混合部署吧,总之不要选数据库节点。除非这个数据库节点是冷备节点

作为开源的容器编排平台,Kubernetes看起来正在成为事实标准。2017年是Kubernetes的一年。但是,如果你没有参与云工作负载的日常管理和运维,那么对Kubernetes这样的总结存有不解,也不用大惊小怪。

Kubernetes是相对年轻的技术。它的第一个开源代码于2014年发布。但在大约三年后,Kubernetes才真正开始。仅在2017年,包括微软,OpenStack,Cloud Foundry,IBM,Oracle,思科,Mesosphere和Docker在内的数十家企业和组织相继发布了与Kubernetes相关的内容。而Kubernetes的合作伙伴现在有超过150家正在合作或支持该项目的公司。

那么作为企业的IT管理者,你应该知道Kubernetes?为什么这项技术很重要,它如何影响日常的IT运营?那么让我们来了解下,Kubernetes及其在企业IT中的现在和未来角色。

1.Kubernetes是一个开源的容器编排平台

Kubernetes将自己描述为“生产级容器编排”解决方案。这意味着为了理解Kubernetes,需要了解容器和编排。

容器是将应用程序与其所有依赖关系打包在一起的轻量级方法。最知名的容器应用程序是Docker,尽管其他也是存在的。容器越来越受欢迎,特别是使用DevOps方法和/或公有云服务的公司,因为它们在部署应用程序时提供一致性,效率和可移植性。

编排实际上只是自动化的一个词汇。Kubernetes负责自动化容器的部署,扩展和管理。这意味着用户可以告诉系统创建五个容器或扩展一些容器,而Kubernetes处理所有的细节以实现这一点。

2.Kubernetes由Google开发

Google云平台曾解释了Kubernetes的起源。本质上,Google建立了一个名为Borg的集群管理系统,帮助管理运行Google搜索,Gmail,YouTube和其他服务的服务器。当容器出现时,Google团队希望将他们通过Borg获得的知识应用于容器管理,于是一个名为Seven of Nine的内部项目诞生了。

但是,当Seven of Nine后面的团队表示他们想让这个项目开源时,它最初遇到了一些阻力。但最终,在2014年Kubernetes第一个代码放在了GitHub上。随后,Kubernetes 1.0在2015年7月推出。之后由Linux基金会成立的独立组织CNCF接手管理工作Kubernetes的未来发展。

3.Kubernetes如何变得非常受欢迎?

虽然它没有历史积淀,但Kubernetes很快取得了令人印象深刻的市场份额。451 Research进行的200家企业IT决策者的调查中,71%的受访者表示他们正在使用Kubernetes。使用该项目的知名企业包括Box,eBay,维基媒体,高盛,纽约时报,SAP等等。

Kubernetes也成为开源社区最活跃的项目之一。根据2017年8月份GitHub State报告,Kubernetes是最受关注的最受关注的存储库,有388100条评论。它还拥有该网站上所有项目的第二大评论。

许多科技巨头也纷纷支持Kubernetes,其中不少加入了CNCF的计划。在CNCF的白金成员中包括阿里云,AWS,思科,CoreOS,戴尔,富士通,谷歌云,华为,IBM,英特尔,甲骨文,红帽,SAP和VMware的办公等。

4.它的竞争对手是Mesos和Swarm

Kubernetes不是容器编排的唯一选择。其他两个开源项目Apache Mesos和Docker Swarm提供了很多相同的功能。不久之前,这些其他项目中的一个可能成为主导。毕竟,Mesos有更长的历史,而Swarm得到了领先的容器技术Docker的支持。

但在过去的几个月里,Mesos和Swarm似乎都承认了失败。Mesos的最大的支持者之一是Mesos DC/OS,于2017年9月宣布支持Kubernetes。而在10月,Docker宣布它将整合Kubernetes的支持。

5.Kubernetes面临一些可用性挑战

但是受欢迎程度的急剧增加并不意味着Kubernetes已经克服了所有障碍。尽管最近它的文档和可用性已经有所改善,但Kubernetes也有一些难以使用的声音。

Kubernetes的独特之处在于它可能是目前企业中最难,但最需要的软件,而且这种情况并不常见。当一个软件具有像Kubernetes一样的学习曲线时,兴趣决定选择,但这与目前的情况完全不同。

挑战并没有削弱人们对Kubernetes的兴趣。相反,它已经刺激了包括领先的公有云平台在内的许多供应商提供Kubernetes版本或承诺平台对其用户更加友好的服务。

6.所有领先的云提供商都支持Kubernetes

虽然很多供应商最初支持技术竞争,但现在所有领先的公有云服务现在都与Kubernetes合作。

AWS提供Amazon EKS,为一种托管服务,可让你轻松在AWS上运行Kubernetes,而无需安装和运行自己的Kubernetes群集。

微软Azure提供Azure容器服务(AKS),简化Kubernetes的部署,管理和操作。

Google是Kubernetes的发明者,为Google云平台提供Kubernetes引擎。

IBM在其IBM Cloud Container Service中包含Kubernetes支持。

7.Kubernetes已被纳入Docker

在2017年所有与Kubernetes相关的发布中,Docker对该技术的支持可能是最重要的。Docker是容器化技术目前的领导者。在RightScale 2017年云状态报告中,Docker是各企业使用的最常见的DevOps工具。

尽管Docker计划继续支持其自己的Swarm技术,但该公司计划将Kubernetes集成到Docker的社区版和企业版中的计划可能会导致更多的Kubernetes使用。预测认为Kubernetes的使用可能会比Docker的使用更为广泛,或者由于Kubernetes和其他开源容器项目发展势头迅猛,Docker将变得无关紧要。

8.其他供应商也提供Kubernetes产品

这不仅仅是云供应商和Dockers正在搭上Kubernetes的发展潮流。许多其他供应商提供基于Kubernetes的产品和服务。如:

CloudFoundry Container Runtime

CoreOS Tectonic

Heptio

Kublr

Mesosphere DC/OS

Mirantis Cloud Platform

Pivotal Container Service

Platform9

Rancher

Red Hat OpenShift

SUSE CaaS Platform

9.Kubernetes是理想的混合云和多云环境

尽管你可以在任何地方运行Kubernetes,但它真的能够在混合云和多云环境中发挥作用。在451 Research调查中,受访者表示,他们使用容器和Kubernetes的主要驱动因素是混合云/跨云集成和效率。另外,90%的人表示他们认为Kubernetes可以取代私有云和平台即服务(PaaS)。

现在大多数公司都在使用多个云供应商,并且在可预见的将来,大多数公司都会继续在公有云和本地运行工作负载。 对于这些企业来说,Kubernetes提供了一种有吸引力的方式来简化非常复杂的环境管理。

10.Kubernetes可能成为事实上的标准

众多专家预测,由于Kubernetes广泛的采用和支持,Kubernetes似乎正在成为技术行业内的标准。然而,值得注意的是,Kubernetes还有很长的路要走,虽然大多数公司可能在内部调研容器和Kubernetes的采用,但大多数公司还没有投入。

Kubernetes的未来看起来很光明,这就是为什么许多分析师和顾问建议企业现在就开始学习和尝试Kubernetes的原因。对Kubernetes有很多了解的人常常将其缩写为K8s,(即K+8个字符+s)。

Docker中文叫容器,和虚拟机有很多相似之处,也有诸多不同之处。用来运行生产系统,都是没问题的。虚拟机具有普适性,而Docker的轻量化更适合微服务架构的应用,下面我们就来了解一下:

1、Docker和虚拟机异同点

①、虚拟机

说起虚拟机我们都非常熟悉。它利用虚拟化技术将操作系统和物理服务器脱离关系,虚拟机通过虚拟层和宿主物理服务器打交道。这样,我们的宿主物理服务器只要性能足够,就可以运行大量的虚拟机。而虚拟机因为脱离了物理硬件的捆绑关系,也就具备了很多优点:

完整性:虚拟机就是打包了操作系统、虚拟硬件等等的一组文件,它具有真实计算的完整功能;独立性:虚拟机和虚拟机之间本身是互相隔离的,就算两台虚拟机在同一台宿主机上,也不会因为其中一台虚拟机出问题,导致另外一台虚拟机出问题。可移植性:整个虚拟机是一组文件,可以很方便的复制迁移。一迁移就是这个系统都迁移出去了。高可用性:虚拟机因为和物理服务器脱离了捆绑关系,它可以在被虚拟化的服务器中自由漂移。任何一台物理服务器出现故障,虚拟机并不会因此无法工作。同时,当然虚拟化平台还提供了性能负载均衡和灾备的一些特性。高性能:单个虚拟机是无法突破宿主物理服务器的性能的,那如果要实现更大的性能,虚拟机可以组建集群,将集群虚拟机分布在不同的物理服务器中来实现。

当然,虚拟机不止我这里说的好处。它是云计算的最基础技术,没有它就无法实现云计算。

②、Docker

Docker是在虚拟机之后才出现的技术。它也是在操作系统之上的轻量化虚拟技术。它可以运行在传统的物理服务器上,也可以运行在虚拟机之中。它是将应用系统的运行环境和应用软件打包在一起的技术,它也具备很多优点:

独立性:每一个Docker都是一套应用软件和配套环境,和其他Docker是互相隔离的;便捷性:软件从开发者手上开发出来到使用者这边,只需一个Docker镜像就可以把开发者的完整环境搬到使用者这边。无需重新配置环境。可移植性:Docker的可移植性主要是应用软件和环境可以快速迁移。高可用:Docker本身无法实现高可用。它需要借助分布式管理平台来实现高可用性,比如:著名的谷歌K8S,是一整套非常不错的分布式管理程序,已经可以实现所谓的“容器云”高性能:同样是通过分布式管理平台,来实现多个Docker的集群。性能不够就加Docker。

③、两者相同点和不同点

虚拟机和Docker都具有高可用和高性能的特点,他们都是一种虚拟化的技术。但两者也存在很多的不同点:

虚拟机的虚拟化处在更宏观的层面,操作系统都被打包进去。优点在于无需重装系统,而且虚拟化可以和硬件直接打交道,性能调度掌握在虚拟平台上,缺点在于,每一个虚拟机都需要运行一套操作系统。而Docker的虚拟化则在更微观的层面,它并不是完整计算环境,它只打包了应用程序和环境,所以,缺点在于调度硬件的性能取决于外在操作系统,同时,Docker太多后关系非常复杂,人工是很难理清楚性能问题和故障的,还好容器平台都有自动化工具。它的优点就是非常轻量化,应用可移植性非常强,对软件开发来说非常方便。2、Docker可以取代虚拟机的地方

通过上面虚拟机和Docker的对比发现,Dokcer更适合当前采用微服务架构的应用软件开发、部署、运维的所有过程。那到底什么是微服务架构呢?

这个起源于互联网公司,互联网的软件都是需要快速上线,持续迭代更新,又有大量的轻量并发访问。基于这些特点,互联网公司通常将一个大型的应用程序和服务拆分为数个甚至数十个的支持微服务,通常扩展单个组件而不是整个的应用程序堆栈,从而满足互联网访问这种特性。这就是我们常说的微服务。架构对比示意图如下:

从图中,我们可以看到传统架构是一个紧耦合的应用,各个模块都是集成在一个应用里面。不仅应用对性能要求高,数据库对性能要求也高。自然不适合Docker来做,更适合虚拟化或者物理集群来做。而微服务架构则不同,拆散成了很多个微小的服务组件,这样就比较适合Docker来开发部署了。

当然,现在微服务架构已经不局限在互联网公司用了。只要具有互联网软件相似特点的应用,都可以采用微服务架构来开发。所以,Docker也就被用的越来越多。但Docker和虚拟化并不是互相排斥的,反而是相互贯通的。

3、Docker和虚拟机是互相贯通的

因为Docker是微型虚拟化的容器,它可以运行在物理机操作系统上,也可以运行在虚拟机的操作系统之上。所以,Docker和虚拟机并不互相矛盾。反而是相辅相成的。现在,很多互联网应用都是在虚拟机组建的云端上部署Docker应用。这样既有云计算的弹性性能提供,也有Docker快速灵活部署应用的特点。是相辅相成的绝佳方法。

总结

总之,Docker是轻量级的虚拟化,只打包软件和软件运行环境。而虚拟机则是打包操作系统的重量级虚拟化。两者之间有虚拟化的共同特点,也有自己的独特性。在实际使用中,Docker非常适合采用微服务架构的软件开发、部署、运维。而虚拟机则普适性比较广,但它和Docker是互相贯通的,相辅相成的,并不矛盾冲突。

感谢阅读!我是数智风,用经验回答问题,欢迎评论关注。

k8s可以通过使用Service Mesh或者Ingress等技术来实现跨集群通信。Service Mesh如Istio可以在集群之间建立虚拟网络,实现通信路由和负载均衡等功能;Ingress则可以通过路由管理和负载均衡来实现集群之间的通信。这些工具可以帮助k8s集群在不同的网络环境中进行跨集群通信,提供了稳定和可靠的解决方案。

Kubernetes(k8s)存储持久化最佳方案取决于应用程序的需求和运行环境。以下是一些可以考虑的存储持久化方案:

NFS 存储:NFS 存储是一种网络文件系统,它可以在不同的主机之间共享文件。Kubernetes 中的 Persistent Volume(PV)可以将 NFS 存储挂载到容器中,使容器能够读取和写入 NFS 存储中的文件。

HostPath 存储:HostPath 存储是一种简单的存储方案,可以将主机上的文件夹挂载到容器中。这种存储方案适用于运行在单节点环境中的应用程序。

iSCSI 存储:iSCSI 存储是一种网络存储协议,可以将远程存储设备挂载到容器中。iSCSI 存储方案具有高性能和高可用性。

Ceph 存储:Ceph 存储是一种开源的分布式存储系统,它可以提供块存储、文件存储和对象存储。Ceph 存储方案适用于大规模存储和高可用性的应用程序。

Amazon EBS 存储:Amazon EBS 存储是一种云存储服务,可以将 Amazon EBS 卷挂载到容器中。这种存储方案适用于运行在 AWS 上的应用程序。

总的来说,选择哪种存储持久化方案需要根据应用程序的需求和运行环境进行综合考虑。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,89人围观)

还没有评论,来说两句吧...