精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何對(duì)Pod容器進(jìn)行Remote Debug

云計(jì)算 云原生
先不談通過看log來debug的效率問題,在 VM 上這樣搞尚且可行,可當(dāng)我們把應(yīng)用容器化并讓K8s管理后,怎么辦呢?

大家好,我是二哥。

在一個(gè)面試場景中,就debug問題,一般會(huì)出現(xiàn)下面的對(duì)話:

二哥:你平時(shí)開發(fā)的時(shí)候是用什么方法debug ?

應(yīng)聘者:看日志。

二哥:萬一log level沒設(shè)對(duì)或者關(guān)鍵的地方?jīng)]有加log怎么辦呢?

應(yīng)聘者:那就改代碼,加log,重啟服務(wù),然后繼續(xù)看日志。

先不談通過看log來debug的效率問題,在 VM 上這樣搞尚且可行,可當(dāng)我們把應(yīng)用容器化并讓K8s管理后,怎么辦呢?

我們都知道在Pod里是沒法方便地通過執(zhí)行類似 systemctl和 monit等命令來重啟應(yīng)用的,那繼續(xù)用看日志的方式的話,就剩下一條路了:

  1. 改代碼,加log。
  2. commit到git。
  3. CI/CD。
  4. 如果log沒有加對(duì),或者想看一下某一個(gè)函數(shù)調(diào)用的返回值,那從步驟1開始重頭再來。

um, 看上去挺累的樣子。CI/CD和K8s也被折騰得夠嗆。

二哥稍微有點(diǎn)強(qiáng)迫癥,不能忍受這么折磨人的debug方式。另外,相比人肉看Log,通過調(diào)試器的方式來debug更優(yōu)雅、更快捷,也更能激發(fā)RD的想象力。最重要的是,通過調(diào)試器debug會(huì)倒逼RD從代碼調(diào)用邏輯、和OS交互等多角度思考問題。比如會(huì)設(shè)斷點(diǎn)不難,難的是何時(shí)設(shè)斷點(diǎn),把斷點(diǎn)設(shè)在哪里最合適。

“道—法—術(shù)—器—?jiǎng)荨保抢献印兜赖陆?jīng)》的精髓思想。本文講的其實(shí)是“術(shù)”和“器”,但二哥想說“道”更本質(zhì),也更重要,它是核心思想、理念、本質(zhì)規(guī)律。強(qiáng)烈建議好奇心重的同學(xué)多思考一下這些“術(shù)”背后的實(shí)現(xiàn)原理。

二哥通過一個(gè)示例給老鐵們演示一下,如何從本地機(jī)器遠(yuǎn)程調(diào)試Pod里面的應(yīng)用。應(yīng)用本身非常簡單,是用Node.js寫的一段http server。對(duì)于其它語言寫的應(yīng)用,你肯定能找到變通方法。

進(jìn)入debug模式

首先得把http server切換到調(diào)試模式。注意這里demo的方法僅適用于Node.js。

kubectl exec nodejs-8448d4cbc6-nbjwd -n lancehbzhang -- /bin/bash -c "kill -USR1 1"

一切順利的話,你可以從Pod的log里面看到如下所示的信息。這表示debugger偵聽在端口9229。

圖 1:將容器切換進(jìn)入debug模式

K8s port-forward

下面的問題是:如何才能把本地debugger發(fā)出的調(diào)試命令連進(jìn)來?

方法其實(shí)有不少。比如通過一個(gè)Load Balancer類型的service。不過這種方法比較費(fèi)錢,據(jù)我所知,騰訊云的Load Balancer價(jià)格不菲。

這里二哥介紹一個(gè)既免費(fèi)又通用的方法。用K8s自帶的port-forward功能,命令如下所示:

$ kubectl port-forward deploy/nodejs -n lancehbzhang 9229:9229

在一臺(tái)可以執(zhí)行kubectl命令的機(jī)器上執(zhí)行這行命令后,如果一切正常,你會(huì)看到下面的界面。

圖 2:使用K8s port-forward

