侵权投诉

K8S集群内Debug微服务的最佳实践

Linux爱好者 2021-02-02 14:39 次阅读

在 K8s 集群中调试微服务很困难。有时我们遇到在不真实的环境下难以复现的 bug。在本机用你最习惯的工具调试达到和在集群中运行服务一样的效果,这其实只需要运行几个命令。

所用工具

为了达到目标效果,我主要用如下工具:

Gebug

https://github.com/moshebe/gebug

这个开源工具让调试容器化了的Go程序非常方便,它是通过开启热更新和debugger配置实现的。我就是这个工具的作者嘻嘻。

Telepresence

https://www.telepresence.io/

这是一个很厉害的 CNCF 项目,这个项目可以用来与集群网络做网络隧道。

我认为,熟悉一个工具最好的办法就是去用它,接着就来配置demo环境。

Kubernetes集群

我们使用一个小kubernetes集群,跑一个hello-world deployment、暴露一个服务。

既然是要做demo,我就用minikube了。如果你已经有一个运行中的非生产环境集群,那么你就用你的集群。注意不要在生产环境做测试

kubectlcreatedeploymenthello-world--image=datawire/hello-world
kubectlexposedeploymenthello-world--type=LoadBalancer--port=8000

当前kubernets集群状态

8a5a8c46-5f10-11eb-8b86-12bb97331649.png

查看service external endpoint并跑些测试:

8ad2078a-5f10-11eb-8b86-12bb97331649.png

使用minikube提供的命令拉取外部地址。也可以通过kubectl get service hello world命令并查看 EXTERNAL_IP 字段内的信息。img

hello world 服务

我们的hello-world部署很成功。我们来做一次把http返回做成json格式。

当然也可以编译你的程序、打镜像、push到仓库、编辑deployment、等等等等,最后搞定。我们来用短平快的办法做这事。

这是个简单HTTP server:

packagemain

import(
"fmt"
"net/http"
)

funcmain(){
http.HandleFunc("/",func(whttp.ResponseWriter,r*http.Request){
fmt.Println("Gotrequest")
fmt.Fprintf(w,`{"hello":"world"}`)
})
http.ListenAndServe(":8000",nil)
}

这是Gebug配置:

name:my-server
output_binary:/app
build_command:gobuild-gcflags="all=-N-l"-o/app
run_command:/app
runtime_image:golang:1.15.2
debugger_enabled:true
debugger_port:4321
expose_ports:
-8000:8000
networks:[]
environment:[]

注意,如果没有安装Gebug可以运行go get -u github.com/moshebe/gebug安装。

Telepresence

这个强大的工具让我们绕过了复杂难懂的网络配置,可以直接把服务连接到集群中。

安装指南: https://www.telepresence.io/reference/install

下一步是暴露本地的服务、把流量连接到集群,就可以替换掉已经存在的deployment了。

我们的deployment叫hello-world,暴露8000端口,命令如下:

telepresence--swap-deploymenthello-world--expose8000:8000--methodinject-tcp--rungebugstart

上面这个命令做了几件事:

  • 开一个程序负责把命中的DNS和IP段的请求重定向到k8s集群上

  • swap-deployment 这个选项是让Telepresence用运行在Telepresence代理上的东西替换掉已经存在的hello-world pod。一旦我们退出,老pod也会被恢复。

  • run 选项告诉Telepresence用Gebug工具运行我们的服务,把这个服务和网络代理绑定。

只要 http server 在 telepresence 中运行着,就可以从 k8s 集群内部访问这个服务。

展示一下

下面演示 debug 一个发到 k8s 暴露的 endpoint 的请求:

8b1c8c88-5f10-11eb-8b86-12bb97331649.gif

完成。希望你可以从中获益,为你调试微服务提速。

责任编辑:xj

原文标题:K8S 集群内 Debug 微服务的最佳实践

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。


原文标题:K8S 集群内 Debug 微服务的最佳实践

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

CC Debugger调试工具SmartRF_Flash_Programmer-1.12.8破解版

CC Debugger调试工具SmartRF_Flash_Programmer-1.12.8破解版
发表于 03-10 15:08 77次 阅读
CC Debugger调试工具SmartRF_Flash_Programmer-1.12.8破解版

Debug模式下用户能否在程序自由运行期间立即添加新的断点?

