iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > GO >goland远程调试k8s上容器的实现
  • 476
分享到

goland远程调试k8s上容器的实现

goland远程调试k8s容器goland远程调试k8s 2023-02-01 12:02:36 476人浏览 薄情痞子
摘要

目录选node并同步代码准备debug镜像创建deployment创建svc上次也遇到过一次需要在k8s的容器里debug程序的情况,当时找了个偷懒的办法绕过去了,这回绕不过去了,老

上次也遇到过一次需要在k8s容器里debug程序的情况,当时找了个偷懒的办法绕过去了,这回绕不过去了,老老实实整一把。主要还是用dlv配合Goland的远程调试功能。

选node并同步代码

  • 可以用kubectl top node查看资源使用情况,选一个相对清闲的node,记住这个主机名nodeName
  • 可以用scp或者goland的同步功能(最好是直接在node上git clone便于分辨脏文件)将本地代码传到node上的某个路径下,记录这个代码路径codePath
  • 用这个nodeName和codePath创建deployment

准备debug镜像

  • 在node上创建一个空文件夹(空文件夹编译更快)
  • 保存如下内容到fileName
  • 执行Docker build -f fileName -t image:tag .
# 选用go1.19的alpine版本
FROM golang:1.19-alpine
# 设置go代理并下载dlv源码并编译安装
RUN go env -w GOPROXY="https://goproxy.cn,direct" && go mod download GitHub.com/go-delve/delve@v1.9.1
WORKDIR /go/pkg/mod/github.com/go-delve/delve@v1.9.1/
RUN go mod tidy 
RUN go mod vendor
RUN go install ./cmd/dlv/
# 替换源并下载GCc,非必须,看编译是否依赖
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk --no-cache add gcc 
WORKDIR /go

创建deployment

用上面的nodeName codePath image:tag替换yaml中的变量

执行kubectl apply -f deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: go-env
  name: go-env
spec:
  selector:
    matchLabels:
      k8s-app: go-env
  template:
    metadata:
      creationTimestamp: null
      labels:
        k8s-app: go-env
    spec:
      containers:
      - image: ${ImageTag}
        imagePullPolicy: IfNotPresent
        name: go-env
        stdin: true
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        tty: true
        volumeMounts:
        - mountPath: /go/src/code
          name: code
      dnsPolicy: ClusterFirst
      nodeName: ${NodeName} # node name
      restartPolicy: Always
      schedulerName: default-scheduler
      volumes:
      - hostPath:
          path: ${CodePath} # /path/to/code
          type: Directory
        name: code

创建svc

远程调试需要网络通信,创建svc将deploy的2345暴露到node的32345上

apiVersion: v1
kind: Service
metadata:
  name: go-env
spec:
  externalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 32345
    port: 2345
    protocol: tcp
    targetPort: 2345
  selector:
    k8s-app: go-env
  sessionAffinity: None
  type: NodePort

远程启动dlv

  • 执行kubectl exec进入容器
  • 执行dlv debug --headless --listen=:2345 --api-version=2 --accept-multiclient ./your_package,等待输出API server listening at: [::]:2345
  • 在goland创建GoRemote启动,ip为nodeIP,端口为32345
  • 创建完成后,点击debug按钮

到此这篇关于goland远程调试k8s上容器的实现的文章就介绍到这了,更多相关goland远程调试k8s上容器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: goland远程调试k8s上容器的实现

