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


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用构建高效微服务架构:后端开发的新范式
【4月更文挑战第30天】 随着企业加速其数字化进程,云原生架构已成为支撑复杂、可伸缩和灵活应用的骨干。本文探讨了云原生技术的崛起,重点分析了其在促进业务敏捷性、提高运营效率及推动创新方面的核心价值。通过深入剖析云原生生态系统的关键技术组件,如容器化、微服务、持续集成/持续部署(CI/CD)和DevOps实践,揭示了企业如何利用这些技术来构建和维护高度可用且动态的IT环境。文章还提出了一个多维度的采纳框架,帮助企业评估和实施云原生解决方案,以实现真正的业务价值。 【4月更文挑战第30天】在现代软件开发的快速演变中,微服务架构已经成为一种领先的设计模式,用于构建可扩展、灵活且容错的应用程序。与传
|
3天前
|
JSON 安全 Java
微服务Token鉴权设计:概念与实战
【4月更文挑战第29天】在微服务架构中,鉴权是确保服务安全的重要环节。由于微服务往往由多个独立的服务组成,这些服务之间的通信需要一种高效、安全的鉴权机制。Token鉴权作为一种常用的鉴权方式,为微服务架构提供了简洁而有效的解决方案。
11 0
|
3天前
|
Kubernetes 监控 Docker
|
3天前
|
安全 Java 数据安全/隐私保护
Spring Boot优雅实现多租户架构:概念与实战
【4月更文挑战第29天】在多租户系统中,一个应用实例服务于多个租户,每个租户享有独立的数据视图,而应用的基础设施被共享。这样的架构不仅优化了资源使用,还能降低维护和运营成本。本文将详细介绍如何在Spring Boot中实现多租户架构,并提供具体的实战案例。
25 2
|
3天前
|
JSON API Go
Go-Zero从0到1实现微服务项目开发(二)
继续更新GoZero微服务实战系列文章:上一篇被GoZero作者万总点赞了,本文将继续使用 Go-zero 提供的工具和组件,从零开始逐步构建一个基本的微服务项目。手把手带你完成:项目初始化+需求分析+表结构设计+api+rpc+goctl+apifox调试+细节处理。带你实现一个完整微服务的开发。
|
5天前
|
Kubernetes 负载均衡 Docker
【专栏】构建高效微服务架构:Docker与Kubernetes的完美搭档
【4月更文挑战第27天】本文介绍了Docker和Kubernetes在构建微服务架构中的应用。Docker是开源容器引擎,用于打包和分发应用,实现隔离和封装,提升可扩展性和可维护性。Kubernetes是容器编排平台,自动化部署、扩展和管理容器,提供负载均衡和故障转移。二者结合,能高效支持微服务架构。文中通过实例展示了如何将用户、商品和订单服务用Docker打包,再用Kubernetes部署和管理,确保微服务稳定运行。
|
8天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【4月更文挑战第24天】 随着现代软件开发的演变,微服务架构已成为实现可扩展、灵活且容错的系统的首选方法。本文将深入探讨如何利用Docker容器化技术和Kubernetes容器编排平台来构建和维护一个高效的微服务环境。我们将分析Docker和Kubernetes的核心原理,并展示它们如何协同工作以支持服务的部署、管理和自动化扩展。通过实际案例和最佳实践,读者将了解到在设计微服务时如何避免常见的陷阱,并采取策略优化性能和资源利用率。
|
13天前
|
Kubernetes Cloud Native Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(下)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
54 0
|
13天前
|
Cloud Native 算法 Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(上)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
50 0
|
20天前
|
Kubernetes 网络协议 调度
Kubernetes架构与组件
Kubernetes架构与组件
26 0

推荐镜像

更多