阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

274次阅读
没有评论

共计 1858 个字符,预计需要花费 5 分钟才能阅读完成。

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

K8S 集群内 Debug 微服务的最佳实践
为了达到目标效果,我主要用如下工具:

Gebug

https://github.com/moshebe/gebug

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

Telepresence

https://www.telepresence.io/

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

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

Kubernetes 集群

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

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

kubectl create deployment hello-world --image=datawire/hello-world
kubectl expose deployment hello-world --type=LoadBalancer --port=8000

当前 kubernets 集群状态

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

查看 service external endpoint 并跑些测试:

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

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

hello world 服务

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

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

这是个简单 HTTP server:

package main

import (
 "fmt"
 "net/http"
)

func main() {http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {fmt.Println("Got request 🎉")
  fmt.Fprintf(w, `{"hello":"world"}`)
 })
 http.ListenAndServe(":8000", nil)
}
这是 Gebug 配置:name: my-server
output_binary: /app
build_command: go build -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-deployment hello-world --expose 8000:8000 --method inject-tcp --run gebug start

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

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

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

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

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

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1858字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7805801
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...