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

Kubernetes (K8s) 运维实战手册:小白必看 实战指南:从零搭建生产级K8s环境 本指南以Go电商微服务为例,详细介绍在云上搭建生产级K8s环境的完整流程: 集群搭建 提供阿里云ACK和Google GKE两种选择方案 配置kubectl工具并完成集群连接验证 容器化部署 使用多阶段构建优化Go服务Docker镜像 推送镜像至ACR/GCR等云仓库 强调安全最佳实践(非root用户、静态编译) 核心工具链安装 通过Helm安装Nginx Ingress Controller 配置Cert-Manager实现自动证书管理 提供常见问题排查方法(如LB p 阅读详情

Go微服务架构实战-公粽号:【堆栈future】

本系列文章主要是针对云原生领域微服务架构的实战,包括网关,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架构图

图片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相关的你就得了解它。图片

公粽号:堆栈future

使很多处于迷茫阶段的coder能从这里找到光明,堆栈创世,功在当代,利在千秋

从 Golang 到 Kubernetes:如何用 Go 开发云原生应用 摘要 本文探讨了如何利用 Go 语言开发云原生应用,重点介绍了 Go 与 Kubernetes 的集成优势。Go 凭借其高效、简洁和强大的并发能力,成为云原生开发的首选语言,尤其适合构建 Kubernetes 相关工具和平台。文章详细介绍了 Kubernetes 的 Go 客户端 client-go,并提供了实际示例,展示如何使用 Go 创建和管理 Pod 等 Kubernetes 资源。此外,还探讨了 Go 在容器化、微服务架构和高并发场景下的应用价值,为开发者提供了开发云原生应用的实用指南。 关键词:G 阅读详情

相关推荐

goLang 服务部署到 k8s 简单入门教程

golang服务代码 这里简单写一个k8s-demo的服务,提供两个接口ping和version接口,main.go文件代码如下: package main import ( "net/http" "github.com/gin-gonic/gin" ) func statusOKHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"status": "success"}) } func versionHan

JineD的博客 3038

Go开发运维:Go服务发布到K8S集群

(1)linux机器安装go(基于CentOS 7系统)(14)修改svc的type类型变成nodePort。(11)创建deployment的yaml文件。(7)编写dockerfile文件。(9)打包镜像,传到k8s工作节点。(10)在node1节点解压镜像。(5)如遇到Harbor登录不了。实现功能:容器里封装二进制代码。(4)Go mod初始化项目。(13)查看pod和svc。(1)每个节点修改配置文件。(2)Harbor新建项目。(12)更新yaml文件。(16)浏览器访问测试。

cronaldo91的博客 1085

在K8s上部署Go服务

目标 镜像名:foxliang/go:v 镜像内容:二进制文件,跑起来是个http服务,监听8080端口,接到请求会打印 This is version:{v} running in pod {hostname},其中v是可变参数代表版本(字符串1.0这种),可以通过传参数进去 1、将上面的二进制部署成一个服务跑起来 2、服务需要包含3个副本 3、可以外部访问这个服务 4、可以对服务的版本进行滚动更新(通过传参进去) 1.先添加一个最简单的golang服务 写一个main.go文件提供了一个 .

JineD的博客 2394

2024年最新【算法学习】剑指 Offer 64(2),2024年最新vue总结来了

--### c// 2的14次正好超过10000// 等差数列求和公式n * (n + 1) / 2public:// 2的14次正好超过10000// 等差数列求和公式n * (n + 1) / 2# 2的14次正好超过10000# 等差数列求和公式n * (n + 1) / 2ans = 0a = nb = n + 1// 2的14次正好超过10000// 等差数列求和公式n * (n + 1) / 2ans += a。

2401_84910839的博客 593

上、下拉电阻(定义、强弱上拉、常见作用、吸电流、拉电流、灌电流)

1.上、下拉电阻定义 上拉电阻是把一个信号通过一个电阻接到电源(Vcc),下拉电阻是一个信号通过一个电阻接到地(GND)。 2.强上拉、弱上拉 强上拉、弱上拉的强弱只是上拉电阻的阻值不同,没有什么严格区分。例如:50Ω上拉,一般成为强上拉;100kΩ上拉则称为弱上拉。下拉也是一样的。强拉电阻的极端就是0Ω电阻,即将信号线直接与电源或低相连接。 3.上、下拉电阻的作用 因为上下拉电阻的作用概念很宽泛,不用领域的使用方法也不同,常见使用方法整理如下: ...

小浪宝宝的博客 3万+

「转载」vaptcha 等手势验证码图像识别与轨迹提取(思路)

