成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用Tmux和kubectl解決Kubernetes故障

開源
一個使用 tmux 的 kubectl 插件可以使 Kubernetes 疑難問題變得更簡單。

[[316174]]

一個使用 tmux 的 kubectl 插件可以使 Kubernetes 疑難問題變得更簡單。

Kubernetes 是一個活躍的開源容器管理平臺,它提供了可擴展性、高可用性、健壯性和富有彈性的應用程序管理。它的眾多特性之一是支持通過其主要的二進制客戶端 kubectl 運行定制腳本或可執行程序,kubectl 很強大的,允許用戶在 Kubernetes 集群上用它直接做很多事情。

使用別名進行 Kubernetes 的故障排查

使用 Kubernetes 進行容器編排的人都知道由于設計上原因帶來了其功能的復雜性。舉例說,迫切需要以更快的速度并且幾乎不需要手動干預的方式來簡化 Kubernetes 中的故障排除(除過特殊情況)。

在故障排查功能方面,有很多場景需要考慮。在一種場景下,你知道你需要運行什么,但是這個命令的語法(即使作為一個單獨的命令運行)過于復雜,或需要一、兩次交互才能起作用。

例如,如果你需要經常進入一個系統命名空間中運行的容器,你可能發現自己在重復地鍵入:

  1. kubectl --namespace=kube-system exec -i -t <your-pod-name>

為了簡化故障排查,你可以用這些指令的命令行別名。比如,你可以增加下面命令到你的隱藏配置文件(.bashrc.zshrc):

  1. alias ksysex='kubectl --namespace=kube-system exec -i -t'

這是來自于 Kubernetes 常見別名存儲庫的一個例子,它展示了一種簡化 kubectl 中的功能的方法。像這種場景下的簡單情形,使用別名很有用。

切換到 kubectl 插件

更復雜的故障排查場景是需要一個一個的執行很多命令,調查環境,最后得出結論。僅僅用別名方法是不能解決這種情況的;你需要知道你所部署的 Kubernetes 之間邏輯和相關性,你真正需要的是自動化,以在更短的時間內輸出你想要的。

考慮到你的集群有 10 ~ 20 或 50 ~ 100 個命名空間來提供不同的微服務。一般在進行故障排查時,什么對你有幫助?

  • 你需要能夠快速分辨出拋出錯誤的是哪個 命名空間的哪個 Pod 的東西。
  • 你需要一些可監視一個命名空間的所有 Pod 日志的東西。
  • 你可能也需要監視特定命名空間的出現錯誤的某個 Pod 的日志。

涵蓋這些要點的解決方案對于定位生產環境的問題有很大的幫助,以及在開發和測試環節中也很有用。

你可以用 kubectl 插件創建比簡單的別名更強大的功能。插件類似于其它用任何語言編寫的獨立腳本,但被設計為可以擴充 Kubernetes 管理員的主要命令。

創建一個插件,你必須用 kubectl-<your-plugin-name> 的正確的語法來拷貝這個腳本到 $PATH 中的導出目錄之一,并需要為其賦予可執行權限(chmod +x)。

創建插件之后將其移動到路徑中,你可以立即運行它。例如,我的路徑下有一個 kubectl-krawlkubectl-kmux

  1. $ kubectl plugin list
  2. The following compatible plugins are available:
  3.  
  4. /usr/local/bin/kubectl-krawl
  5. /usr/local/bin/kubectl-kmux
  6.  
  7. $ kubectl kmux

現在讓我們見識下帶有 tmux 的 Kubernetes 的有多強大。

駕馭強大的 tmux

Tmux 是一個非常強大的工具,許多管理員和運維團隊都依賴它來解決與易操作性相關的問題:通過將窗口分成多個窗格以便在多臺計算機上運行并行的調試來監視日志。它的主要的優點是可在命令行或自動化腳本中使用。