恭喜你,這表示從此以后任何發(fā)往這臺(tái)機(jī)器 9229 端口的請(qǐng)求都將會(huì) forward 到 pod nodejs 的 9229 端口,如你所猜,那正是 debugger 正在偵聽的端口。

到現(xiàn)在為止,下圖中的 ③ 和 ④ 你應(yīng)該都準(zhǔn)備好了。

圖 3:從本機(jī)debugger到遠(yuǎn)程debuggee全景圖

你是不是摩拳擦掌,擼起袖子準(zhǔn)備從本地機(jī)器連過來了?且慢,有一種場景我們還沒解決。

如果執(zhí)行 kubectl port-forward 的機(jī)器和我們的本地機(jī)器無法直連怎么辦?假如出于安全考慮,上圖中 ③ 和 ④ 是可以網(wǎng)絡(luò)直連的,但 ① 和 ③ 被防火墻隔開了,只留了一個(gè)22端口供 ① 通過 ssh 登錄到 ③ 。這種情況下,該如何從本機(jī)連接到 ④ 上的debugger呢?

這個(gè)時(shí)候就需要輪到步驟 ② 所示的 SSH Tunnel 登場了。通過這樣的方式, 本機(jī)VS code只需 attach 到 127.0.0.1:9229,諸如設(shè)置斷點(diǎn)、單步執(zhí)行、查看變量等調(diào)試命令都被封裝起來,塞進(jìn) SSH Tunnel 再送至 ③ 上,然后再通過 port-forwarding 轉(zhuǎn)至 ④ 上的debuggee。

注:SSH Tunnel的使用并非本文的重點(diǎn),大家可以自行谷歌找到使用方法。

演示

好了,準(zhǔn)備工作做完了。下面開始二哥的表演。

本地機(jī)器打開VS Code,在launch.json里面輸入如下所示的配置。其中參數(shù) port表示本機(jī)debugger需要連接的端口,localRoot表示本地的代碼路徑,而remoteRoot則表示 ④ 中應(yīng)用所在的路徑。二哥在build Docker image時(shí),將應(yīng)用的WORKDIR設(shè)置為了/myapp,所以這里也得填成/myapp。其它參數(shù)各位自行谷歌。

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Attach-2-nodejs",
"port": 9229,
"request": "attach",
"skipFiles": ["<node_internals>/**"],
"type": "pwa-node",
"localRoot": "${workspaceFolder}",
"remoteRoot": "/myapp",
"sourceMaps": true
}
]
}

在第17行設(shè)置斷點(diǎn),按下F5開始debugging。

圖 4:本機(jī)debugger

還記得前文我們已經(jīng)打開的 SSH Tunnel 界面嗎?這個(gè)時(shí)候,你會(huì)看到它會(huì)打印出一些諸如 "Successfully established connection 127.0.0.1:9229 -> 127.0.0.1:9229" 這樣的信息。當(dāng)然,具體信息內(nèi)容與你使用的工具相關(guān)。

圖 5:SSH Tunnel正在工作示意圖

沒有問題的話,網(wǎng)絡(luò)包應(yīng)該來到了圖3中位置 ③ 。我們來看看這個(gè)時(shí)候 K8s port-forward 會(huì)打印出什么來:

圖 6:K8s port-forward正在工作示意圖

非常不錯(cuò),看起來它收到了請(qǐng)求,并且也在勤奮地工作著。那最后我們來看看圖3中 ④ 中打印出來的令人激動(dòng)的信息:"Debugger attached"。

圖 7:debuggee顯示已有debugger attach上來了

萬事俱備,只差最后一腳了:發(fā)個(gè)請(qǐng)求,看看能不能命中斷點(diǎn):

圖 8:發(fā)個(gè)請(qǐng)求,命中一下斷點(diǎn)

回頭看看圖4吧,多么讓人陶醉的界面,在那里你可以查看變量、棧回溯,還可以干很多很多其它騷操作。是的,這個(gè)時(shí)候才是發(fā)揮你想象力的時(shí)候。

其它需要做的工作

