Go微服务架构实战-中篇 1. k8s架构介绍

简介: Go微服务架构实战-中篇 1. k8s架构介绍


Go微服务架构实战



本系列文章主要是针对云原生领域微服务架构的实战,包括网关,k8s,etcd以及grpc等相关技术的应用,同时也会把服务发现与注册,熔断,降级,限流以及分布式锁等加入到系列当中作为补充,课程的最后也会安排分布式链路追踪框架的学习,监控平台的搭建以及灰度发布等技术服务,所以总体来讲,课程范围涉及技术领域较广,知识面比较宽,大家下来各取所需尽量做到熟悉和应用,之后有时间了在研究下源码,乐哉!


上篇已经完成,大家可以看下,我这里贴出来了,中篇从这周开始陆续为大家产出,因为太耗费精力,所以还望大家多多支持!


Go微服务架构实战目录


1. 微服务架构上篇


1. grpc技术介绍

2. grpc+protobuf+网关实战

3. etcd技术介绍

4. 基于etcd的服务发现与注册

5. 基于etcd的分布式锁实战

2. 微服务架构中篇

1. k8s架构介绍

1. k8s是什么


k8s就是k到s之间的距离是8,所以叫做k8s。


废话:原名是Kubernetes,简称k8s,k到s中间隔8个字符,为了方便记忆和书写就省去了这八个字符,用数字8代替。


k8s是Google公司开源的一个容器编排与调度管理框架,该项目最初是Google内部面向容器的集群管理系统,而现在是由CNCF托管的开源平台,由Google、AWS、Microsoft、IBM、Intel、Cisco和Red Hat等主要参与者支持,其目标是通过创建一组新的通用容器技术来推进云原生技术和服务的开发。作为领先的容器编排引擎,k8s提供了一个抽象层,使其可以在物理或虚拟环境中部署容器应用程序,提供以容器为中心的基础架构。


这是官方说法,说白了就是你之前docker起的容器以及对这些容器的管理和调度比较复杂,你使用k8s之后,容器的创建,调度,滚动升级等都变得异常简单,所以各个大厂小厂都在拥抱这种变化,对现有的服务进行k8s升级改造。


2. k8s能解决什么问题


对于大多数用户来说,k8s的主要作用是在一个给定的集群上把一个应用运行起来。更进一步说,k8s需要提供的是网关、水平拓展、监控、备份、灾难恢复等一系列运维能力。


3. k8s架构图


640.png

k8s系统架构遵循客户端/服务端(C/S)架构,系统架构分为Master和Node两部分,Master作为服务端,Node作为客户端。k8s系统具有多个Master服务端,可以实现高可用。在默认的情况下,一个Master服务端即可完成所有工作。


  • Master节点
  1. 主要负责
  • 集群的“大脑”,负责管理所有节点(Node)。
  • 负责调度Pod在哪些节点上运行。
  • 负责控制集群运行过程中的所有状态。
  1. 包含组件
  • etcd:保存整个集群的状态
  • apiserver提供了资源的唯一入口,并提供认证、授权、访问控制、API注册和发现等
  • controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
  • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上


  • Node节点
  1. 主要负责
  • 负责管理所有容器(Container)。
  • 负责监控/上报所有Pod的运行状态。
  1. 包含组件
  • kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
  • Container runtime负责镜像的管理以及Pod和容器的真正运行(CRI)
  • kube-poxy负责为Service提供cluster内部的服务发现和负载均衡


除了核心组件,还有一些推荐的组件:

  1. kube-dns负责为整个集群提供DNS服务
  2. Ingress Controller 为服务提供外网入口
  3. Heapster提供资源监控
  4. Flannel(提供集群间网络)
  5. Dashboard提供GUIFederation提供跨可用区的集群
  6. Fluentd-elasticsearch提供集群日志采集,存储与查询


