为何选择K8s助力微服务

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 云原生下K8s的重要性

Kubernetes 与微服务的天生绝配

  其实,为什么我们需要 K8s,它到底能做什么呢?

  容器是打包和运行应用程序的好方式。在生产环境中,你需要管理运行应用程序的容器,并确保不会停机。 例如,如果一个容器发生故障,则需要启动另一个容器。如果系统处理此行为,会不会更容易?这就是 Kubernetes 来解决这些问题的方法! Kubernetes 为你提供了一个可弹性运行分布式系统的框架。 Kubernetes 会满足你的扩展要求、故障转移、部署模式等。

Kubernetes 会提供:

  • 服务发现和负载均衡,Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
  • 自动部署和回滚,你可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态更改为期望状态。例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
  • 自我修复,Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
  • 存储编排,Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。
  • 自动完成装箱计算,Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。 当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
  • 密钥与配置管理,Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

  那么对于 K8s 提供的这些功能,其实对于微服务来讲,都是很好的一个平台提供。换句话说,对于微服务来说,如果使用 K8s 的话,可以不用考虑语言上的限制,更不用考虑各种开发语言的框架的限制;对于各种语言来说,在前面也介绍过,都有很多不同的框架,那如果运用这些框架时,就需要考虑不同服务之间如果属于不同的语言,那么该如何来实现微服务的架构呢?从这一角度来分析,微服务与 K8s 属于天作之合,它们的结合可以说是天衣无缝、完美至极。在后面章节中,将会介绍它们的天衣无缝:自治与无缝迁移。

基于 Kubernetes 集群的服务治理

  其实,做微服务架构设计,我们希望得到什么呢?看下图:

  从上面这张图中可以看到,微服务的解耦、封装,从而简化开发人员的开发。调用方便,主要体现在sdk或者说client的提供者很容易被调用,这就体现了K8s的服务注册与发现。安全性考虑,基于K8s集群的保障,可以让微服务们处于一个堡垒中,这样避免外部的干扰。同时,服务之间直接走内部网络,可以大大提升性能。

  说到这些,其实服务的自动化才是一个重点,自治能力体现了系统的健壮性。在前面章节中说到了K8s具有自动修复的能力,可以将失败或出现问题的容器进行重新编排、启动。容器本身的健康检查会被监视,当不响应用户定义的运行检查的容器就会被杀死。

  同时,K8s提供自动部署能力,可以通过简单的命令来执行即可发挥K8s的作用。同时,K8s会根据用户的节点选择,将pod分配到对应的节点,这样对于运维人员来说,即使出现节点宕机,pod可以迅速的在其他节点被启动。

基于 Kubernetes 的服务无缝迁移

  在K8s集群中的服务,如果想要被迁移到其他的机器或其他集群。在传统的实现中,可能需要考虑到很多点:服务包的转移、共享,配置的转移,数据库的转移等等。但对于容器化来说,这些都被打包成image,而这些image可以被上传到一个仓库Habor,当需要迁移环境的时候,这些服务的镜像其实都可以不动,运维人员将要做的是:将开发人员编写的基于K8s的yaml文件在对应的集群中进行部署即可。运维人员无需关心任何其他事情,只需要在部署前,将需要的相关配置处理好即可。这将大大减少开发人员、运维的成本,让他们专注于部署,而不用关心其他的琐碎的事情。因为K8s是可以跨平台、跨系统的。主要存在K8s集群,服务都可以无缝的进行迁移过去。这也是微服务基于K8s的一个优势。下图为K8s基于Habor的架构图。

  • 通过kubectl命令工具发起资源创建kubectl create -f xxx.yaml
  • k8s处理相关请求后kube-scheduler服务为pod寻找一个合适的“家”node2并创建pod。
  • node2上的kubelet处理相关资源,使用docker拉取相关镜像并运行。

  从上面的流程操作来看,将微服务从一个K8s集群,迁移到另一个集群,其操作是可以无缝对接的,可以同配置、同环境参数的无缝的迁移,这就是云原生下K8s带来的优势。也是需要企业现在一直推荐属性docker、K8s等技术的一个关键性要素。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
3月前
|
Kubernetes 负载均衡 微服务
Kubernetes 生态系统中的微服务治理
【8月更文第29天】随着微服务架构的普及,管理分布式系统的复杂性也随之增加。Kubernetes 作为容器编排的事实标准,为微服务架构提供了强大的支持。结合像 Istio 这样的服务网格工具,Kubernetes 能够有效地解决微服务治理中的诸多挑战,如服务发现、负载均衡、流量管理和安全策略等。
55 1
|
5天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
30 1
|
13天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
57 7
|
9天前
|
Kubernetes 关系型数据库 MySQL
Kubernetes入门:搭建高可用微服务架构
【10月更文挑战第25天】在快速发展的云计算时代,微服务架构因其灵活性和可扩展性备受青睐。本文通过一个案例分析,展示了如何使用Kubernetes将传统Java Web应用迁移到Kubernetes平台并改造成微服务架构。通过定义Kubernetes服务、创建MySQL的Deployment/RC、改造Web应用以及部署Web应用,最终实现了高可用的微服务架构。Kubernetes不仅提供了服务发现和负载均衡的能力,还通过各种资源管理工具,提升了系统的可扩展性和容错性。
30 3
|
13天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
49 6
|
15天前
|
Kubernetes 监控 开发者
专家级实践:利用Cloud Toolkit进行微服务治理与容器化部署
【10月更文挑战第19天】在当今的软件开发领域,微服务架构因其高可伸缩性、易于维护和快速迭代的特点而备受青睐。然而,随着微服务数量的增加,管理和服务治理变得越来越复杂。作为阿里巴巴云推出的一款免费且开源的开发者工具,Cloud Toolkit 提供了一系列实用的功能,帮助开发者在微服务治理和容器化部署方面更加高效。本文将从个人的角度出发,探讨如何利用 Cloud Toolkit 来应对这些挑战。
32 2
|
16天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
61 2
|
1月前
|
Kubernetes Docker 微服务
微服务实践k8s&dapr开发部署实验(1)服务调用(一)
微服务实践k8s&dapr开发部署实验(1)服务调用(一)
48 2
|
1月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
90 1