kubectl命令行工具

kubectl命令行工具

資源對象類型及縮寫

資源對象類型 縮寫
clusters
componentstatuses cs
configmaps cm
daemonsets ds
deployments deploy
endpoints ep
events ev
horizontalpodautoscalers hpa
ingresses ing
Jobs
limitranges limits
nodes no
namespaces ns
networkpolicies
statefulsets
persistentvolumeclaims pvc
persistentvolumes pv
pods po
podsecuritypolicies psp
podtemplates
replicasets rs
replicationcontrollers rc
resourcequotas quota
cronjob
secrets
serviceaccounts
services svc
storageclasses sc
thirdpartyresources
# get
kubectl get pods [pod_name]
kubectl get pod [pod_name]
kubectl get po [pod_name]
# 獲取多個
kubectl get pods [pod_name1] [pod_name2]
# 獲取多種對象信息
kubectl get pod/pod1 rc/rc1
# 同時應(yīng)用多個YAML文件,以file為示例
kubectl get pod -f pod1.yaml -f pod2.yaml
kubectl create pod -f pod1.yaml -f rc1.yaml -f service1.yml

kubectl子命令

子命令 語法 描述
annotate kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] 添加或更新一個或多個資源的注解
api-versions kubectl api-versions [flags] 列出可用的 API 版本
apply kubectl apply -f FILENAME [flags] 從文件或 stdin 對資源應(yīng)用配置更改
attach kubectl attach POD -c CONTAINER [-i] [-t] [flags] 附加到正在運行的容器,查看輸出流或與容器(stdin)交互
autoscale kubectl autoscale (-f FILENAME |TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] 自動伸縮由副本控制器管理的一組 pod
cluster-info kubectl cluster-info [flags] 顯示有關(guān)集群中主服務(wù)器和服務(wù)的端口信息
config kubectl config SUBCOMMAND [flags] 修改 kubeconfig 文件
create kubectl create -f FILENAME [flags] 從文件或 stdin 創(chuàng)建一個或多個資源
delete kubectl delete (-f FILENAME | TYPE [NAME | /NAME | --all]) [flags] 從文件烁峭、標準輸入或指定標簽選擇器搬瑰、名稱、資源選擇器或資源中刪除資源
describe kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME| -l label]) [flags] 顯示一個或多個資源的詳細狀態(tài)
diff kubectl diff -f FILENAME [flags] 將 live 配置和文件或標準輸入做對比
edit kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] 使用默認編輯器編輯和更新服務(wù)器上一個或多個資源的定義
exec kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]] 對 pod 中的容器執(zhí)行命令
explain kubectl explain [--recursive=false] [flags] 獲取多種資源的文檔汤功。例如 pod, node, service 等
expose kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags] 將副本控制器负敏、服務(wù)或 pod 作為新的 Kubernetes 服務(wù)暴露
get kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] 列出一個或多個資源
label kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] 添加或更新一個或多個資源的標簽
logs kubectl logs POD [-c CONTAINER] [--follow] [flags] 在 pod 中打印容器的日志
patch kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] 使用策略合并 patch 程序更新資源的一個或多個字段
port-forward kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] 將一個或多個本地端口轉(zhuǎn)發(fā)到一個 pod
proxy kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags] 運行 Kubernetes API 服務(wù)器的代理
replace kubectl replace -f FILENAME 從文件或標準輸入中替換資源
rolling-update kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags] 通過逐步替換指定的副本控制器及其 pod 來執(zhí)行滾動更新
run kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags] 在集群上運行指定的鏡像
scale kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] 更新指定副本控制器的大小
stop kubectl stop 不推薦:相反绪商,請參閱 kubectl delete
version kubectl version [--client] [flags] 顯示運行在客戶端和服務(wù)器上的 Kubernetes 版本

示例

  1. 創(chuàng)建資源對象
# 根據(jù)YAML配置文件一次向創(chuàng)建RC和Service
kubectl apply  -f service.yaml -f rc.yaml

# 根據(jù)目錄下所有.yaml .yml .json文件的定義進行創(chuàng)建
kubectl apply  -f <directory>
  1. 查看資源對象
# 以純文本輸出格式列出所有 pod坛掠。
kubectl get pods

# 以純文本輸出格式列出所有 pod咪奖,并包含附加信息(如節(jié)點名)盗忱。
kubectl get pods -o wide

# 以純文本輸出格式列出具有指定名稱的副本控制器。提示:您可以使用別名 'rc' 縮短和替換 'replicationcontroller' 資源類型羊赵。
kubectl get replicationcontroller <rc-name>

# 以純文本輸出格式列出所有副本控制器和服務(wù)售淡。
kubectl get rc,services

# 以純文本輸出格式列出所有守護程序集,包括未初始化的守護程序集慷垮。
kubectl get ds --include-uninitialized

# 列出在節(jié)點 server01 上運行的所有 pod
kubectl get pods --field-selector=spec.nodeName=server01
  1. 描述資源對象