在Keil/IAR开发环境下的Debug模式下,用户能否在程序自由运行期间立即添加新的断点? ...
发表于 01-08 07:42 101次 阅读
Debug模式下用户能否在程序自由运行期间立即添加新的断点?

Vivado使用技巧:debug仿真设计的三种调试方法

源代码级别调试 Vivado Simulator提供了在仿真过程中debug设计的特性,通过为源代码....
的头像 39度创意研究所 发表于 12-29 15:57 822次 阅读
Vivado使用技巧:debug仿真设计的三种调试方法

请问CCSV7 编译时出现这种 unresolved symbols remain报错该怎么解决?

[table] [tr][td] 报错的具体内容如下: undefined               &...
发表于 12-11 16:48 425次 阅读
请问CCSV7 编译时出现这种 unresolved symbols remain报错该怎么解决?

请问CCSV7 编译时出现这种 unresolved symbols remain报错该怎么解决

报错的具体内容如下: undefined                    &nbs...
发表于 12-11 16:36 1041次 阅读
请问CCSV7 编译时出现这种 unresolved symbols remain报错该怎么解决

【HarmonyOS HiSpark AI Camera试用连载 】初遇鸿蒙系统——5.修复了因bundleName无法识别下划线(_)导致Hap安装失败

前言✨✨✨✨✨✨✨✨✨✨✨✨完成PR合并后还是很开心,也是为鸿蒙贡献过代码的人儿了哈哈哈。PR合并完成: 由于发了两次还...
发表于 12-04 22:04 422次 阅读
【HarmonyOS HiSpark AI Camera试用连载 】初遇鸿蒙系统——5.修复了因bundleName无法识别下划线(_)导致Hap安装失败

关于Vivado中三种操作Debug的方式

Vivado中提供了多种Debug的操作方式,下面就来总结一下: 1. 代码中例化ILA IP核 第....
的头像 39度创意研究所 发表于 11-11 17:07 644次 阅读
关于Vivado中三种操作Debug的方式

在深度学习实践中的调试过程

其中和是预测结果,以概率分布的形式表达,如等,一般是通过softmax层实现,和是样本真实标签,在单....
的头像 深度学习自然语言处理 发表于 08-28 09:57 447次 阅读
在深度学习实践中的调试过程

虚拟机:Hadoop集群的测试

通过前面的学习,此时还不能直接启动集群,因为在初次启动HDFS集群时,编写对主节点进行格式化处理
的头像 如意 发表于 07-01 13:03 829次 阅读
虚拟机:Hadoop集群的测试

设置 GDB 代码搜索路径的方法

在用GDB进行 debug的时候,可以用 directory 设置搜索目录,用 show direc....
的头像 如意 发表于 06-22 16:04 827次 阅读
设置 GDB 代码搜索路径的方法

请问Debug与Release的区别是什么?

写了一段在FLASH中运行的程序,结果是在Debug模式下编译的程序可以正常运行,而Release模式下编译的程序却运行有误。请问...
发表于 06-17 09:28 177次 阅读
请问Debug与Release的区别是什么?

Debug时下载代码超级慢的解决办法?

安装的CCS版本如下: Version: 5.0.1.201105110900 Build id: N201105110900 , 有几个问题请教: 1、Debug时下载代...
发表于 06-16 14:40 178次 阅读
Debug时下载代码超级慢的解决办法?

DRV8312-C2-KIT的例程无法DEBUG怎么办?

程序是直接使用CCS4.2导入C:\ti\controlSUITE\development_kits\DRV8312-C2-KIT_v128\BLDC_Sensore的,勾选...
发表于 06-09 13:23 179次 阅读
DRV8312-C2-KIT的例程无法DEBUG怎么办?

debug模式编译烧到flash里上电程序会跑吗?

    有点儿浅薄,想不明白。     一般说软件的开发过程,先用在RAM里运行的模式,用Debug版本,调试得...
发表于 06-04 10:02 166次 阅读
debug模式编译烧到flash里上电程序会跑吗?

Debug连接仿真时报错怎么办

