欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

goland遠(yuǎn)程調(diào)試k8s上容器的實(shí)現(xiàn)

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

上次也遇到過(guò)一次需要在k8s的容器里debug程序的情況,當(dāng)時(shí)找了個(gè)偷懶的辦法繞過(guò)去了,這回繞不過(guò)去了,老老實(shí)實(shí)整一把。主要還是用dlv配合goland的遠(yuǎn)程調(diào)試功能。

選node并同步代碼

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

準(zhǔn)備debug鏡像

  • 在node上創(chuàng)建一個(gè)空文件夾(空文件夾編譯更快)
  • 保存如下內(nèi)容到fileName
  • 執(zhí)行docker build -f fileName -t image:tag .
# 選用go1.19的alpine版本
FROM golang:1.19-alpine
# 設(shè)置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,非必須,看編譯是否依賴(lài)
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

遠(yuǎn)程調(diào)試需要網(wǎng)絡(luò)通信,創(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

遠(yuǎn)程啟動(dòng)dlv

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

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

相關(guān)文章

  • Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼

    Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼

    這篇文章主要介紹了Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Golang運(yùn)行報(bào)錯(cuò)找不到包:package?xxx?is?not?in?GOROOT的解決過(guò)程

    Golang運(yùn)行報(bào)錯(cuò)找不到包:package?xxx?is?not?in?GOROOT的解決過(guò)程

    這篇文章主要給大家介紹了關(guān)于Golang運(yùn)行報(bào)錯(cuò)找不到包:package?xxx?is?not?in?GOROOT的解決過(guò)程,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Go語(yǔ)言中http和mysql的實(shí)現(xiàn)代碼

    Go語(yǔ)言中http和mysql的實(shí)現(xiàn)代碼

    本文通過(guò)實(shí)例代碼給大家介紹了Go語(yǔ)言中http和mysql的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Go語(yǔ)言struct類(lèi)型詳解

    Go語(yǔ)言struct類(lèi)型詳解

    這篇文章主要介紹了Go語(yǔ)言struct類(lèi)型詳解,struct是一種數(shù)據(jù)類(lèi)型,可以用來(lái)定義自己想的數(shù)據(jù)類(lèi)型,需要的朋友可以參考下
    2014-10-10
  • Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式

    Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式

    這篇文章主要介紹了Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • GO語(yǔ)言實(shí)現(xiàn)列出目錄和遍歷目錄的方法

    GO語(yǔ)言實(shí)現(xiàn)列出目錄和遍歷目錄的方法

    這篇文章主要介紹了GO語(yǔ)言實(shí)現(xiàn)列出目錄和遍歷目錄的方法,涉及ioutil.ReadDir()與filepath.Walk()的應(yīng)用,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12
  • 深入理解Golang?make和new的區(qū)別及實(shí)現(xiàn)原理

    深入理解Golang?make和new的區(qū)別及實(shí)現(xiàn)原理

    在Go語(yǔ)言中,有兩個(gè)比較雷同的內(nèi)置函數(shù),分別是new和make方法,二者都可以用來(lái)分配內(nèi)存,那他們有什么區(qū)別呢?下面我們就從底層來(lái)分析一下二者的不同。感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助
    2022-10-10
  • 淺談Golang的new與make區(qū)別是什么

    淺談Golang的new與make區(qū)別是什么

    本文主要介紹了Golang的new與make區(qū)別是什么,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 詳解如何在golang項(xiàng)目開(kāi)發(fā)中創(chuàng)建自己的Module

    詳解如何在golang項(xiàng)目開(kāi)發(fā)中創(chuàng)建自己的Module

    既然我們使用了很多開(kāi)源的 module為我們的日常開(kāi)發(fā)提供了很多的便捷性,那我們?cè)撊绾螌?shí)現(xiàn)自己的 module 來(lái)提供給團(tuán)隊(duì)中使用,接下小編就給大家介紹一下在golang項(xiàng)目開(kāi)發(fā)如何創(chuàng)建自己的Module,需要的朋友可以參考下
    2023-09-09
  • GoLang基礎(chǔ)學(xué)習(xí)之go?test測(cè)試

    GoLang基礎(chǔ)學(xué)習(xí)之go?test測(cè)試

    相信每位編程開(kāi)發(fā)者們應(yīng)該都知道,Golang作為一門(mén)標(biāo)榜工程化的語(yǔ)言,提供了非常簡(jiǎn)便、實(shí)用的編寫(xiě)單元測(cè)試的能力,下面這篇文章主要給大家介紹了關(guān)于GoLang基礎(chǔ)學(xué)習(xí)之go?test測(cè)試的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評(píng)論