如何設(shè)置一個(gè)正經(jīng)的Kubernetes終端
所有k8s書呆子需要的CLI工具
Kubernetes預(yù)先包裝了出色的CLI。 對(duì)于基本操作,它的運(yùn)行非常出色。 las,當(dāng)需要快速執(zhí)行某項(xiàng)操作時(shí),復(fù)雜性就會(huì)增加。
Kubernetes社區(qū)已經(jīng)構(gòu)建了各種基于Web的工具來(lái)監(jiān)視您的集群-kube ops視圖,grafana等。但是,擁有完整的終端設(shè)備將迅速加快解決問題的根源。 它構(gòu)成了瑞士軍刀的基本組成部分。
以下是我已應(yīng)用于OSX終端的開源工具的簡(jiǎn)短列表。 一起使用時(shí),它們使我可以跳過kubernetes集群,快速解決問題并監(jiān)控行為。 我刪去了許多小的實(shí)用工具,并堅(jiān)持使用每天都能使用的工具。
在使用任何工具之前……
在使用這些工具之前,我強(qiáng)烈建議您安裝zsh。 它是圍繞標(biāo)準(zhǔn)OSX終端的出色的開源包裝器。 它具有豐富的功能和直觀的功能,您可以安裝的插件很棒。 列出的其中一些工具假定您已安裝ZSH。
k9s

> oh yes
我開始堅(jiān)強(qiáng)。 K9s是用于Kubernetes集群的CLI工具的后盾。 您可以通過一次按鍵直接SSH到pod中,查看日志,刪除資源等等。 它為您執(zhí)行的最常見操作提供了出色的訪問權(quán)限。 對(duì)于使用kubernetes的任何工程師來(lái)說,這都是最重要的。
kubectx
我們只有一個(gè)集群是非常罕見的。 這些之間的切換非常簡(jiǎn)單
kubectl config use-context my-context
但是,這樣做有一些先決條件:
- 在運(yùn)行之前,您需要知道集群的名稱。
- 還有另一個(gè)類似的set-context命令可以使您崩潰。
kubectx提供了一種更簡(jiǎn)單的替代方法。 如果您單獨(dú)運(yùn)行kubectx,它將在.kube / config文件中列出所有上下文。 然后,您可以提供您感興趣的上下文的名稱:
kubectx my-context
無(wú)需記住所有上下文,無(wú)需手動(dòng)檢查文件,也無(wú)需獲取錯(cuò)誤的命令。 漂亮又簡(jiǎn)單。 與k9s結(jié)合使用時(shí),只需最少的按鍵操作,就可以從CLI進(jìn)行很多導(dǎo)航。
編輯:我最初說過k9s不支持在上下文之間切換。 Fernand Galiana的出色回應(yīng)指出,使用:ctx命令,這是可能的。
kubens
隨處可見的內(nèi)容后,您可能想挖掘一個(gè)特定的名稱空間。 再說一次,在群集中擁有多個(gè)命名空間是很常見的。 嗯,ahmetb(為您帶來(lái)kubectx的紳士)也將kubens放在一起。 與kubectx相同,僅適用于名稱空間。
- kubens kube-system
現(xiàn)在,默認(rèn)情況下,所有命令都針對(duì)kube-system名稱空間運(yùn)行。 您也可以不帶其他任何內(nèi)容運(yùn)行kubens來(lái)查看名稱空間列表。
kube-ps1
因此,您可以在上下文和名稱空間之間切換。 但是,您怎么知道您當(dāng)前針對(duì)的是哪一個(gè)呢? 繼續(xù)檢查很痛苦。 目前,要找出答案,您需要運(yùn)行:
- kubenskubectxkubectl <my-command>
要?jiǎng)h除此問題,ps1是一個(gè)zsh插件,它將自動(dòng)向您顯示您當(dāng)前的上下文和名稱空間:

> I'm pointing at my minikube context and the default namespace
現(xiàn)在,您無(wú)需運(yùn)行任何命令即可查看要指出的名稱空間和上下文。 它也具有高度可配置性-如果您只對(duì)名稱空間或上下文感興趣,則可以將其關(guān)閉,或者可以使用kubeoff完全禁用整個(gè)功能。
popeye
現(xiàn)在,進(jìn)入一些不同的地方。 popeye將對(duì)存儲(chǔ)庫(kù)中的資源進(jìn)行自動(dòng)掃描,并突出顯示明顯的明顯問題。 這是一個(gè)非常新的工具,我發(fā)現(xiàn)它非常有用。 如果您要在集群中進(jìn)行一些春季大掃除,那么從popeye開始將為您提供一些需要修復(fù)的明確指示。

> This was the first few lines of a very long, detailed report.
Stern
曾經(jīng)使用過kubectl logs嗎? 是否注意到您一次只能跟蹤一個(gè)Pod中的日志? 好吧,不用擔(dān)心! Stern是一種工具,可讓您基于非常靈活的查詢從多個(gè)Pod中提取日志。
我經(jīng)常在我的Twitter帳戶上談?wù)搆ubernetes,DevOps等。