# 顯示名稱為 <node-name> 的節(jié)點的詳細信息揖闸。
kubectl describe nodes <node-name>

# 顯示名為 <pod-name> 的 pod 的詳細信息。
kubectl describe pods/<pod-name>

# 顯示由名為 <rc-name> 的副本控制器管理的所有 pod 的詳細信息料身。
# 記滋乐健:副本控制器創(chuàng)建的任何 pod 都以復(fù)制控制器的名稱為前綴。
kubectl describe pods <rc-name>

# 描述所有的 pod芹血,不包括未初始化的 pod
kubectl describe pods --include-uninitialized=false
  1. 刪除資源對象
# 使用 pod.yaml 文件中指定的類型和名稱刪除 pod贮泞。
kubectl delete -f pod.yaml

# 刪除標簽名= <label-name> 的所有 pod 和服務(wù)。
kubectl delete pods,services -l name=<label-name>

# 刪除所有具有標簽名稱= <label-name> 的 pod 和服務(wù)幔烛,包括未初始化的那些啃擦。
kubectl delete pods,services -l name=<label-name> --include-uninitialized

# 刪除所有 pod,包括未初始化的 pod饿悬。
kubectl delete pods --all
  1. 執(zhí)行容器命令
# 從 pod <pod-name> 中獲取運行 'date' 的輸出令蛉。默認情況下,輸出來自第一個容器狡恬。
kubectl exec <pod-name> date
  
# 運行輸出 'date' 獲取在容器的 <container-name> 中 pod <pod-name> 的輸出珠叔。
kubectl exec <pod-name> -c <container-name> date

# 獲取一個交互 TTY 并運行 /bin/bash <pod-name >。默認情況下弟劲,輸出來自第一個容器祷安。
kubectl exec -ti <pod-name> /bin/bash
  1. 查看容器日志
# 從 pod 返回日志快照。
kubectl logs <pod-name>

# 從 pod <pod-name> 開始流式傳輸日志兔乞。這類似于 'tail -f' Linux 命令汇鞭。
kubectl logs -f <pod-name>
  1. 創(chuàng)建或更新資源對象
kubectl apply  -f service.yaml
  1. 在線編輯運行中的資源對象
# 通過YANL格式展示該對象的定義和狀態(tài)
kubectl edit deploy nginx
  1. 將Pod的開放端口映射到本地
# 將集群上Pod的80端口映射到本地的8888端口,訪問127.0.0.1:8888就可以訪問到容器提供的服務(wù)
kubectl port-forward --address 0.0.0.0 pod/mypod 8888:80
  1. 在Pod和本地之間復(fù)制文件
# 將Pod上的/tmp/foo復(fù)制到本地/tmp/bar
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
  1. 資源對象的標簽設(shè)置
# 為pods foo設(shè)置unhealthy=true標簽
kubectl label pods foo unhealthy=true

# 為default namespaces設(shè)置testing=true標簽
kubectl label namespaces default testing=true
  1. 檢查可用的API資源類型列表
# 列出所有資源對象類型
kubectl api-resources
[root@k8s-master01 .kube]# kubectl api-resources
NAME                    SHORTNAMES   APIGROUP      NAMESPACED   KIND
bindings                                           true         Binding
componentstatuses       cs                         false        ComponentStatus
configmaps              cm                         true         ConfigMap
endpoints               ep                         true         Endpoints
events                  ev                         true         Event
limitranges             limits                     true         LimitRange
namespaces              ns                         false        Namespace
nodes                   no                         false        Node
persistentvolumeclaims  pvc                        true         PersistentVolumeClaim
persistentvolumes       pv                         false        PersistentVolume
pods                    po                         true         Pod
podtemplates                                       true         PodTemplate

  1. 使用命令行插件
# 用任何語言創(chuàng)建一個簡單的插件,并為生成的可執(zhí)行文件命名
# 以前綴 "kubectl-" 開始
cat ./kubectl-hello
#!/bin/bash

# 這個插件打印單詞 "hello world"
echo "hello world"

# 我們的插件寫好了庸追,讓我們把它變成可執(zhí)行的
sudo chmod +x ./kubectl-hello

# 并將其移動到路徑中的某個位置
sudo mv ./kubectl-hello /usr/local/bin

# 創(chuàng)建并"安裝"了一個 kubectl 插件霍骄。
# 使用插件,從 kubectl 調(diào)用它锚国,就像是一個常規(guī)命令
kubectl hello

# "卸載"一個插件腕巡,只需從路徑中刪除它
sudo rm /usr/local/bin/kubectl-hello

# 查看所有插件
kubectl plugin list

kubectl參數(shù)列表