说完组件之后,接下来开始k8s中各个资源对象的介绍。


  • Pod对象
  • k8s中最小的管理和部署单位,一个Pod中可以有一个或多个容器。同一Pod中的容器共享IP地址、通过localhost相互通信、共享数据卷。
  • 不同Pod之间可以相互访问或者通过service访问
  • Pod有自己的IP,但是不能对外使用,只能集群内使用,因为Pod随时就会被丢弃,外部的IP就无效了,可以通过别的方式对外暴露。
  • 从集群外部访问不鸟,因为集群网络都是隔离的,需要借助别的资源打通


  • Service对象
  • 一组逻辑Pods和它们访问策略的抽象,为一组相同属性的Pods抽象出一个固定IP地址,允许Pod之间以及Pod与Service之间相互通信。
  • 简称svc,通过筛选Pod的标签将一组Pod管理起来
  • svc提供一定的负载均衡能力
  • 对于Pod来说svc就是它们的统一入口


  • Deployment对象
  • 提供Pod滚动更新和ReplicaSets的控制器
  • 创建Pod,创建Pod的副本集
  • 删除Pod以及副本集


  • ReplicaSet对象
  • 保证集群在任何时间点上都有指定数量的Pod副本,除非你需要定制滚动更新的策略或者不需要滚动更新,K8s推荐使用Deployment而不是直接操作ReplicaSet


  • Namespace对象
  • 将集群资源汇总在指定的空间之下
  • 隔离资源对象
  • 默认是default空间


还有其它很多对象就不逐一介绍了,大家下去重点了解哈。


在我们了解了上述架构,组件以及资源对象之后,中篇后期文章所有基于这些对象和组件编排任务的流程就会清晰很多,我们会在上篇创建的基于grpc+etcd+gateway的项目上进行k8s任务编排,把裸机部署改造为容器化部署


最后放一张docker相关命令图,因为k8s管理的容器目前都是基于docker容器运行时环境,所有docker相关的你就得了解它。

640.png


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
130 6
|
1月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
51 1
|
19天前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
149 36
微服务架构解析:跨越传统架构的技术革命
|
7天前
|
弹性计算 Java 数据库
Web应用上云经典架构实战
本课程详细介绍了Web应用上云的经典架构实战,涵盖前期准备、配置ALB、创建服务器组和监听、验证ECS公网能力、环境配置(JDK、Maven、Node、Git)、下载并运行若依框架、操作第二台ECS以及验证高可用性。通过具体步骤和命令,帮助学员快速掌握云上部署的全流程。
|
1月前
|
消息中间件 Java Kafka
实时数仓Kappa架构:从入门到实战
【11月更文挑战第24天】随着大数据技术的不断发展,企业对实时数据处理和分析的需求日益增长。实时数仓(Real-Time Data Warehouse, RTDW)应运而生,其中Kappa架构作为一种简化的数据处理架构,通过统一的流处理框架,解决了传统Lambda架构中批处理和实时处理的复杂性。本文将深入探讨Kappa架构的历史背景、业务场景、功能点、优缺点、解决的问题以及底层原理,并详细介绍如何使用Java语言快速搭建一套实时数仓。
173 4
|
1月前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
85 4
|
2月前
|
存储 前端开发 API
DDD领域驱动设计实战-分层架构
DDD分层架构通过明确各层职责及交互规则,有效降低了层间依赖。其基本原则是每层仅与下方层耦合,分为严格和松散两种形式。架构演进包括传统四层架构与改良版四层架构,后者采用依赖反转设计原则优化基础设施层位置。各层职责分明:用户接口层处理显示与请求;应用层负责服务编排与组合;领域层实现业务逻辑;基础层提供技术基础服务。通过合理设计聚合与依赖关系,DDD支持微服务架构灵活演进,提升系统适应性和可维护性。
|
2月前
|
Kubernetes API 调度
中间层 k8s(Kubernetes) 到底是什么,架构是怎么样的?
中间层 k8s(Kubernetes) 到底是什么,架构是怎么样的?
68 3
|
21天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
1月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
43 3