在进行联机调试时,经常出现debug失败,无法仿真,有如下错误: C28xx: Trouble Reading Register PC: (Error -1041 @ 0...
发表于 05-29 09:09 289次 阅读
Debug连接仿真时报错怎么办

6726B DEBUG模式和BOOT模式在硬件上如何设置

BOOT模式使用内部rom 是否需要gpio管脚设置来区分BOOT和DEBUG?...
发表于 05-25 13:05 260次 阅读
6726B DEBUG模式和BOOT模式在硬件上如何设置

DeBug太枯燥?让VS Code画个图

写代码,难免会遇到各种神奇的问题,代码短我们在脑海中「运行」一遍也就差不多能找出原因。但代码要是比较....
的头像 人工智能爱好者社区 发表于 05-12 09:19 1918次 阅读
DeBug太枯燥?让VS Code画个图

Agilent仪器的Debug工具资料详细说明

本文档的主要内容详细介绍的是Agilent仪器的Debug工具资料免费下载,visa指令全解释。完美....
发表于 05-11 08:00 159次 阅读
Agilent仪器的Debug工具资料详细说明

Oracle RAC集群结构的特点和缺点

Oracle RAC,全称是Oracle Real Application Cluster,顾名思义....
的头像 汽车玩家 发表于 05-05 22:14 2099次 阅读
Oracle RAC集群结构的特点和缺点

集群和分布式有什么区别

经常听到MySql集群、Redis集群、分布式系统等概念,但是,很少有机会深究,到底什么集群,什么是....
的头像 汽车玩家 发表于 05-03 18:24 701次 阅读
集群和分布式有什么区别

简单分析Java高可用集群和微服务架构

可能大部分读者都在想,为什么在这以 dubbo、spring cloud 为代表的微服务时代,我要还....
的头像 汽车玩家 发表于 05-03 18:17 773次 阅读
简单分析Java高可用集群和微服务架构

微服务架构四大金刚利器

概述 互联网应用发展到今天,从单体应用架构到SOA以及今天的微服务,随着微服务化的不断升级进化,服务....
发表于 03-18 10:48 196次 阅读
微服务架构四大金刚利器

容器和微服务器将会如何来改变安全性

构建和部署阶段的安全性把重点放在将控件应用于开发人员工作流程以及持续集成和部署管道(deployme....
发表于 03-17 11:32 164次 阅读
容器和微服务器将会如何来改变安全性

浅谈STM32调试DEBUG相关知识

说说STM32调试DEBUG相关知识
的头像 黄工的嵌入式技术圈 发表于 03-06 15:23 905次 阅读
浅谈STM32调试DEBUG相关知识

STM32F1系列DEBUG调试功能需要配置吗?

STM32F1系列的DEBUG调试功能需要配置吗?
的头像 黄工的嵌入式技术圈 发表于 03-01 13:57 1063次 阅读
STM32F1系列DEBUG调试功能需要配置吗?

docker跨主机通信的方法

flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具。
的头像 汽车玩家 发表于 01-21 17:14 1433次 阅读
docker跨主机通信的方法

要学会调试内核打印debugfs

name是创建的目录名字,parent是该目录的父目录。如果填NULL,则直接出现在debugfs的....
发表于 04-27 19:01 556次 阅读
要学会调试内核打印debugfs

你知道Linux内核里的DebugFS?

DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交....
发表于 04-25 18:55 385次 阅读
你知道Linux内核里的DebugFS?

找到适用现代机器学习模型的测试和Debug新方法

目前大多数研究都集中在监督学习(主要是图像分类)的背景下,但是需要将这些想法扩展到其他条件。在最近关....
的头像 新智元 发表于 04-08 13:53 1654次 阅读
找到适用现代机器学习模型的测试和Debug新方法

集群的作用及搭建方法及设计方案

数据量和访问量:估算应用需要的数据量和总访问量(考虑业务发展,留有冗余),结合每个主节点的容量和能承....
的头像 电子发烧友网工程师 发表于 01-15 16:43 6497次 阅读
集群的作用及搭建方法及设计方案

江西贵溪市高端线缆线束产业列入省重点工业产业集群项目

新增省重点产业集群,是我市深入贯彻省“工业强省”战略的体现,也是我市认真贯彻鹰潭市委“三大四聚”发展....
发表于 12-22 11:03 2750次 阅读
江西贵溪市高端线缆线束产业列入省重点工业产业集群项目

STM32调试DEBUG时需要了解那些知识相关资料概述

学习STM32开发,肯定少不了DEBUG调试这一步骤。那么,本文带你了解一下这个调试相关的知识。本文....
的头像 嵌入式资讯精选 发表于 11-11 11:39 4711次 阅读
STM32调试DEBUG时需要了解那些知识相关资料概述

基于STM32单片机通过使用宏assert_param来实现运行时间检测

固件函数库通过检查库函书的输入来实现运行时间错误侦测。通过使用宏assert_param来实现运行时....
发表于 10-22 15:12 633次 阅读
基于STM32单片机通过使用宏assert_param来实现运行时间检测

我的入门工程师之路

本文为【电子发烧友网】用户: 风拂柳絮投稿 ,欢迎烧友们关注我们微信公众号继续来稿! 18年刚从自动....
发表于 10-22 14:02 1324次 阅读
我的入门工程师之路

再也不需要debug?Facebook开发的AI工具帮你搞定

为了解决高触发错误,SapFix 会创建修补程序,该修补程序可以完全或部分恢复原来提交的代码。对于更....
的头像 电子发烧友网工程师 发表于 09-16 10:42 2433次 阅读
再也不需要debug?Facebook开发的AI工具帮你搞定

为数据安全而生,阿里云容灾备份方案场景实践解析

摘要: 数字经济时代,数据正以超出想象的速度快速增长。短短几年,数据量已经从TB级别跃升到PB乃至ZB级别。数
发表于 08-28 14:38 49次 阅读
为数据安全而生,阿里云容灾备份方案场景实践解析

阿里云王牌架构师杨曦:也谈系统缓存设计误区及高阶使用技巧

摘要: 相信很多研发同学都有过引入缓存进入到应用架构设计中的经历,本文从几个角度阐述一些选型误区和使用误区以及
发表于 08-22 17:33 82次 阅读
阿里云王牌架构师杨曦:也谈系统缓存设计误区及高阶使用技巧

全球公测,阿里云Serverless Kubernetes 更快、更强、更省心

摘要: Serverless Kubernetes全球公测进行时!2018年8月,阿里云Serverless
发表于 08-17 17:45 90次 阅读
全球公测,阿里云Serverless Kubernetes 更快、更强、更省心

当HBase与云邂逅,又碰撞出了什么样的火花?

摘要: 阿里云HBase2.0也就是阿里云即将要上线的ApsaraDB for HBase2.0。它不仅兼容开
发表于 08-03 11:44 45次 阅读
当HBase与云邂逅,又碰撞出了什么样的火花?

技术大牛论道HBase 3.0 可能的新特性

摘要: 经过了四年的发展历程,HBase 2.0终于发布上线,其增加了很多的新特性,能够更好地适应更多的场景,
发表于 08-03 11:21 50次 阅读
技术大牛论道HBase 3.0 可能的新特性

大数据时代的结构化存储—HBase在阿里的应用实践

摘要: # 前言 时间回到2011年,Hadoop作为新生事物,在阿里巴巴已经玩得风生水起,上千台规模的"云梯
发表于 08-03 10:32 37次 阅读
大数据时代的结构化存储—HBase在阿里的应用实践

阿里云正式推出消息队列Kafka:兼容开源,数据可靠性99.999999%

摘要: 7月25日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态。在兼容Apache生态的基础上,阿
发表于 07-31 16:53 51次 阅读
阿里云正式推出消息队列Kafka:兼容开源,数据可靠性99.999999%

阿里云消息队列Kafka商业化:支持消息无缝迁移到云上

列Kafka彻底解决了开源产品稳定性不足的痛点,可用性达99.9%,数据可靠性99.999999%,并且支持消
发表于 07-27 10:49 32次 阅读
阿里云消息队列Kafka商业化:支持消息无缝迁移到云上

Apache旗下顶级开源盛会 HBasecon Asia 2018将于8月在京举行

摘要: 作为Apache基金会旗下HBase社区的顶级用户峰会,HBaseCon大会是Apache HBase
发表于 07-25 17:43 6次 阅读
Apache旗下顶级开源盛会 HBasecon Asia 2018将于8月在京举行

EHPC通过断点续算和自动伸缩在抢占式实例上实现低成本HPC计算

摘要: E-HPC 低成本计算方案 E-HPC作为阿里云上的云超算产品将HPCaaS公共云服务提供给客户,将公
发表于 07-23 14:02 793次 阅读
EHPC通过断点续算和自动伸缩在抢占式实例上实现低成本HPC计算

K8S-V1.8.13集群安装配置全记录的详细资料免费下载

本文档的主要内容详细介绍的是K8S-V1.8.13集群安装配置全记录的详细资料免费下载
发表于 07-11 08:00 503次 阅读
K8S-V1.8.13集群安装配置全记录的详细资料免费下载

JAVA科普:分布式和集群

小明的公司有3个系统: 系统A、系统B和系统C ,这三个系统所做的业务不同,被部署在3个独立的机器上....
的头像 Linuxer 发表于 07-01 09:53 3403次 阅读
JAVA科普:分布式和集群

PICkitTM 3 Debug Express和C语言课程的详细资料概述

本文档说明了如何使用 PICkitTM 3 Debug Express 作为开发工具在目标板上仿真和....
发表于 06-13 11:27 586次 阅读
PICkitTM 3 Debug Express和C语言课程的详细资料概述

含有JTAG Debug接口模块的CPU提高下载速度

通常所说的JTAG大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类用于Debug;一....
的头像 电子设计 发表于 05-29 09:41 4643次 阅读
含有JTAG Debug接口模块的CPU提高下载速度

一文读懂集群、分布式、SOA

传统的系统架构就是经典的三层结构,就一个项目跑在一个tomcat中,但是随着用户数量的增加,一个服务....
发表于 05-04 16:10 2084次 阅读
一文读懂集群、分布式、SOA

AM335x NAND闪存启动失败问题Debug的解决方案详细概述

目前看到不少人遇到了NAND flash启动失败的问题,调试的时候也是出现了五花八门的情况。有的硬件....
发表于 04-24 16:16 435次 阅读
AM335x NAND闪存启动失败问题Debug的解决方案详细概述

基于SLUB的DEBUG功能,如何帮忙检测内存越界和访问已经释放的内存

SLAB内存分配器-SLUB的DEBUG功能,如何帮忙检测内存越界(out-of-bounds)和访....
的头像 Linuxer 发表于 02-08 14:11 6755次 阅读
基于SLUB的DEBUG功能,如何帮忙检测内存越界和访问已经释放的内存

Linux之HA高可用集群知识,学到就是赚到

HA(High Availability)高可用集群,其特点为根据实际需求为前端Diretor,后端....
的头像 马哥Linux运维 发表于 12-23 07:10 4633次 阅读
Linux之HA高可用集群知识,学到就是赚到

集群_负载均衡_分布式的区别是什么

集群通信系统是一种用于集团调度指挥通信的移动通信系统,主要应用在专业移动通信领域。该系统具有的可用信....
发表于 12-21 11:16 4072次 阅读
集群_负载均衡_分布式的区别是什么

通过一个小Demo进行Debug库文件C/C++代码

在C/C跨平台开发中,我们知道在Windows上可以通过VS,进行单步断点调试,这非常方便。但是我们....
发表于 12-06 09:01 1173次 阅读
通过一个小Demo进行Debug库文件C/C++代码

zookeeper集群基础知识与linux系统环境的搭建

Zookeeper学习笔记 1.认识zookeeper 1.1 zookeeper是什么? ZooK....
发表于 11-29 10:44 1305次 阅读
zookeeper集群基础知识与linux系统环境的搭建

Eureka的集群搭建方法-保证高可用

在微服务架构中,注册中心是一个必不可少的组件 前面我们搭建的注册中心只适合本地开发使用,在生产环境必....
发表于 11-29 10:41 6573次 阅读
Eureka的集群搭建方法-保证高可用

云环境中基于LVS集群的负载均衡算法

为了解决传统负载均衡技术应用到云计算环境中引发的新问题,提出一种云环境下基于LVS集群分组负载均衡算....
发表于 11-24 11:05 325次 阅读
云环境中基于LVS集群的负载均衡算法

双机热备和集群的区别

所谓双机热备,就是将中心服务器安装成互为备份的两台服务器,并且在同一时间内只有一台服务器运行。当其中....
发表于 11-21 15:37 4432次 阅读
双机热备和集群的区别

Vivado中使用debug工具步骤与调试技巧

在ISE中称为ChipScope而Vivado中就称为in system debug。下面就介绍Vi....
发表于 11-17 14:05 35208次 阅读
Vivado中使用debug工具步骤与调试技巧