參數(shù)名和取值示例 說明
--alsologtostderr=false 設(shè)置為true,表示將日志輸出到文件的同時輸出到stderr
--as='' 以指定用戶的身份執(zhí)行操作
--certificate-authority='' 用于CA授權(quán)的cert文件路徑
--client-certificate='' 用于TLS使用的客戶端證書路徑
--client-key='' 用于TLS使用的客戶端密鑰文件路徑
--cluster='' 設(shè)置要使用的 kubeconfig中的cluster名稱
--context='' 設(shè)置要使用的 kubeconfig中的context名稱
--insecure-skip-tls-verify=false 設(shè)置為 true,表示跳過TSL安全驗證.導(dǎo)致HTTPS 連接不安全
--kubeconfig='' kubeconfig配置文件的路徑,在配置文件中包括Master地址信息及必要的認證信息
--log-backtrace-at=:0 當日志機制運行到指定文件的指定行(file:行號)時玄坦,打印一次stack trace
--log-dir='' 日志文件路徑
--log-flush-frequency=5s 設(shè)置刷新日志文件的時間間隔
--logtostderr=true 表示將日志輸出到 stderr,不輸出到日志文件
--match-server-version=false 設(shè)置true,表示要求客戶端版本和服務(wù)端版本相匹配
--namespace='' 設(shè)置本次操作所在的namespace
--password='' API 服務(wù)器進行基本身份驗證的密碼
-s, --server='' Kubernetes API 服務(wù)器的地址和端口,默認值為localhost:8080
--stderrthreshold=2 等于或高于此閾值的日志將輸出到標準錯誤輸出(stderr)
--token='' 用于對 API 服務(wù)器進行身份認證的持有者令牌
--user='' 指定使用 kubeconfig 配置文件中的用戶名
--username='' 用于 API 服務(wù)器的基本身份驗證的用戶名
--v=0 glog日志級別
--vmodule= glog基于模塊的詳細日志級別

kubectl輸出格式

輸出格式 說明
-o=custom-columns=<spec> 根據(jù)自定義列名進行輸出血筑,以逗號分隔
-o=custom-colimns-file=<filename> 從文件中獲取自定義列名進行輸出
-o=json 以JSON格式顯示結(jié)果
-o=jsonpath=<template> 輸出jsonpath表達式定義的字段信息
-o=jsonpath-file=<filename> 輸出jsonpath表達式定義的字段信息绘沉,來源于文件
-o=name 僅輸出資源對象的名稱
-o=wide 輸出額外信息。對于Pod豺总,將輸出Pod所在的Node名
-o=yaml 以yaml格式顯示結(jié)果

示例

# 將單個pod的詳細信息輸出為YAML格式的對象
kubectl get pod web-pod-13je7 -o yaml

# 顯示pod的更多信息
kubectl get pod web-pod-13je7 -o wide

# 自定義列名顯示Pod信息
# 要定義自定義列并僅將所需的詳細信息輸出到表中,可以使用custom-columns選項.可以選擇內(nèi)聯(lián)定義自定義列或使用模板文件:-o=custom-columns=<spec>或-o=custom-columns-file=<filename>
kubectl get pods <pod-name> -o custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion

# 模板文件
kubectl get pods <pod-name> -o custom-columns-file=template.txt
# template.txt文件內(nèi)容為
NAME          RSRC
metadata.name metadata.resourceVersion
# 輸出結(jié)果是
NAME           RSRC
submit-queue   610995

# 排序列表對象
# 語法
kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
# 示例
kubectl get pods --sort-by=.metadata.name
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末车伞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子喻喳,更是在濱河造成了極大的恐慌另玖,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件表伦,死亡現(xiàn)場離奇詭異谦去,居然都是意外死亡,警方通過查閱死者的電腦和手機蹦哼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門鳄哭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纲熏,你說我怎么就攤上這事妆丘。” “怎么了局劲?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵勺拣,是天一觀的道長。 經(jīng)常有香客問我鱼填,道長药有,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任苹丸,我火速辦了婚禮塑猖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谈跛。我一直安慰自己羊苟,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布感憾。 她就那樣靜靜地躺著蜡励,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阻桅。 梳的紋絲不亂的頭發(fā)上凉倚,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音嫂沉,去河邊找鬼稽寒。 笑死,一個胖子當著我的面吹牛趟章,可吹牛的內(nèi)容都是我干的杏糙。 我是一名探鬼主播慎王,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宏侍!你這毒婦竟也來了赖淤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤谅河,失蹤者是張志新(化名)和其女友劉穎咱旱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绷耍,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡吐限,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了褂始。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毯盈。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖病袄,靈堂內(nèi)的尸體忽然破棺而出搂赋,到底是詐尸還是另有隱情,我是刑警寧澤益缠,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布脑奠,位于F島的核電站,受9級特大地震影響幅慌,放射性物質(zhì)發(fā)生泄漏宋欺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一胰伍、第九天 我趴在偏房一處隱蔽的房頂上張望齿诞。 院中可真熱鬧,春花似錦骂租、人聲如沸祷杈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽但汞。三九已至,卻和暖如春互站,著一層夾襖步出監(jiān)牢的瞬間私蕾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工胡桃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留踩叭,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像容贝,于是被迫代替她去往敵國和親自脯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354