適用於初學者的基本 kubectl 和 Helm 命令
去雜貨店“採購”這些命令,你需要用這些 Kubernetes 工具來入門。
最近,我丈夫告訴我他即將要去參加一個工作面試,面試時他需要在計算機上執行一些基本命令。他對這場面試感到焦慮,但是對於他來說,學習和記住事情的最好方法是將不瞭解的事物比喻為非常熟悉的事物。因為我們的談話是在我逛雜貨店試圖決定當晚要烹飪的食物之後進行的,所以這啟發我用一次去雜貨店的行程來介紹 kubectl
和 helm
命令。
Helm(“舵輪”)是在 Kubernetes(來自希臘語,意思是“舵手” 或 “領航員”)中管理應用程式的工具。你可以輕鬆地使用你的應用程式資訊來部署“海圖”,從而可以在你的 Kubernetes 環境中幾分鐘之內讓它們就緒並預配置好。在學習新知識時,檢視示例的“海圖”以瞭解其用法總是很有幫助的,因此,如果有時間,請檢視這些成型的“海圖”。(LCTT 譯註:Kubernetes 生態中大量使用了和航海有關的比喻,因此本文在翻譯時也採用了這些比喻)
kubectl 是與 Kubernetes 環境互動的命令列介面,允許你配置和管理叢集。它需要一些配置才能在環境中工作,因此請仔細閱讀其文件以瞭解你需要做什麼。
我會在示例中使用名稱空間,你可以在我的文章《Kubernetes 名稱空間入門》中瞭解它。
現在我們已經準備好了,讓我們開始 kubectl
和 helm
基本命令的購物之旅!
用 Helm 列出清單
你去商店之前要做的第一件事是什麼?好吧,如果你做事有條理,會建立一個“清單”。同樣,這是我將解釋的第一個基本的 Helm 命令。
在一個用 Helm 部署的應用程式中,list
命令提供有關應用程式當前版本的詳細資訊。在此示例中,我有一個已部署的應用程式:Jenkins CI/CD 應用程式。執行基本的 list
命令總是會顯示預設的名稱空間。由於我沒有在預設的名稱空間中部署任何內容,因此不會顯示任何內容:
$helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
但是,如果執行帶有額外標誌的命令,則會顯示我的應用程式和資訊:
$helm list --all-namespaces
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
jenkins jenkins 1 2020-01-18 16:18:07 EST deployed jenkins-1.9.4 lts
最後,我可以指示 list
命令只檢查我想從中獲取資訊的名稱空間:
$helm list --namespace jenkins
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
jenkins jenkins 1 2020-01-18 16:18:07 EST deployed jenkins-1.9.4 lts
現在我有了一個清單,並且知道該清單上有什麼,我可以使用 get
命令來“獲取”我的物品!我會從 Kubernetes 叢集開始,看看我能從中獲取到什麼?
用 Kubectl 獲取物品
kubectl get
命令提供了有關 Kubernetes 中許多事物的資訊,包括“吊艙”、節點和名稱空間。同樣,如果沒有指定名稱空間標誌,就會使用預設的名稱空間。首先,我獲取叢集中的名稱空間以檢視正在執行的名稱空間:
$kubectl get namespaces
NAME STATUS AGE
default Active 53m
jenkins Active 44m
kube-node-lease Active 53m
kube-public Active 53m
kube-system Active 53m
現在我已經知道了在我的環境中執行的有哪些名稱空間了,接下來獲取節點並檢視有多少個節點正在執行:
$kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 55m v1.16.2
我有一個節點正在執行,這主要是因為我的 Minikube 執行在一臺小型伺服器上。要得到在我的這一個節點上執行的“吊艙”可以這樣:
$kubectl get pods
No resources found in default namespace.
啊哦,它是空的。我將透過以下方式獲取 Jenkins 名稱空間中的內容:
$kubectl get pods --namespace jenkins
NAME READY STATUS RESTARTS AGE
jenkins-7fc688c874-mh7gv 1/1 Running 0 40m
好訊息!這裡發現了一個“吊艙”,它還沒有重新啟動過,已執行了 40 分鐘了。好的,如今我知道“吊艙”已經裝好,所以我想看看用 Helm 命令可以得到什麼。
用 Helm 獲取資訊
helm get
命令稍微複雜一點,因為這個“獲取”命令所需要的不僅僅是一個應用程式名稱,而且你可以從應用程式中請求多個內容。我會從獲取用於製作該應用程式的值開始,然後展示“獲取全部”的操作結果的片段,該操作將提供與該應用程式相關的所有資料。
$helm get values jenkins -n jenkins
USER-SUPPLIED VALUES:
null
由於我只安裝了最小限度的穩定版,因此配置沒有更改。如果我執行“獲取全部”命令,我將得到所有的“海圖”:
$helm get all jenkins -n jenkins
這會產生大量資料,因此我始終建議保留一份 Helm “海圖”的副本,以便你可以檢視“海圖”中的模板。我還建立自己的值來了解自己所擁有的。
現在,我把所有的商品都放在購物車中了,我會檢查一下“描述”它們包含什麼的標籤。這些示例僅與 kubectl
命令有關,它們描述了我透過 Helm 部署的內容。
用 kubectl 檢視描述
正如我使用“獲取”命令(該命令可以描述 Kubernetes 中的幾乎所有內容)所做的那樣,我將示例限定到名稱空間、“吊艙”和節點上。由於我知道它們每一個是什麼,因此這很容易。
$kubectl describe ns jenkins
Name: jenkins
Labels: <none>
Annotations: <none>
Status: Active
No resource quota.
No resource limits.
我可以看到我的名稱空間的名稱,並且它是活動的,沒有資源或限額限制。
describe pods
命令會產生大量資訊,因此我這裡提供的是一小段輸出。如果你在不使用“吊艙”名稱的情況下執行該命令,它將返回名稱空間中所有“吊艙”的資訊,這可能會很麻煩。因此,請確保在此命令中始終包含“吊艙”名稱。例如:
$kubectl describe pods jenkins-7fc688c874-mh7gv --namespace jenkins
這會提供容器的狀態、管理方式、標籤以及“吊艙”中所使用的映象(還有很多其它資訊)。沒有在這個簡化過的輸出中包括的資料有:在 Helm 配置值檔案中應用的各種條件下的資源請求和限制、初始化容器和儲存卷資訊。如果你的應用程式由於資源不足而崩潰,或者是一個需要執行前置指令碼進行配置的初始配置容器,或者生成不應該儲存於純文字 YAML 檔案中的隱藏密碼,則此資料很有用。
最後,我將使用 describe node
命令,當然,它是用來描述節點的。由於本示例只有一個名為 Minikube 的示例,因此我將使用這個名字。如果你的環境中有多個節點,則必須包含你想查詢的的節點名稱。
與“吊艙”一樣,這個節點的命令會產生大量資料,因此我將僅包括輸出片段。
$kubectl describe node minikube
注意,describe node
是更重要的基本命令之一。如此圖所示,該命令返回統計資訊,該資訊指示節點何時資源用盡,並且該資料非常適合在需要擴充套件時(如果你的環境中沒有自動擴充套件)向你發出警報。此輸出片段中未包含的其它內容包括:對所有資源和限制的請求所佔的百分比,以及資源的使用期限和分配(例如,對於我的應用程式而言)。
買單
使用這些命令,我完成了“購物”並得到了我想要的一切。希望這些基本命令也能在你使用 Kubernetes 的日常工作中提供幫助。
我鼓勵你經常使用命令列並學習“幫助”部分中的速記標誌,你可以透過執行以下命令來檢視這些標誌:
$helm --help
或
$kubectl -h
花生醬和果凍
有些東西像花生醬和果凍一樣混在一起。Helm 和 kubectl
就有點像那樣交錯在一起。
我經常在自己的環境中使用這些工具。因為它們在很多地方都有很多相似之處,所以在使用其中一個之後,我通常需要跟進另一個。例如,我可以進行 Helm 部署,並使用 kubectl
觀察它是否失敗。一起試試它們,看看它們能為你做什麼。
via: https://opensource.com/article/20/2/kubectl-helm-commands
作者:Jessica Cherry 選題:lujun9972 譯者:wxy 校對:wxy
相關文章
- linux初學者必會的基本命令Linux
- 適用於初學者的完整雲端計算學習路線指南
- 適合初學者的who 命令的解釋與示例指南
- 最適合於初學者的 Linux 發行版Linux
- c語言初學者用vs還是vscode vs和vscode哪個適合初學者C語言VSCode
- 給初學者的 type 命令教程
- 適合ionic初學者的小專案
- 適合Angular初學者的小專案Angular
- 對於初學者而言,python和C語言選擇哪個更合適?PythonC語言
- 給初學者看的 shuf 命令教程
- 掌握 Kubernetes 故障排除技巧:kubectl命令的基本指南
- 初學者:關於用java實現並行Java並行
- 怎樣脫用 Aspack2.12 加的殼(適合初學者)
- Python適合初學者學習嗎?Python
- "堆"和"棧"的基本概念(C/C++初學者必讀) (轉)C++
- 最適合初學者的語言是什麼?
- kubectl命令大全
- 為初學者準備的 MariaDB 管理命令
- 適合初學者的java書籍,一定要碼Java
- Java最最基礎的知識(適合初學者看)Java
- (適合初學者)下一個更大元素
- 10 篇對初學者和專家都有用的 Linux 命令教程Linux
- 為 Linux 初學者講解 wc 命令Linux
- 6 個例子讓初學者掌握 free 命令
- 適合初學者學java技術的書籍推薦!Java
- 最適宜初學者學習的幾種程式語言
- 哪種程式語言適合初學者學習
- PHP檔案及執行(適合PHP初學者)PHP
- 20個初學者實用的CSS技巧CSS
- 初學者的迷茫
- 初學者的想法
- 對程式設計師初學者的3條基本建議程式設計師
- Spring學習01--初學者關於AOP和DI的理解Spring
- 初學者Mybatis的初級使用MyBatis
- 常用kubectl命令總結
- kubectl常用命令
- 為初學者準備的 Linux rmdir 命令案例教程Linux
- 為初學者準備的 ln 命令教程(5 個示例)