作者:文安哲 从博客重开以后就说要更文章,鸽了蛮久了,赶紧补上一篇嫖嫖各位老公的流量。 最近看群里面大家讨论研究手势验证码比较多,然后我也顺带研究做了一下,给各位老公们分享一下做的过程。 首先,一起来康康手势验证码长啥样! 大概就是长这个样子,需要按照图像中的那条轨迹再图片上滑动,不得不说这类验证码确实体验感拉满,让人很想立马关掉这个网站。 那么言归正传,这类验证码该怎么做识...

AI悦创·编程私教1v1 3597

【Golang学习之旅】Go 语言微服务架构实践(gRPC、Kafka、Docker、K8s)

随着互联网技术的飞速发展,尤其是云计算的普及,微服务架构已经成为企业构建大型、分布式系统的主流选择。微服务架构的核心思想是将一个传统的单体应用程序拆解成若干个小而独立的服务,每个服务运行在独立的进程中,通过网络进行通信。每个微服务都负责一个独立的功能,并且可以根据业务需求独立开发、部署和扩展。在微服务架构中,服务之间通过标准协议(如HTTP、gRPC等)进行通信,而每个服务都拥有自己的数据存储和处理逻辑,避免了数据集中管理的单点故障问题。

程序员林北北的博客 3144

深度学习优化算法解析(Momentum, RMSProp, Adam)

之前看了很多人介绍网络的优化器optimizer,无奈很多都把简单的东西讲的复杂化了,不容易让人懂,恰好之前看过吴恩达老师的最新的课程,这里结合老师讲的和个人想法写一下,方便别人同时也为自己以后回顾吧。 深度学习的优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法吧,还有诸如Adagrad算法,不过大同小异,理解了前面几个,后面的也就引刃而解了。GD算法,SGD算法以及m

willduan的博客 12万+

F´ 从旧 Make 构建系统迁移到 CMake 的完整指南

