寫給小白的 kubectl 入門

2021-03-02 MoeLove

前言

意外又看到不少正在學 Kubernetes 新手。想想本人寫過各種自己懂或不懂、信或不信的原理、機制、方法和工具等等各種東西,唯獨沒寫過 kubectl,其實這東西也是值得一寫的——比如說去年我才從一線同學的操作裡學會用 -A 代替 --all-namespaces。理順 kubectl 的用法,也會對 Kubernetes 的知識體系以及運維工作有很大的幫助。

對 Kubernetes 稍有了解的讀者應該都知道聲明式 API 的說法,kubectl 就是一個這種 API 的客戶端,所以 kubectl 的主要功能就是用來操作對象的。

開局兩張圖

下圖是個常見的使用方式:

其實本來想寫主謂賓定狀補的,後來想想還得複習一下,算了算了。

一般的 kubectl 使用都是這麼個順序,參數是可以調整位置的,暫且如此就可以了。

用一個思維導圖來歸納一下:

動作

在 kubectl 中被稱為 command 也就是命令。使用 kubectl --help 能看到可用的命令列表:

$ kubectl --help
kubectl controls the Kubernetes cluster manager.

Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/

Basic Commands (Beginner):
create Create a resource from a file or from stdin.
...
run 在集群中運行一個指定的鏡像
...

Basic Commands (Intermediate):
explain 查看資源的文檔
get 顯示一個或更多 resources
...
Deploy Commands:
rollout Manage the rollout of a resource
...

可以看到 kubectl 的命令行幫助非常不錯,不僅有功能說明、分類,還有難度標識,甚至有部分的中文說明,kubectl 的每個命令都可以用 --help 查看進一步的幫助說明。

這裡列出了很多可用的命令,按照操作能力,主流命令基本可以分為增刪改查(CRUD)四種。

C

新建命令用於在集群中創建對象,最常用的新建命令應該是 create、run 了,create 能夠創建多種對象,而 run 則主要用來創建 Pod。這兩個命令都需要在命令行中使用參數的方式來表達待創建的對象的欄位內容,其表達力非常粗糙和有限,並且帶有明顯的命令式 API 風味,在我的日常工作中已經很少用到這樣的命令了。

但是這種命令往往有個妙用,--dry-run=client(舊版本中是 --dry-run),可以在不產生實際操作的情況下,測試命令的輸出,加上 -o yaml,可以幫助輸出 YAML 文檔。

R

get 是最常用的查詢指令,用於獲取對象列表和基本信息,而 describe 則用於獲取一個對象的詳細信息。另外一個常用的讀取指令就是 Debug 常用的日誌查看指令:kubectl logs。

U

最重要的更新命令可以說是 apply,edit 了,patch、label、annotation、scale 等命令也算常用。

apply 是把 yaml 提交給 Kubernetes 集群的最常用方式,而 edit patch 都是用於修改線上負載的常用手段。label 和 annotation 命令則是用於修改對象元數據的,例如標籤和註解。

D

這個沒什麼好說——delete

獲取幫助

kubectl 的所有命令、子命令都支持 --help 參數,可以用這種方式獲取幫助。

kubectl options 命令能夠獲取 kubectl 的所有全局參數。

常用參數

-f:很多指令(不只是 apply 和 create)都可以用 -f <文件名> 的方式進行輸入,如果使用管道操作,則可以用參數 -f - 接收 STDIN 的輸入。

-l:可以使用各種對象上的標籤對操作範圍進行過濾,例如 -l app=hello

-o:指定輸出格式,這個參數相對複雜,最常用的是 yaml 或者 json 用於輸出機器報文,還可以用 JSON Path 或者 Go Template 對結果進行處理。

對象

對象通常是類型+名稱的一個組合,可以用 kubectl 獲得當前集群支持的對象類型:

如上圖,輸出內容包含幾個列:名稱、簡稱、API 群組、是否歸屬命名空間以及對象的 Kind 屬性。例如常用的 Deployment:

名稱:

Deployment

簡稱:

Deploy

API 群組:

apps

歸屬命名空間:

Kind:

Deployment

使用命令 kubectl get deploy,就能獲得當前命名空間中的 Deployment 對象列表,如果在尾巴上加入 Deployment 的名稱,就能得到符合名稱要求的 Deployment 對象,

Schema

前面提到的 -f 參數,或者是 get -o yaml,都要用到具體的對象數據結構,這個結構到底是哪裡規定的呢?基本結構可以分為三個部分,以一個 Namespace 為例:

apiVersion: v1
kind: Namespace
metadata:
name: default
spec:
finalizers:
- kubernetes

一般會分為四個基礎欄位:apiVersion、kind、metadata、status 以及 spec。

apiVersion:

格式為 <apiGroup>/<apiVersion>,一個對象的 API Group,可以用前文提到的 api-resources 命令查到,而版本則可以通過 kubectl api-versions 查詢得到。

