Spring Cloud 和 Kubernetes 都声称自己是开发和运行微服务的最佳环境,但它们在本质上有很大的不同,解决的问题也不同。在本文中,我们将看看每个平台是如何交付基于微服务架构(MSA)的?它们擅长哪些领域?以及如何充分利用这两个领域在微服务的旅程中取得成功。
部署微服务:Spring Cloud vs. Kubernetes Spring Cloud和Kubernetes都声称自己是开发和运行微服务的最佳环境,但两者在特性上并不相同,解决的问题点也不一样。本文将探讨这两种平台对于微服务架构的交付有何作用、两者在哪些方面表现更好以及如何利用这两种平台在微服务架构的路上取得成功。 背景故事 我最近拜读了 A.Lukyanchikov关于如何利用Spring Cloud和Docker搭建微服务的文章,推荐大家也看一看。 想要搭建一个可以十倍、百倍扩展服务的弹性伸缩微服
Kubernetes API Server是Kubernetes集群中的核心组件之一,它扮演着非常重要的角色。具体来说,它有以下三个作用:
当我们构建微服务解决方案时,SpringCloud和Kubernetes都是最佳解决方案,因为它们为解决最常见的挑战提供组件。但是,如果我们决定选择Kubernetes作为我们的解决方案的主要容器管理器和部署平台,我们仍然可以主要通过SpringCloudKubernetes项目使用SpringCloud的有趣特性。这个相对较新的项目无疑可以与Kubernetes轻松集成Spring Boot应用程序。在开始之前,了解如何在Minikube(本地Kubernetes环境)上部署Spring Boot应用程序可能会有所帮助。
基于前面系列文章的详细阐述,我们已经可以手工去K8S集群的命令行下将CentOS 7.4操作系统的Docker镜像启动起来,然后用户可以通过SSH登录到CentOS容器之中进行使用。但实际使用过程中不同的用户不可能每次都手动去命令行启动一个CentOS镜像,然后用命令去查看该容器的IP地址和端口是多少,然后再通过ssh去连接。我们最好可以将Docker容器的启动、查询、删除等再封装一层,然后通过WEB页面去提供给用户操作,这才符合用户行为需求!
作为一个Java开发者,Spring框架应该基本上都用过的,由于Spring框架太过于强大,导致我们可能只知道Spring框架,但其实还有很多优秀的框架可以供我们使用,本文将介绍6个和spring框架类似的框架。
在微服务世界中,每个人都使用缓存,缓存无处不在。缓存可以提高性能,减少后端负载,或者减少down机时间。有许多方法可以配置系统中的缓存,缓冲应该被放在系统的哪个层上?根据以往成功经验,系统中您应该只在
在这篇博文中,我们回顾了Kubernetes管理前端,并讨论了这些工具是如何被构建的。
Kubernetes是目前最为流行、成为事实标准的容器集群管理平台,为容器化应用提供了部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。在Kubernetes当中,用户通过使用API对象,如Pod、Service、Deployment等,来描述应用的程序规则,而这些资源对象的定义一般需要写入一系列的YAML文件中,然后通过 Kubernetes 命令行工具Kubectl进行部署。由于通常应用程序都涉及到多个Kubernetes API对象,而要描述这些API对象就可能要同时维护多个YAML文件,从而在进行 Kubernetes 软件部署时,通常会面临下述几个问题:
Vitess自2011年以来一直为YouTube的所有数据库流量提供服务,目前已被许多企业采用,以满足其生产需求。
Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。本文将指导你如何使用Go语言通过Kubernetes API实现自动化运维。计划是先实现一个简单的,后续感兴趣可以在基础上再进行提升
Spring Cloud和Kubernetes都是微服务运行平台,经常被人们拿来做比较,然而二者所关注的对象和解决的问题还是存在着本质差异的。
虽然 Docker 已经很强大了,但是在实际使用上还是有诸多不便,比如集群管理、资源调度、文件管理等等。那么在这样一个百花齐放的容器时代涌现出了很多解决方案,比如 Mesos、Swarm、Kubernetes 等等,其中谷歌开源的 Kubernetes 是作为老大哥的存在。
对那些曾经使用更传统方式构建应用的开发者来说,转向容器化微服务不是一个容易的转变。当开发者设计分布式应用时,微服务应用也正是分布式的,其中有许多新的概念和细节需要他们去考虑和熟悉。将容器和Kubernetes搅合在一起,为何许多开发者要费力去适应这个新世界也就很明显了。开发者想要关注业务逻辑的开发,并非处理微服务所在的执行环境的必要代码。API一直是连接服务的高效方式,对于Kubernetes(K8s)上的微服务也依然如此。在这篇文章中,我们将阐述为什么API-First(译者注:指API先行,首先考虑API)这种在Kubernetes上构建微服务的方法可以使您从中受益。在我们深入研究之前,让我们快速回顾一下API-First的含义,以及K8s服务常引用的一个概念。
Helm已成为Kubernetes生态系统的重要组成部分。通过使用 Helm,可以简化创建和部署Kubernetes资源的过程。在本文中,我们将介绍 Helm 的基本组件、架构以及使用 Helm 的好处。
众所周知,Kubernetes secret 只是以 base64 编码的字符串,存储在集群的其余状态旁边的 etcd 中。自 2015 年引入 secret 以来,安全专家就一直在嘲笑这一决定,并寻求其他替代方案。我认为这些人没有抓住要点。
本书主要介绍如何使用微服务来构建应用程序,现在是第四章。第一章已经介绍了微服务架构模式,并讨论了使用微服务的优点与缺点。第二章和第三章介绍了微服务间的通信,并对不同的通信机制作出对比。在本章中,我们将探讨服务发现(service discovery)相关的内容。
基于HTTP的客户端经常被用作微服务的消费者。这类客户端往往有着平台无关性、语言无关性等特征,而被社区广泛支持,各类HTTP客户端框架也是层出不穷。
以一个典型的三层应用 Wordpress 为例,该应用程序就涉及到多个 Kubernetes API 对象,而要描述这些 Kubernetes API 对象就可能要同时维护多个 YAML 文件。 在进行 Kubernetes 软件部署时,我们面临下述几个问题:
本文将教你如何为在 Kubernetes 上运行的 Spring Boot 应用程序配置 SSL 证书的热重载。
本期课堂由谐云研发工程师林健作为讲师,分享《边缘计算KubeEdge基础框架与实践》,为大家解读KubeEdge的优点、框架等内容,满满技术干货。
与日志记录和可观察性一样,分布式追踪是保持服务健康和可预测的关键功能。与日志和可观察性(显示服务上发生了什么)相反,追踪允许开发人员和操作人员遵循特定的请求,以及它如何调用不同的服务和依赖关系。它是围绕微服务架构设计的,而微服务架构不同于单体架构,它使用许多小型服务来运行一个平台。这些服务彼此通信,也与外部服务通信,以提供和存储用户请求的信息。
在若干年前的单体应用时代,我们可以相对轻松地对整个业务项目进行健康检查、指标监控、配置管理等等项目治理。如今随着微服务的发展,我们将大型单体应用按业务模型进行划分,以此形成众多小而自治的微服务,我们品尝到了微服务的甜头:异常隔离、独立部署和发布、服务伸缩、便于协作开发...我们的项目服务更加解耦合,高可用。但与此同时这也给我们带来了很多挑战,众多服务的健康检查、指标监控问题、配置管理、日志聚合问题、异常排查问题等等。我们急切需要一些工具或者手段来尽可能地解决这些问题,从而让我们收获微服务的最大化利益。
现代无状态应用程序的构建和设计可在Docker等软件容器中运行,并由Kubernetes等容器集群管理。它们使用Cloud Native和Twelve Factor原则和模式开发,以最大限度地减少人工干预并最大限度地提高可移植性和冗余性。将基于虚拟机或基于裸机的应用程序迁移到容器(称为“容器化”)并在集群内部署这些应用程序通常会导致这些应用程序的构建,打包和交付方式发生重大变化。
2019 年,DevOps 越来越普及,想成为 DevOps 工程师的话需要具备哪些技能呢?
当今的 Kubernetes 炙手可热,用户们寻求更多的方式和流程来进行 Kubernetes 集群上的应用部署。kubectl 已经成为底层工具,用户需要更易用的流程。Draft、Gitkube、Helm、Ksonnet、MetaParticle 以及 Skaffold 都是用来帮助开发人员在 Kubernetes 上进行应用构建和部署的工具。
对于实现生产环境的构建和部署的人来说,这是一场噩梦。并且假设它们共享相同的操作系统但需要隔离,或者出于可移植性原因将它们打包到单独的VM镜像中。为每个服务实现新VM非常昂贵! 阶段2:容器化 通过利用Linux中的cgroups和命名空间,新的操作系统级虚拟化技术通过共享相同的主机操作系统来实现应用程序的隔离环境。Docker是最受欢迎的容器运行时。 因此,为每个微服务创建并发布了一个镜像。现在,应用程序被隔离,快速,便宜地启动新容器,所有这些都可以通过一个操作系统实现! 容器化解决了构建和部署问题。我们还没有完善的监控解决方案! 我们还有其他问题吗? 管理容器! 使用容器运行可靠的基础架构需要注意一些关键事项。
etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于 Go 语言实现。
在本章中,我们将看看什么是GitOps,以及这个想法在 Kubernetes集群中如何有意义。我们将介绍特定的组件,例如应用程序编程接口(API)服务器和控制器管理器,它们可以使集群对状态更改做出反应。我们将从命令式API开始,然后浏览声明式API,并将看到如何应用文件和文件夹来应用Git存储库只是一个步骤——当执行它时,GitOps出现了。 我们将在本章中介绍以下主要主题:
本文介绍了如何使用Helm将应用程序部署到IBM Cloud上的Kubernetes,包括详细的步骤和示例。
在业务使用Kubernetes进行编排管理时,针对业务的南北流量的接入,在Kuberentes中通常有几种方案,本文就接入的方案进行简单介绍。
欢迎大家关注交流,定期分享自动化运维、DevOps、Kubernetes、Service Mesh和Cloud Native
介绍 Kubeconfig 和Context。终于是时候理解 kubectl 如何连接到 Kubernetes 了。
为什么要监视多个Kubernetes集群,主要有两个原因。在第一个使用场景中,您拥有集群,每个开发阶段(如开发、阶段化和生产)都有一个集群。另一种情况是运行托管服务,或有运行工作负载的客户机,这些工作负载需要对可靠性进行监控,或作为运行服务的一部分进行使用。
接下来,您需要从Helm GitHub存储库下载适用于CentOS的二进制文件。使用以下命令下载Helm的tar归档文件:
微软与社区专家合作,开发了功能齐全的云原生微服务示例应用eShopOnContainers。 该应用旨在展示使用.NET、Docker以及可选的Azure,Kubernetes技术来构建电商平台。
Red Hat OpenShijft Container Platform (OpenShift)是一个容器应用程序平台,它为开发人员和IT组织提供了一个云应用程序平台,用于在安全的、可伸缩的资源上部署新应用程序,而配置和管理开销最小。
近期在开源社区日益火热的Kubernetes项目中用到一款重要组件etcd,渐渐为人们所关注。etcd 是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问。通过分布式锁,leader选举和写屏障(write barriers)来实现可靠的分布式协作。etcd集群是为高可用,持久性数据存储和检索而准备,还可以用于配置共享和服务发现。Etcd相对于和它有类似功能的zookeeper来说更加轻量级。
作为一款开源产品,MySQL拥有全面的知识文档,这是目前其他开源产品与其无法相比的一点。
Helm是Kubernetes生态系统中的一个软件包管理工具,有点类似于Linux操作系统里面的“apt-get”和“yum”。结合上一节内容,对Kubernetes集群进行部署应用时,我们面临了以下问题:
本文最初发表于 RedHat 的开发者站点,经原作者 Bilgin Ibryam 许可,由 InfoQ 中文站翻译分享。
作者:Daniel Bryant,Datawire产品架构师;Flynn,Datawire Ambassador首席开发者;Richard Li,Datawire首席执行官兼联合创始人
Kubernetes Service是Kubernetes的核心组件之一,它负责在集群中为应用程序提供稳定的服务发现和负载均衡功能。
首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。
首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。 传统的WEB应用核心分为业务逻辑、适配器以及API或通过UI访问的WEB界面。业务逻辑定义业务流程、业务规则以及领域实体。适配器包括数据库访问组件、消息组件以及访问接口等。一个打车软件的架构图如下:
许多gRPC的新用户惊讶地发现,Kubernetes的默认负载平衡常常无法在gRPC上正常工作。例如,下面是一个简单的gRPC Node.js微服务应用,部署在Kubernetes:
在这篇文章中,我们将通过一个简单的例子来介绍一下Linkerd和Zipkin如何在Kubernetes(Google开源的容器集群管理系统)中协同工作以自动获得分布式跟踪,只需要对应用程序进行一些小小的修改。
原文地址:https://dzone.com/articles/an-overview-of-the-service-mesh-and-its-tooling-op
领取专属 10元无门槛券
手把手带您无忧上云