本文是一份面向 F´(F Prime)飞行软件与嵌入式系统框架用户的 CMake 迁移指南,围绕仓库 [docs/UsersGuide/cmake/Migration.md](https://link.gitcode.com/i/b110498032eaae2b9010ad78e07a596b) 的官方指引展开,逐一说明如何用新 CMake 构建系统替换历史遗留的 make 系统:涵盖代码生成器直

gitblog_00310的博客 783

TIFF文件渲染避坑指南:Three.js与Cesium的5个关键差异点

本文深入对比了Three.js与Cesium在渲染TIFF文件时的5个核心差异点,包括坐标系处理、内存管理、着色器系统、性能优化策略和错误处理机制。重点解析了Cesium的全球WGS84坐标系与Three.js局部坐标系对地理空间数据渲染的根本影响,并提供了针对性的性能优化与调试方案,帮助开发者根据项目需求选择合适的3D引擎并有效避坑。

weixin_29243279的博客 332

【异常检测】新版异常检测库anomalib的使用

异常检测库anomalib的使用。

胡侃有料的博客 4390

【go微服务】Golang微服务之基--rpc的实现原理以及应用实战

微服务是通过这种架构设计方法拆分出来的一个独立的组件化小应用 微服务架构定义的精髓,可以用一句话来描述,那就是 分而治之,合而用之。将复杂的系统进行拆分的方法,就是分而治之。分而治之,可以让复杂的事情变的简单,这很符合我们平时处理问题的方法。

景天科技苑 9万+

LVGL 丝滑菜单3(Silk Menu)

h。

摸鱼专家 89

Go微服务架构实战 中篇:2. 基于k8s部署服务和注册中心,验证服务注册和发现

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

stackfuture的博客 2172

JavaScript实现量化交易策略(附完整源码)

JavaScript实现量化交易策略(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 721

【unity游戏开发入门到精通——UGUI】文本控件 —— TextetMeshPro新文本控件(TextMeshPro - Text(UI)和TextMeshPro - Text)

文本组件是UGUI中最常用的组件,它的作用是对文本数据进行处理并显示。UGUI的文本组件可以分两为种——Text旧文本控件、TextMeshPro新文本组件。本文主要是介绍TextMeshPro新文本控件,而TextMeshPro新文本控件又可以分为两种——TextMeshPro - Text(UI)和TextMeshPro - Text。TextMeshPro是Unity收购的一个第三方插件,现在已经自动内置到编辑器中,只要使用一次就会自动导入到工程。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3756

Golang微服务架构:从零实战高性能Go服务 (go-zero/pprof/K8s)

Go语言实战开发指南 本文分享了Go语言开发的实战经验,分为三个关键步骤: 基础夯实:强调动手实践的重要性,建议通过并发编程案例(如医疗问卷处理系统)来掌握goroutine和channel的核心概念。 服务设计:介绍从单体架构到微服务的转型经验,建议采用领域驱动设计进行服务拆分,并分析gRPC和RESTful API的不同应用场景。 微服务实战:推荐使用go-zero框架构建完整微服务,包括服务契约定义、API开发和服务治理等功能。 文章包含完整代码示例,如Gin框架实现的患者查询API,并强调实际项目中

张国良的博客 1173

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

monorepo-microservices:构建微服务架构的核心功能

monorepo-microservices:构建微服务架构的核心功能 项目介绍 在当今微服务架构日益流行的趋势下,如何高效地构建和维护多个服务成为开发者的关注焦点。monorepo-microservices 项目是一个使用 Go 语言实现的示例,展示了如何利用单一代码仓库构建多个微服务。该项目不专注于代码本身,而是侧重于使用 Kubernetes 作为容器编排平台进行服务的部署。项目还尝试引入...

gitblog_00210的博客 1152

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Go微服务架构实战指南:基于building-microservices-youtube的企业级解决方案

在当今云原生时代,单体应用正面临前所未有的挑战:部署困难、扩展性差、技术栈固化。如何将庞大的单体应用拆分为可独立开发、部署和扩展的微服务?building-microservices-youtube项目提供了一个完整的Go语言微服务实战案例,展示了如何通过清晰的服务边界、高效的通信机制和可靠的架构设计,构建可扩展的分布式系统。 ## 微服务拆分:从单体到分布式系统的演进之路 传统单体应用将所有

gitblog_00056的博客 969

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Go实战项目OneX介绍(1/12):一个功能全、扩展强、代码质量高的企业级 GO+云原生实战项目

今天介绍一个非常值得学习的Go、云原生实战项目。

分享 Go、云原生、AI Infra 相关技术 2144

Go微服务架构实战 中篇:4. 基于ingress的限流,路径匹配和重写实战

Go微服务架构实战Go微服务架构实战目录1. 微服务架构上篇1. grpc技术介绍2. grpc+protobuf+网关实战3. etcd技术介绍4. 基于etcd的服务发现与注册5. 基于etcd的分布式锁实战2. 微服务架构中篇1. k8s架构介绍2. 基于k8s的容器化部署3. 基于k8s的Deployment工作负载4. 基于k8s的ingress实战到现在为止我们的服务都是跑在集群内部的,为了让集群外部也能访问,那么我们需要让服务外化,但是因为minikube在mac上是网络不通的,所以我们我们直

stackfuture的博客 2638

Go微服务架构实战 中篇:6. 微服务治理策略

Go微服务架构实战Go微服务架构实战目录1. 微服务架构上篇1. grpc技术介绍2. grpc+protobuf+网关实战3. etcd技术介绍4. 基于etcd的服务发现与注册5. 基于etcd的分布式锁实战2. 微服务架构中篇1. k8s架构介绍2. 基于k8s的容器化部署3. 基于k8s的Deployment工作负载4. 基于k8s的ingress实战5. 基于ingress和service实现灰度发布6. 常见的服务治理策略干货:服务容错: 故障转移/快速失败/故障恢复等流量控制:滑动时间窗口/令

stackfuture的博客 1387

ESPnet2 IEMOCAP ASR 实战:基于 HuBERT / Conformer 的语音情感识别与情绪标注联合建模

本文基于 ESPnet2 端到端语音处理工具包中的 IEMOCAP 口语情感语料库 ASR Recipe([egs2/iemocap/asr1/README.md](https://link.gitcode.com/i/9fefe6403a01b526188ae6d9286eb92b)),完整讲解如何在同一个语音识别模型中联合输出「转写文本 + 情感/情绪标签」:既包含基于 Transformer

gitblog_00117的博客 263

Go微服务架构实战[完整]

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

stackfuture的博客 2227

Go语言的Kubernetes与微服务

1.背景介绍 1. 背景介绍 Kubernetes(K8s)是一个开源的容器编排系统,由Google开发,现在已经成为了容器化应用的标准。Kubernetes可以帮助我们自动化地管理、扩展和滚动更新容器化的应用。 微服务架构是一种软件架构风格,将单个应用拆分成多个小服务,每个服务运行在自己的进程中,通过网络进行通信。这种架构可以提高应用的可扩展性、可维护性和可靠性。 Go语言是一种静态类型...

AI天才研究院 1151
上一篇: Go的slice扩容不是全部都按照1.25扩容的,还有内存对齐的概念,别再被忽悠了
下一篇: Go微服务架构实战 中篇:2. 基于k8s部署服务和注册中心,验证服务注册和发现
stackfuture
博客等级 码龄5年 23粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值