本文链接: https://www.lsjlt.com/news/193788.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • goland远程调试k8s上容器的实现
    目录选node并同步代码准备debug镜像创建deployment创建svc上次也遇到过一次需要在k8s的容器里debug程序的情况,当时找了个偷懒的办法绕过去了,这回绕不过去了,老...
    99+
    2023-02-01
    goland远程调试k8s容器 goland远程调试k8s
  • 使用goland调试远程代码的操作步骤
    前言 很多时候我们都在window上使用goland,并直接使用goland调试go代码。 但是很多时候我们的程序运行在Linux服务器上,虽然可以通过dlv命令行进行手动打断点调试...
    99+
    2024-04-02
  • Goland协程调度器scheduler如何实现
    本篇内容主要讲解“Goland协程调度器scheduler如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Goland协程调度器scheduler如何实现”吧!1. 调度器schedule...
    99+
    2023-06-30
  • IDEA实现远程Debug调试(附上Demo代码)
    目录 一、 前提二、 IDEA中如何实现远程Debug模式(1)、创建demo项目(2)、引入依赖(3)、创建启动类和创建demo(4)、配置idea 二、 IDEA的Debug的优缺点...
    99+
    2023-10-24
    intellij-idea java ide
  • 一文理解Goland协程调度器scheduler的实现
    目录1. 调度器scheduler的作用2. GMP模型3. 调度机制1. 调度器scheduler的作用 我们都知道,在Go语言中,程序运行的最小单元是gorouines。 然而程...
    99+
    2024-04-02
  • ASP.NET Core中怎么实现远程调试
    这篇文章给大家介绍ASP.NET Core中怎么实现远程调试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。体验Web Deploy这种发布方式可直接将代码打包发到指定服务器的指定站点下,十分方便。远程调试注意事项若要使...
    99+
    2023-06-19
  • PyCharm利用pydevd-pycharm实现Python远程调试的详细过程
    目录一、介绍二、安装三、配置3.1 PyCharm端配置3.2 Ubuntu端配置四、实际调试一、介绍 Python远程调试,即在远程机器上运行python代码在本地进行调试,之前文...
    99+
    2024-04-02
  • GoLand一键上传项目到远程服务器的方法步骤
    我们开发项目常常将项目上传到linux远程服务器上来运行,查看日志等等,每次连接终端输入命令上传文件总是很烦,最近正好在学go开发项目,用到了goland,整理一下我的配置的步骤分享...
    99+
    2024-04-02
  • 怎么实现K8S容器云CaaS平台的落地实践
    怎么实现K8S容器云CaaS平台的落地实践,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言在移动互联网时代,新的技术需要新技术支持环境、新的软件交付流程和IT架构,从而实现架...
    99+
    2023-06-04
  • Pycharm连接远程服务器并远程调试的全过程
    目录连接远程服务器同步代码配置远程解释器进行调试总结连接远程服务器 1、点击 Tools(工具),点击 部署Deployment(部署),点击Configuration(配置) 2...
    99+
    2024-04-02
  • 使用spyder3调试python程序的实现步骤
    目录Spyder官方文档地址开始调试打断点的两种姿势普通的breakpoint带条件的breakpoint总结一下刚刚所讲的剩下的一些细节Step IntoReturn说是简明教程,...
    99+
    2024-04-02
  • ASP 容器 API 文件:如何调试你的应用程序?
    ASP 是一种基于服务器端的脚本语言,它可以用来创建动态的网站和应用程序。ASP 容器 API 文件是一种包含了 ASP 容器内部函数和对象的文档,这些函数和对象可以帮助你更好地调试你的 ASP 应用程序。 本文将介绍 ASP 容器 AP...
    99+
    2023-08-19
    容器 api 文件
  • PyCharm 2021.2 (Professional)调试远程服务器程序的操作技巧
    目录一、PyCharm 2021.2 (Professional) 的安装与激活二、PyCharm 2021.2 (Professional) 调试远程服务器程序1、在 PyChar...
    99+
    2024-04-02
  • springBoot使用openfeign来远程调用的实现
    目录使用openfeign来远程调用springBoot使用openfeign使用openfeign来远程调用 1、客户端调用方 导入依赖 org.springframework.c...
    99+
    2024-04-02
  • VSCode断点调试CMake工程项目的实现步骤
    断点调试在【排查代码错误】时,发挥着巨大的作用!本文旨在使用VS Code实现对CMake工程项目的【断点调试】。 初始状态 假设我们已经有一个CMake工程项目(比如从github...
    99+
    2024-04-02
  • IDEA远程管理docker镜像及容器服务的实现
    目录一、开启docker远程访问服务二、IDEA安装Dokcer插件使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对...
    99+
    2024-04-02
  • pycharm2022.2远程连接服务器调试的方法是什么
    本篇内容主要讲解“pycharm2022.2远程连接服务器调试的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“pycharm2022.2远程连接服务器调试的方法是什么”吧!目的:同步本...
    99+
    2023-07-05
  • C#程序终极调试实现windbg的时间旅行
    目录一:什么是时间旅行二:二个有趣的例子1. 查看程序都触发了第几代垃圾回收2. 查看新生成的线程曾今都执行了什么代码一:什么是时间旅行 简而言之就是把程序的执行流拍成vlog,这样...
    99+
    2024-04-02
  • LyScript实现Hook隐藏调试器的方法详解
    目录Patch_PEBPatch_IsDebuggerPresentPatch_CheckRemoteDebuggerPresentPatch_GetTickCountPatch_Z...
    99+
    2024-04-02
  • Django日志和调试工具栏实现高效的应用程序调试和性能优化
    目录配置日志配置Django-Debug-Toolbar优化ORM代码配置日志 在Django中,可以通过logging模块来记录日志。日志记录器是将日志消息传递给日志处理器的对象。...
    99+
    2023-05-18
    Django日志配置 Django调试工具栏
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作