到目前為止,本文略過一些雖不是重點(diǎn),但有的時(shí)候又可能會(huì)影響調(diào)試體驗(yàn)的細(xì)枝末節(jié),我列舉一二。

將Pod的replica設(shè)置為 1。不然你就得發(fā)了瘋地尋找debugger發(fā)出的調(diào)試命令發(fā)到哪里去了呢?

還記得K8s的livenessProbe和readinessProbe嗎?如果容器內(nèi)應(yīng)用因?yàn)楸徽{(diào)試而長時(shí)間未響應(yīng)這兩個(gè)probe,那么Pod有可能會(huì)被K8s殺掉。這個(gè)時(shí)候,或許你費(fèi)勁千辛萬苦才等來的斷點(diǎn)命中瞬間化為烏有了。

網(wǎng)上有不少解決方法,比如通過 kubectl patch deploy/nodejs 安裝dummy的livenessProbe和readinessProbe。

這個(gè)dummy probe不需要真的去probe container是否活著,相反它永遠(yuǎn)返回 true。比如下面這種方法用 kubectl patch 命令修改了 deployment 的spec。

# 移除 livenessProbe
$ kubectl patch deploy/nodejs -n lancehbzhang --type json -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/livenessProbe"}]'
# 安裝 dummy livenessProbe
$ kubectl patch deploy/nodejs -n lancehbzhang -p '{"spec": {"template": {"spec": {"containers": [{"name": "nodejs", "livenessProbe": {"initialDelaySeconds": 5, "periodSeconds": 5, "exec": {"command": ["true"]}}}]}}}}'

總結(jié)

首先需要將容器內(nèi)的應(yīng)用切換到debug模式。具體如何操作與所使用的語言密切相關(guān)。

  • 通過K8s port-forward可以將debugger發(fā)出的調(diào)試命令轉(zhuǎn)發(fā)至被調(diào)試應(yīng)用(debuggee)。
  • 如果運(yùn)行于你本機(jī)的debugger無法和運(yùn)行著K8s port-forward的那臺(tái)機(jī)器直接通信,那么這個(gè)時(shí)候就需要把debugger的調(diào)試命令丟進(jìn)SSH Tunnel送至對(duì)端。
  • 一切準(zhǔn)備就緒后,本機(jī)debugger就可以attach到debuggee了。
責(zé)任編輯:姜華 來源: 二哥聊云原生
相關(guān)推薦

2022-05-26 07:33:48

Pod容器debug

2022-09-07 09:19:49

Docker健康檢查

2021-03-05 00:06:12

Docker容器內(nèi)存

2022-07-05 08:25:10

Reactyarn link

2020-05-20 12:30:44

容器Linux系統(tǒng)

2019-11-20 09:15:53

KubernetesPod

2015-07-28 11:10:22

Docker容器容器編排

2023-01-30 08:30:09

Tomcat性能優(yōu)化

2011-01-20 10:33:30

Postfix

2010-02-02 14:11:14

Python 進(jìn)行編程

2011-04-13 08:49:33

DataSet強(qiáng)類型化

2010-05-25 10:11:06

ubuntu Grub

2020-12-22 21:57:39

人臉識(shí)別AI人工智能

2014-05-14 00:50:18

JoyentNode

2013-05-24 09:25:27

2021-05-06 09:33:32

OperatorKubernetes開源

2010-05-11 08:58:22

mysql表字段

2021-09-02 22:52:16

ValueDictionary排序

2021-09-27 16:39:10

PythonGif壓縮

2010-01-20 17:48:07

C++ 函數(shù)重載
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精品国产sm最大网站| 亚洲免费毛片网站| 5252色成人免费视频| 亚洲精品视频久久久| 欧美日韩免费看片| 亚洲色图第一区| 国产欧美在线一区二区| 人人爽人人爽人人片av| 欧美国产偷国产精品三区| 欧美成人性战久久| 久久综合伊人77777麻豆最新章节| 日韩免费啪啪| 成人av第一页| 91精品久久久久久久| 日韩毛片在线视频| 91综合在线| 亚洲国产成人爱av在线播放| 久久久久久蜜桃一区二区| 不卡的av影片| 亚洲欧美一区二区久久| 清纯唯美一区二区三区| 黄色片一区二区三区| 蜜臀99久久精品久久久久久软件| 欧美激情一区二区三区在线视频观看| 手机毛片在线观看| 日本精品影院| 日韩欧美国产高清| 最新国产黄色网址| 成人软件在线观看| 亚洲va欧美va人人爽| a级黄色片网站| av在线收看| 久久先锋影音av鲁色资源| 超碰97在线资源| 国产精品美女一区| 久久精品二区亚洲w码| 热草久综合在线| 成人精品在线看| 欧美激情五月| 欧美老女人xx| 潘金莲一级黄色片| 久久电影院7| 伊人青青综合网站| 国产免费看av| 国产剧情在线观看一区| 亚洲免费视频网站| 男女黄床上色视频| 亚洲第一福利专区| 日韩精品在线看| 最新中文字幕视频| 亚洲视频分类| 国产亚洲精品久久久| 日本黄色特级片| 免费观看不卡av| 日韩国产高清污视频在线观看| 97精品人妻一区二区三区蜜桃| 99精品国产一区二区三区2021 | 欧美影院视频| 日韩一区二区精品葵司在线| 成年人看片网站| 9l视频自拍九色9l视频成人| 精品国产1区2区3区| 丰满少妇xbxb毛片日本| 国产精品视频3p| 亚洲精品ady| 中文字幕一区二区三区人妻| 深爱激情综合| 少妇精69xxtheporn| 亚洲xxxx3d动漫| 欧美激情一级片一区二区| 欧美激情一区二区三区高清视频| 国产无码精品视频| 久久精品国语| 国产精品视频免费在线观看| 一区二区三区精| 国产福利一区二区三区在线视频| 国产高清自拍一区| 内衣办公室在线| 一区在线中文字幕| 欧美精品久久久久久久自慰| 亚洲性受xxx喷奶水| 欧美亚洲国产一区在线观看网站 | 色悠悠久久88| 免看一级a毛片一片成人不卡| 亚洲性感美女99在线| 国产成人拍精品视频午夜网站| 日韩欧美一级大片| 丁香激情综合国产| 日本一区二区三区视频在线观看| 欧美激情免费| 天天av天天翘天天综合网| 国产免费视频传媒| 日韩精品一区二区三区免费视频| 亚洲国内精品在线| 中文字幕观看av| 亚洲深爱激情| 亚洲free性xxxx护士hd| 亚洲色偷精品一区二区三区| 中文字幕亚洲成人| 91视频最新入口| 成人久久精品| 亚洲欧美日韩一区在线| 欧美日韩精品亚洲精品| 老司机亚洲精品| 国产99午夜精品一区二区三区| 国产小视频在线| 亚洲一区二区三区四区五区黄| 久久黄色免费看| 大奶在线精品| 久久精品国产欧美亚洲人人爽| 日韩精品成人一区| 国产综合成人久久大片91| 欧美福利一区二区三区| 青草在线视频在线观看| 欧美日韩国产欧美日美国产精品| 国产精品无码在线| 黑丝一区二区| 成人久久18免费网站图片| 理论视频在线| 精品日韩中文字幕| 久久久久国产免费| 91久久国产| 国产精品视频资源| 可以直接在线观看的av| 黑人极品videos精品欧美裸| 人妻av一区二区三区| 欧美岛国激情| 国产精品永久免费在线| 精品av中文字幕在线毛片| 亚洲国产成人91porn| 99国产精品免费视频| 日韩免费一区| 国产精品一区二区三区在线播放| 青青青免费视频在线2| 亚州成人在线电影| 日韩少妇一区二区| 精品成人一区| 国产精品久久久一区二区三区| 八戒八戒神马在线电影| 555www色欧美视频| 国产传媒免费在线观看| 久久精品国产秦先生| 亚洲欧美国产不卡| 国产黄色一区| 最新国产精品亚洲| 国产一区二区网站| 亚洲日本护士毛茸茸| 久久久久久久久久毛片| 99热精品久久| 亚洲999一在线观看www| 国产精品扒开做爽爽爽的视频| 欧美日韩电影在线播放| 欧美人与禽zoz0善交| 久久国产精品露脸对白| 午夜在线视频免费观看| 日本一区影院| 国内精品视频在线| 免费看黄色一级视频| 婷婷丁香久久五月婷婷| 精品黑人一区二区三区观看时间| 亚洲综合好骚| 色一情一乱一伦一区二区三欧美| 成人免费在线观看视频| 久久精品视频免费播放| 亚洲国产精品欧美久久| 亚洲成av人片www| 91精品人妻一区二区| 喷水一区二区三区| 国产又黄又爽免费视频| 91成人在线精品视频| 91国产美女在线观看| 国产中文字幕在线观看| 欧美精品久久99久久在免费线 | 国产黄色大片在线观看| 日韩av在线不卡| 中文字幕 自拍偷拍| 亚洲免费观看在线视频| 在线观看日韩精品视频| 强制捆绑调教一区二区| 国产一区二区三区在线免费| 欧美日韩精品一区二区三区在线观看| 日韩av电影手机在线| 免费在线观看黄色网| 精品国产一区二区三区av性色| 天天综合网久久综合网| 国产精品成人午夜| 日本黄色录像片| 久久国产精品72免费观看| 97在线国产视频| re久久精品视频| 岛国一区二区三区高清视频| brazzers在线观看| 在线视频精品一| 亚洲av无码一区二区乱子伦| 一本高清dvd不卡在线观看| 国产大片免费看| 久久久精品国产免费观看同学| 三级网站免费看| 日韩成人午夜精品| 欧洲精品一区二区三区久久| 国产高清欧美| 日本一区二区三区免费观看| 高清一区二区三区| 91九色在线视频| 欧美va在线| 98精品国产自产在线观看| 黄网站视频在线观看| 亚洲人成五月天| 少妇高潮一区二区三区69| 欧美理论片在线| 欧美超碰在线观看| 亚洲aⅴ怡春院| 免费在线视频一区二区| ...中文天堂在线一区| 90岁老太婆乱淫| 99久久夜色精品国产网站| 男插女视频网站| 看片的网站亚洲| 激情婷婷综合网| 校园激情久久| 1024av视频| 亚洲经典三级| 激情小视频网站| 欧美日韩少妇| 中国 免费 av| 91精品一区二区三区综合在线爱| 日韩av高清在线播放| 一区二区三区韩国免费中文网站| 国产乱子伦精品| 91欧美极品| 北条麻妃高清一区| 亚洲精品高潮| av一区观看| 亚洲天堂中文字幕在线观看| 91亚洲永久免费精品| 国内自拍亚洲| 国产裸体写真av一区二区| 日韩不卡在线| 国产精品欧美久久久| 日韩一区精品| 国产精品久久久久久久久久久不卡| 超级碰碰久久| 国产成人精品久久| 成人黄色视屏网站| 国产精品视频成人| 91精品一区| 91九色视频在线观看| 深夜激情久久| 国产精品美女久久久久av福利| eeuss国产一区二区三区四区| 成人区精品一区二区| 豆花视频一区二区| 激情欧美一区二区三区中文字幕| 日韩av网站在线免费观看| 久久亚洲国产精品日日av夜夜| 亚洲精品456| 日韩电影免费观看在| 99久久99久久精品国产片桃花 | 日韩成人av影视| 亚洲污视频在线观看| 激情小说亚洲一区| 日本成人在线免费| 91老师片黄在线观看| 男人舔女人下部高潮全视频| 国产精品色噜噜| 国产大片免费看| 欧美日韩国产中文精品字幕自在自线| 久久精品一二区| 欧美亚洲综合网| www久久久com| 日韩国产高清视频在线| 91精品国产91久久久久游泳池 | 中文字幕国产日韩| 国产cdts系列另类在线观看| 欧美极品欧美精品欧美视频| 青青青免费在线视频| 国产精品久久久久久一区二区| 99久久99九九99九九九| 国产精品视频500部| 亚洲综合小说图片| 国产又粗又爽又黄的视频| 黄色精品网站| 欧美精品aaaa| 丁香婷婷综合五月| 中文天堂资源在线| 亚洲另类一区二区| 69国产精品视频免费观看| 欧美久久高跟鞋激| 天堂av在线免费观看| 伊人亚洲福利一区二区三区| 青草视频在线免费直播| 国产精品96久久久久久| 香蕉免费一区二区三区在线观看| 久久亚洲一区二区| 欧美高清日韩| 超碰在线97免费| 99视频有精品| 国产精品国产三级国产传播| 精品日韩视频在线观看| 999免费视频| 在线观看中文字幕亚洲| av岛国在线| 亚洲影院色在线观看免费| 亚洲第一二三区| 国产a级片网站| 狠狠色狠狠色合久久伊人| 中文字幕国产综合| 亚洲高清免费视频| 国产露脸91国语对白| 亚洲深夜福利网站| 国产伦理精品| 国产精品一区二区三区四区五区 | 亚洲欧美一区二区不卡| 波多野结衣日韩| 亚洲精品小视频| yellow字幕网在线| 97人人干人人| 91精品国产调教在线观看| 8x8x最新地址| 国产欧美一区二区精品性色| 青青草免费观看视频| 亚洲高清久久网| 国产丝袜精品丝袜| 亚洲影院色无极综合| 亚洲啊v在线观看| 免费成年人高清视频| 欧美高清在线一区二区| 国语对白永久免费| 亚洲国产一区二区三区四区| free性欧美16hd| 国产乱码精品一区二区三区不卡| 1024精品久久久久久久久| 日本美女视频一区| 国产精品久久久久久久久快鸭 | 久久免费公开视频| 日韩亚洲欧美中文三级| 国产成人午夜| 亚洲xxxxx| 欧美日韩天堂| 在线中文字日产幕| 亚洲一区视频在线| 色婷婷av一区二区三区之红樱桃| 欧美激情2020午夜免费观看| 中文久久电影小说| 日韩精品在线观看av| 成人av在线播放网站| 91精品国产高潮对白| 亚洲激情国产精品| 在线能看的av网址| 日韩福利二区| 久久成人综合网| 欧美日韩人妻精品一区二区三区| 日韩免费一区二区三区在线播放| 人交獸av完整版在线观看| 国产精品三区四区| 天堂在线亚洲视频| 国产在线免费av| 欧美日韩不卡一区| 日韩另类在线| 九色综合婷婷综合| 日本中文在线一区| 亚洲国产123| 精品欧美乱码久久久久久1区2区| 高清视频在线观看三级| 久久婷婷开心| 久久精品国产一区二区| 国产第一页第二页| 亚洲精品一区中文| 日韩一区二区三区四区五区| 99久久免费观看| 久久伊人蜜桃av一区二区| 中文字幕精品一区二| 欧美精品一本久久男人的天堂| 国产精品18hdxxxⅹ在线| 久草精品在线播放| 综合激情成人伊人| 天天摸天天干天天操| 国产精品视频地址| 亚洲午夜av| 欧美午夜激情影院| 精品日韩在线观看| 澳门av一区二区三区| 狠狠干视频网站| 久久久www成人免费无遮挡大片| 亚洲影视一区二区| 69**夜色精品国产69乱| 日韩欧美视频在线播放| 亚洲av人人澡人人爽人人夜夜| 欧美午夜免费电影| 17videosex性欧美| 中文字幕一区二区三区5566| 成人动漫一区二区在线| 91久久久久久久久久久久| 97福利一区二区| 久久精品亚洲欧美日韩精品中文字幕| 男女一区二区三区| 欧美一区二区三区在线视频| 成人美女大片| 欧美这里只有精品| 亚洲欧洲精品一区二区精品久久久|