最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

goland遠程調試k8s上容器的實現(xiàn)

 更新時間:2023年02月01日 09:28:22   作者:-_-void  
本文主要介紹了goland遠程調試k8s上容器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

上次也遇到過一次需要在k8s的容器里debug程序的情況,當時找了個偷懶的辦法繞過去了,這回繞不過去了,老老實實整一把。主要還是用dlv配合goland的遠程調試功能。

選node并同步代碼

  • 可以用kubectl top node查看資源使用情況,選一個相對清閑的node,記住這個主機名nodeName
  • 可以用scp或者goland的同步功能(最好是直接在node上git clone便于分辨臟文件)將本地代碼傳到node上的某個路徑下,記錄這個代碼路徑codePath
  • 用這個nodeName和codePath創(chuàng)建deployment

準備debug鏡像

  • 在node上創(chuàng)建一個空文件夾(空文件夾編譯更快)
  • 保存如下內容到fileName
  • 執(zhí)行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

創(chuàng)建deployment

用上面的nodeName codePath image:tag替換yaml中的變量

執(zhí)行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

創(chuàng)建svc

遠程調試需要網(wǎng)絡通信,創(chuàng)建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

  • 執(zhí)行kubectl exec進入容器
  • 執(zhí)行dlv debug --headless --listen=:2345 --api-version=2 --accept-multiclient ./your_package,等待輸出API server listening at: [::]:2345
  • 在goland創(chuàng)建GoRemote啟動,ip為nodeIP,端口為32345
  • 創(chuàng)建完成后,點擊debug按鈕

到此這篇關于goland遠程調試k8s上容器的實現(xiàn)的文章就介紹到這了,更多相關goland遠程調試k8s上容器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Go Time庫中時間和日期相關的操作方法整理

    Go Time庫中時間和日期相關的操作方法整理

    這篇文章主要為大家整理了Go語言中的time庫,包括時間、日期和時區(qū)等相關概念及使用方法,希望通過掌握這些知識,大家可以更好地處理時間、日期和時區(qū)相關的問題
    2023-08-08
  • 快速掌握Go 語言 HTTP 標準庫的實現(xiàn)方法

    快速掌握Go 語言 HTTP 標準庫的實現(xiàn)方法

    基于HTTP構建的服務標準模型包括兩個端,客戶端(Client)和服務端(Server),這篇文章主要介紹了Go 語言HTTP標準庫的實現(xiàn)方法,需要的朋友可以參考下
    2022-07-07
  • 一文詳解Go語言中的Defer機制

    一文詳解Go語言中的Defer機制

    在Go語言中,defer是一個關鍵字,用于確保資源的清理和釋放,特別是在函數(shù)中創(chuàng)建的資源,下面就跟隨小編一起來了解下Defer機制的具體使用吧
    2024-11-11
  • 如何go語言比較兩個對象是否深度相同

    如何go語言比較兩個對象是否深度相同

    這篇文章主要介紹了如何go語言比較兩個對象是否深度相同,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Go語言for-range函數(shù)使用技巧實例探究

    Go語言for-range函數(shù)使用技巧實例探究

    這篇文章主要為大家介紹了Go語言for-range函數(shù)使用技巧實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 簡單聊聊Go語言中空結構體和空字符串的特殊之處

    簡單聊聊Go語言中空結構體和空字符串的特殊之處

    在日常的編程過程中,大家應該經(jīng)常能遇到各種”空“吧,比如空指針、空結構體、空字符串等,本文就以?Go?語言為例,一起來看看空結構體和空字符串在?Go?語言中的特殊之處吧
    2024-03-03
  • Go語言實現(xiàn)分布式鎖

    Go語言實現(xiàn)分布式鎖

    分布式鎖是控制分布式系統(tǒng)之間同步訪問共享資源的一種方式。如果不同的系統(tǒng)或是同一個系統(tǒng)的不同主機之間共享了一個或一組資源,那么訪問這些資源時,需要通過一些互斥手段來防止彼此之間的干擾以保證一致性,在這種情況下,就需要使用分布式鎖了
    2023-01-01
  • Go在GoLand中引用github.com中的第三方包具體步驟

    Go在GoLand中引用github.com中的第三方包具體步驟

    這篇文章主要給大家介紹了關于Go在GoLand中引用github.com中第三方包的具體步驟,文中通過圖文介紹的非常詳細,對大家學習或者使用Go具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • Go中的條件語句Switch示例詳解

    Go中的條件語句Switch示例詳解

    Go的switch的基本功能和C、Java類似,switch 語句用于基于不同條件執(zhí)行不同動作,每一個 case 分支都是唯一的,從上至下逐一測試,直到匹配為止,對Go條件語句Switch相關知識感興趣的朋友一起看看吧
    2021-08-08
  • Skywalking-go自動監(jiān)控增強使用探究

    Skywalking-go自動監(jiān)控增強使用探究

    這篇文章主要介紹了Skywalking-go自動監(jiān)控增強使用深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01

最新評論

长武县| 武平县| 鄢陵县| 百色市| 青铜峡市| 扬州市| 和平县| 宁明县| 三穗县| 无棣县| 寿光市| 漳州市| 镇远县| 赫章县| 邵阳市| 哈尔滨市| 铁力市| 左权县| 务川| 浏阳市| 凤凰县| 揭西县| 丹东市| 越西县| 千阳县| 开化县| 连江县| 涞源县| 闽清县| 连南| 青冈县| 阳西县| 玛多县| 株洲县| 儋州市| 德庆县| 武鸣县| 宾川县| 垫江县| 和政县| 喀什市|