https://linux.cn/article-12007-1.htmlhtml
去雜貨店「採購」這些命令,你須要用這些 Kubernetes 工具來入門。node
最近,我丈夫告訴我他即將要去參加一個工做面試,面試時他須要在計算機上運行一些基本命令。他對這場面試感到焦慮,可是對於他來講,學習和記住事情的最好方法是將不瞭解的事物比喻爲很是熟悉的事物。由於咱們的談話是在我逛雜貨店試圖決定當晚要烹飪的食物以後進行的,因此這啓發我用一次去雜貨店的行程來介紹 kubectl
和 helm
命令。linux
Helm(「舵輪」)是在 Kubernetes(來自希臘語,意思是「舵手」 或 「領航員」)中管理應用程序的工具。你能夠輕鬆地使用你的應用程序信息來部署「海圖chart」,從而能夠在你的 Kubernetes 環境中幾分鐘以內讓它們就緒並預配置好。在學習新知識時,查看示例的「海圖」以瞭解其用法老是頗有幫助的,所以,若是有時間,請查看這些成型的「海圖」。(LCTT 譯註:Kubernetes 生態中大量使用了和航海有關的比喻,所以本文在翻譯時也採用了這些比喻)git
kubectl 是與 Kubernetes 環境交互的命令行界面,容許你配置和管理集羣。它須要一些配置才能在環境中工做,所以請仔細閱讀其文檔以瞭解你須要作什麼。github
我會在示例中使用命名空間,你能夠在個人文章《Kubernetes 命名空間入門》中瞭解它。面試
如今咱們已經準備好了,讓咱們開始 kubectl
和 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 get
命令提供了有關 Kubernetes 中許多事物的信息,包括「吊艙Pod」、節點和命名空間。一樣,若是沒有指定命名空間標誌,就會使用默認的命名空間。首先,我獲取集羣中的命名空間以查看正在運行的命名空間:
$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 get
命令稍微複雜一點,由於這個「獲取」命令所須要的不只僅是一個應用程序名稱,並且你能夠從應用程序中請求多個內容。我會從獲取用於製做該應用程序的值開始,而後展現「獲取所有」的操做結果的片斷,該操做將提供與該應用程序相關的全部數據。
$helm get values jenkins -n jenkins USER-SUPPLIED VALUES: null
因爲我只安裝了最小限度的穩定版,所以配置沒有更改。若是我運行「獲取所有」命令,我將獲得全部的「海圖」:
$helm get all jenkins -n jenkins
這會產生大量數據,所以我始終建議保留一份 Helm 「海圖」的副本,以便你能夠查看「海圖」中的模板。我還建立本身的值來了解本身所擁有的。
如今,我把全部的商品都放在購物車中了,我會檢查一下「描述」它們包含什麼的標籤。這些示例僅與 kubectl
命令有關,它們描述了我經過 Helm 部署的內容。
正如我使用「獲取」命令(該命令能夠描述 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 中國」官方小程序來查看