kind:

對應 api-resources 命令輸出的欄位。

metadata:

元數據,其中包括標籤、註解、名稱等欄位,如果對象是屬於命名空間的,也會把命名空間寫在這裡。

status:

這個欄位的內容通常是由 Kubenretes 自動填寫的。

經常會被省略掉。

spec:

具體的對象內容,可以由幾個途徑獲取其定義結構

部分資源可以使用 kubectl explain <對象類別> 獲得解釋

如果該資源在集群中有對象存在,可以使用 kubectl get <對象類別> <對象名稱> -o yaml 的方式獲得原文,向其致敬。

如果前兩種方法都沒有,就需要去查看 Kubernetes 或者第三方的 API Reference 了。

最後

看了上面的解釋,是不是對 Kubernetes 的控制臺操作有點底了?

相關焦點

  • 適用於初學者的基本 kubectl 和 Helm 命令 | Linux 中國
    去雜貨店「採購」這些命令,你需要用這些 Kubernetes 工具來入門。最近,我丈夫告訴我他即將要去參加一個工作面試,面試時他需要在計算機上運行一些基本命令。他對這場面試感到焦慮,但是對於他來說,學習和記住事情的最好方法是將不了解的事物比喻為非常熟悉的事物。
  • 運維必備的 9 個 kubectl 命令
    kubectl 是 Kubernetes 的一個命令行管理工具,可用於 Kubernetes 上的應用部署和日常管理。本文列舉了 9 個常見的 kubectl 命令,並總結了一些使用技巧,希望可以幫助系統管理員簡化管理工作。對於剛開始使用命令行工具的開發者,最保險的方法是提出問題(讀取操作),而不是發出命令(寫入操作),所以從使用 get 命令開始是個不錯的選擇。
  • 小白入門 | 學習網絡安全需要什麼基礎?
    Hi這裡是東塔安全學院「小白入門【最核心的基礎】要有一顆持續學習的熱情和心,其他都好說;之前看到很多小白,不乏有一些高中學歷或者一些非計算機專業的學生,能夠通過持續的學習,入門網絡安全,進入工作崗位不斷學習,最終走上職業巔峰的一些典型案例。
  • K8s kubectl 複製命令曝目錄遍歷漏洞
    Twistlock 的安全研究人員 Ariel Zelivansky 披露了 Kubernetes kubectl 複製命令的一個目錄遍歷漏洞。
  • 小白入門Java必備攻略!
    針對零基礎編程小白沒有套路,可直接購買,僅需1元↓掃碼無套路購買!今天來為大家推薦一個快速入門Java的學習課程(親測有效!)如果你現在還在迷茫之中不知如何選擇一門適合自己學習的程式語言,那麼相信你看完以下內容可以做出選擇了。
  • Java入門失敗的3條忠告,小白必讀
    小慕~Java該用怎樣的姿勢入門,我現在好凌亂,書本啃不透;看視頻又缺乏實操;學了忘,忘了學。
  • C語言入門書籍推薦和下載,小白自學經典
    作為一個 80 後老程式設計師,我想用我的經驗給大家推薦幾本經典書籍,讓小白少走彎路。1) 《C語言小白變怪獸》既適合對計算機一竅不通的小白,也適合有編程基礎的讀者,還可以用來進階。《C語言小白變怪獸》是一套網絡教程,發布在C語言中文網,由站長(也就是我)親自編寫,這套教程最大的特點是通俗易懂,深入淺出,既適合小白入門,也適合後期進階。點擊文末的「閱讀原文」即可進入。
  • 理財小白入門首選!銅板街、天達金融、團貸網
    對於剛入門的理財小白來說,從小額投資起步,一直學習不斷進步,慢慢積累理財經驗,才是應該走的「正道」。那麼哪些平臺適合這些小白們呢?小編今天推薦幾個起投門檻不高,平臺實力也不錯的理財渠道,是理財入門首選。
  • 新手小白如何選擇吉他,初學者的入門吉他推薦
    帶小朋友學吉他多年,多多少少累積了一些個人經驗,分享給想學吉他的新手小白。要去學習吉他,那麼首先是需要買一把吉他,市場上有很多不同類型的品牌,很多初學者不知道要去購買哪種類型的吉他。初學者吉他買什麼樣的?每個價位都有每個價位的最優選擇,要根據自己的預算去選擇適合的入門吉他。
  • Kubernetes實例學習:從零到入門
    為了動手聯繫相關內容,我們必須要安裝一些工具:Docker DesktopKubernetes CLI(kubectl)一個單節點的Kubernetes集群構建工具kindkubectl基礎和K8S集群上下文首先是Kubernetes CLI工具。它是一個單一的二進位文件kubectl。
  • 新手小白如何玩轉抖音直播?入門篇
    有小夥伴私信我說,新手小白怎麼玩轉抖音直播,有什麼入門技巧?今天小編就來為你們一一解答。   一、抖音直播入門之腳本   直播時要清楚了解流程、道具、場景、話術,清楚一整套的過程才能避免出錯。而且直播內容做到心中有數,也讓你直播過程更順利。
  • Kubernetes 入門命令整理及解析
    >kubectl get pods|deployments.|service -o wide #獲取特定的資源類型kubectl get nodes --show-labels # 查看node標籤kubectl api-versions # 查看k8s當前支持的api版本kubectl logs pod_name # 查看pod內進程輸出
  • 小白入門寶典⑤ 無線藍牙音箱選購指南
    小白入門寶典⑤ 無線藍牙音箱選購指南    在2014年,藍牙音箱的整體銷量超越了傳統2.0和2.1音箱以及家庭影院等音頻產品,一躍成為音響類產品的榜首;這說明人們對於藍牙音箱的需求越來越高    在今天的第五期小白入門寶典中,我們就為大家詳細介紹一下怎樣挑選藍牙音箱,以及哪些特別需要注意的事項;那麼接下來我們就分為8個重點依次為大家介紹藍牙音箱的選購技巧,感興趣的朋友不妨在購買音箱之前先來了解一下這些小技巧。
  • 清華特獎學霸高天宇:科研小白入門指北!
    直播仍在進行,今天,我們邀請到了清華大學計算機系的學霸高天宇同學,他將帶來《貴系特獎學霸:科研小白入門指北》的主題直播,為即將開始科研之路的你打開一扇絢麗的大門! 時間:2020.3.10 20:00-21:00 主題:《貴系特獎學霸:科研小白入門指北》 主要內容:
  • 熱縮片入門小白需要哪些工具?
    很多想入門的小夥伴剛開始面對成堆的套餐有些蒙圈,可能一頭霧水,那這裡給大家講一下入門都需要哪些工具,基礎必備有哪些?1,熱縮片:入門熱縮片當然必須要有熱縮片了,但是當你打開選項發現各種型號的熱縮片,我們需要哪些?那要根據我們自己的需求和目的來定。
  • 「理財小白」需要知悉的入門常識
    理財界的一大真理"理財越早越好",前輩們也是這麼建議投資入門的晚輩。實不相瞞,小編在18歲生日的時候做的第一件事就是購買一個低風險的理財產品,當時的小編也是一名理財小白,對理財所需要具備的常識了解不多。但小編深切明白,理財小白對理財的強烈渴望與有所顧忌。今天,小編將這些年學到的理財常識簡單梳理一下,希望對想要入門理財的小夥伴們有所幫助喔。
  • 新媒體運營小白如何入門?
    而在這部分達到入門級別,那麼你需要會的技能有:能夠撰寫順暢易讀的文案(文章) 能夠進行美觀的排版(懂美學設計、會配色、會排版) 有一定的素材資料收集能力(信息整合能力、快速分析能力) 簡單的ps技能對於想要達到入門級別的新媒體運營人員來說,文案寫作是最基本的技能之一。
  • 書法小白如何入門,選擇什麼字體開始,楷書是不是最好的選擇
    學習書法,我們經常說如何入門,為什麼這麼說呢我們都知道萬事開頭難,入門可以最為重要的一個開端,書法基礎小白想入門,對於選擇書法字體進行練習,無非有幾個問題,雖然字體有很多種篆,隸,楷,行,草等字體,但是一般出現分歧的地方無非就先學隸書還是先學楷書的問題。
  • 入門篇:理財小白想理財,如何開始第一步?
    大部分人還是理財小白,該如何理財才能走上「金生」巔峰呢?法寶來嘍,請注意查收!!!觀念篇儲蓄很多人面臨著存不下錢還負債纍纍的困境,我們要如何做才能避免或者扭轉這種局面,跳出困境呢?實踐篇 理財就意味著收益與風險,很多小白怕涉水太深而不敢觸碰投資。若想獲得收益,你要勇敢邁出第一步。沒有白走的路,每一步都算數。你的每一次實踐,都會成為你的資產。其實越早投資越好,因為多次的實驗會提高你的實操能力,積累理財經驗,為日後的資產管理提供方法經驗。
  • 小白入門寶典⑦ 為啥好耳機要賣上千元?
    小白入門寶典⑦ 為啥好耳機要賣上千元?    筆者不是專業做耳機的,也不懂製造業裡那麼高深的理論知識,但身邊卻有一些從事於耳機研發和製造的朋友,他們對於耳機的設計和製造過程會更熟悉,關於耳機的製造成本和定價這類問題也更有發言權;而針對於這些問題筆者已經向身邊的朋友做了諮詢,今天就整理出來供小白用戶參考;同時也看一看市面上那些十幾元的耳機和上千元耳機的差距究竟在哪裡。