我創建一個 kubectl 插件,使用 tmux 使故障排查更加簡單。我將通過注釋來解析插件背后的邏輯(插件的完整代碼留待給你實現):

  1. # NAMESPACE 是要監控的名字空間
  2. # POD Pod 名稱
  3. # Containers 是容器名稱
  4.  
  5. # 初始化一個計數器 n 以計算循環計數的數量,
  6. # 之后 tmux 使用它來拆分窗格。
  7. n=0;
  8.  
  9. # Pod 和容器列表上開始循環
  10. while IFS=' ' read -r POD CONTAINERS
  11. do
  12. # tmux 為每個 Pod 創建一個新窗口
  13. tmux neww $COMMAND -n $POD 2>/dev/null
  14. # 對運行中的 Pod 的所有容器啟動循環
  15. for CONTAINER in ${CONTAINERS//,/ }
  16. do
  17. if [ x$POD = x -o x$CONTAINER = x ]; then
  18. # 如果任何值為 null,則退出。
  19. warn "Looks like there is a problem getting pods data."
  20. break
  21. fi
  22. # 設置要執行的命令
  23. COMMAND=”kubectl logs -f $POD -c $CONTAINER -n $NAMESPACE
  24. # 檢查 tmux 會話
  25. if tmux has-session -t <會話名> 2>/dev/null;
  26. then
  27. <設置會話退出>
  28. else
  29. <創建會話>
  30. fi
  31. # 在當前窗口為每個容器切分窗格
  32. tmux selectp -t $n \; \
  33. splitw $COMMAND \; \
  34. select-layout tiled \;
  35. # 終止容器循環
  36. done
  37. # Pod 名稱重命名窗口以識別
  38. tmux renamew $POD 2>/dev/null
  39. # 增加計數器
  40. ((n+=1))
  41.  
  42. # 終止 Pod 循環
  43. done<<(<從 kubernetes 集群獲取 Pod 和容器的列表>)
  44.  
  45. # 最后選擇窗口并附加會話
  46. tmux selectw -t <會話名>:1 \; \
  47. attach-session -t <會話名>\;

運行插件腳本后,將產生類似于下圖的輸出。每個 Pod 有一個自己的窗口,每個容器(如果有多個)被分割到其窗口中 Pod 窗格中,并在日志到達時輸出。Tmux 之美如下可見;通過正確的配置,你甚至會看到哪個窗口正處于激活運行狀態(可看到標簽是白色的)。

 

利用Tmux和kubectl解決Kubernetes故障

總結

別名是在 Kubernetes 環境下常見的也有用的簡易故障排查方法。當環境變得復雜,用高級腳本生成的kubectl 插件是一個更強大的方法。至于用哪個編程語言來編寫 kubectl 插件是沒有限制。唯一的要求是該名字在路徑中是可執行的,并且不能與已知的 kubectl 命令重復。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2019-11-14 11:05:32

ARP命令故障

2023-06-09 07:45:29

Kuberneteskubectl

2020-04-26 11:16:46

KubernetesPodLinux

2022-03-03 09:43:34

人工智能電網機器學習

2024-04-26 06:43:19

KubernetesPod識別

2013-01-28 10:18:36

無線信號無線網絡路由器

2019-12-09 10:40:15

YAMLBashKubernetes

2014-03-03 09:48:55

SSHTmux

2019-10-21 09:52:51

變異測試單元測試

2021-08-13 11:21:16

KubernetesKubectlLinux

2021-02-22 08:29:03

KubernetesKubectl Fla應用

2022-01-10 10:26:30

Kubernetes抓包環境

2023-11-02 10:24:30

KubectlKubernetes

2011-04-22 16:58:05

2009-12-25 13:51:23

ADSL Modem

2011-07-04 16:28:43

Windows XP故

2010-07-15 14:40:42

AIX TELNET

2023-11-10 07:23:57

Kubernetes集群網絡

2020-09-15 10:28:42

Kubernetes容器

2021-04-22 09:20:20

KubernetesKubectl FlaLinux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人综合久久 | 久久久久久久久久一区二区 | 欧美精品一区二区三区在线 | 亚洲国产免费 | 91亚洲国产成人久久精品网站 | 岛国av免费看 | 在线播放中文字幕 | 日韩三级一区 | 亚洲精品第一页 | 亚洲一区二区三区桃乃木香奈 | 亚洲精品国产电影 | 中文字幕在线免费 | 精品国产一区二区三区性色av | 欧美日韩中文字幕在线播放 | 亚洲 中文 欧美 | 欧美精品一区在线 | 国产高清视频 | 国产免费又黄又爽又刺激蜜月al | 天堂av影院 | 国产一区二区三区在线看 | 亚洲黄色高清视频 | www国产成人免费观看视频 | 色在线视频网站 | 狠狠操网站 | 欧美高清视频一区 | 欧美精品久久久久久久久老牛影院 | 色视频一区二区 | 欧美午夜精品 | 精品国产欧美 | 狠狠久久久| 99久久久国产精品 | 亚洲一区二区三区视频 | 在线国产一区二区 | 亚洲免费精品一区 | 日韩精品一区二区三区中文在线 | 日本淫视频| 在线伊人 | 亚洲免费在线观看 | 91亚洲国产亚洲国产 | 成人免费在线电影 | 91精品国产一区二区三区 |