kubectl命令速查

1. 基本命令

1.1 運(yùn)行pod

kubectl run

如何運(yùn)行一個(gè) nginx Deployment 并將其暴露出來? 查看 kubectl run叮趴。

# start the pod running nginx
$ kubectl run --image=nginx nginx-app --port=80 --env="DOMAIN=cluster"
deployment "nginx-app" created

1.2 查看服務(wù)

kubectl get

如何列出哪些正在運(yùn)行割笙?查看 kubectl get

$ kubectl get po
NAME              READY     STATUS    RESTARTS   AGE
nginx-app-5jyvm   1/1       Running   0          1h

如何連接到已經(jīng)運(yùn)行在容器中的進(jìn)程眯亦?查看 kubectl attach伤溉。

使用 kubectl 命令:

$ kubectl get pods
NAME              READY     STATUS    RESTARTS   AGE
nginx-app-5jyvm   1/1       Running   0          10m
$ kubectl attach -it nginx-app-5jyvm
...

kubectl get 定義輸出格式

$ kubectl get pods traefik-ingress-public-hsgkl   -n kube-system  -o yaml
查看node
kubectl get nodes
查看所有namespace的pod
kubectl get pods --all-namespaces

查看ingress

kubectl get ing 

查看dev命名空間下dev-java-xxl-job-admin-public的ingress規(guī)則, 輸出yaml格式

kubectl get ing dev-java-xxl-job-admin-public -n dev -o yaml

1.3 獲取指定pod的信息

kubectl describe pod <pod_name>

2. 高級(jí)命令

2.1 與容器交互

kubectl exec

$ kubectl get po
NAME              READY     STATUS    RESTARTS   AGE
nginx-app-5jyvm   1/1       Running   0          10m
$ kubectl exec nginx-app-5jyvm -- cat /etc/hostname
nginx-app-5jyvm

執(zhí)行交互式命令怎么辦妻率?

$ kubectl exec -ti nginx-app-5jyvm -- /bin/sh      
# exit

更多信息請(qǐng)查看 獲取運(yùn)行中容器的 Shell 環(huán)境乱顾。

2.2 查看日志

如何查看運(yùn)行中進(jìn)程的 stdout/stderr?查看 kubectl logs宫静。

kubectl logs

$ kubectl logs -f nginx-app-zibvs
10.240.63.110 - - [14/Jul/2015:01:09:01 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-"
10.240.63.110 - - [14/Jul/2015:01:09:02 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-"

現(xiàn)在是時(shí)候提一下 pod 和容器之間的細(xì)微差別了走净;默認(rèn)情況下如果 pod 中的進(jìn)程退出 pod 也不會(huì)終止,相反它將會(huì)重啟該進(jìn)程孤里。這類似于 docker run 時(shí)的 --restart=always 選項(xiàng)伏伯, 這是主要差別。在 docker 中捌袜,進(jìn)程的每個(gè)調(diào)用的輸出都是被連接起來的说搅,但是對(duì)于 kubernetes,每個(gè)調(diào)用都是分開的虏等。要查看以前在 kubernetes 中執(zhí)行的輸出弄唧,請(qǐng)執(zhí)行以下操作:

$ kubectl logs --previous nginx-app-zibvs
10.240.63.110 - - [14/Jul/2015:01:09:01 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-"
10.240.63.110 - - [14/Jul/2015:01:09:02 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.26.0" "-"

查看 記錄和監(jiān)控集群活動(dòng) 獲取更多信息。

2.3 刪除pod

如何停止和刪除運(yùn)行中的進(jìn)程博其?查看 kubectl delete套才。

kubectl delete

$ kubectl get deployment nginx-app
NAME        DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-app   1         1         1            1           2m
$ kubectl get po -l run=nginx-app
NAME                         READY     STATUS    RESTARTS   AGE
nginx-app-2883164633-aklf7   1/1       Running   0          2m
$ kubectl delete deployment nginx-app
deployment "nginx-app" deleted
$ kubectl get po -l run=nginx-app
# Return nothing

請(qǐng)注意迂猴,我們不直接刪除 pod慕淡。使用 kubectl 命令,我們要?jiǎng)h除擁有該 pod 的 Deployment沸毁。如果我們直接刪除pod峰髓,Deployment 將會(huì)重新創(chuàng)建該 pod。

2.4 強(qiáng)制刪除pod

kubectl delete pod $POD_ID --grace-period=0 --force

將Pod的優(yōu)雅終止時(shí)間設(shè)置為0息尺,并強(qiáng)制刪除携兵。

2.5 切換namespace

默認(rèn)在default namespace下

kubectl config set-context --current --namespace=devops

3. 如果一個(gè)pod啟動(dòng)有問題如何排查?

  • 首先查看pods狀態(tài)搂誉, 可以使用命令kubectl get pods
(base) ?  kubectl get pods  -n dev
NAME                                                        READY   STATUS             RESTARTS   AGE
dev-java-resource-back-question-provider-6bf66cd85f-zrtjt   0/1     CrashLoopBackOff   5761       20d
  • 如果查看是錯(cuò)誤的狀態(tài)徐紧, 可以使用kubectl describe pod [name]繼續(xù)調(diào)試

  • 如果沒有發(fā)現(xiàn)問題可以使用kubectl logs [pod-name] -n [namespace]查看日志輸出

  • 如果當(dāng)前pod的日志沒有發(fā)現(xiàn)問題可以查看以前pod的輸出kubectl logs --previous [pod-name] -n [namespace]

  • 如果還是不能解決問題重新啟動(dòng)pod, 先執(zhí)行kubectl scale deployment [name] --replicas=0關(guān)閉所有pod, 再執(zhí)行kubectl scale deployment [name] --replicas=1啟動(dòng)pod,也可以直接執(zhí)行刪除pod操作

4. 資源類型

下表列出的是 kubernetes 中所有支持的類型和縮寫的別名并级。

資源類型 縮寫別名
clusters
componentstatuses cs
configmaps cm
daemonsets ds
deployments deploy
endpoints ep
event ev
horizontalpodautoscalers hpa
ingresses ing
jobs
limitranges limits
namespaces ns
networkpolicies
nodes no
statefulsets
persistentvolumeclaims pvc
persistentvolumes pv
pods po
podsecuritypolicies psp
podtemplates
replicasets rs
replicationcontrollers rc
resourcequotas quota
cronjob
secrets
serviceaccount sa
services svc
storageclasses
thirdpartyresources

4.1 格式化輸出

要以特定的格式向終端窗口輸出詳細(xì)信息拂檩,可以在 kubectl 命令中添加 -o 或者 -output 標(biāo)志。

輸出格式 描述
-o=custom-columns=<spec> 使用逗號(hào)分隔的自定義列列表打印表格
-o=custom-columns-file=<filename> 使用 文件中的自定義列模板打印表格
-o=json 輸出 JSON 格式的 API 對(duì)象
-o=jsonpath=<template> 打印 jsonpath 表達(dá)式中定義的字段
-o=jsonpath-file=<filename> 打印由 文件中的 jsonpath 表達(dá)式定義的字段
-o=name 僅打印資源名稱
-o=wide 以純文本格式輸出任何附加信息嘲碧,對(duì)于 Pod 稻励,包含節(jié)點(diǎn)名稱
-o=yaml 輸出 YAML 格式的 API 對(duì)象
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市愈涩,隨后出現(xiàn)的幾起案子望抽,更是在濱河造成了極大的恐慌,老刑警劉巖履婉,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煤篙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡谐鼎,警方通過查閱死者的電腦和手機(jī)舰蟆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狸棍,“玉大人身害,你說我怎么就攤上這事〔莞辏” “怎么了塌鸯?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)唐片。 經(jīng)常有香客問我丙猬,道長(zhǎng),這世上最難降的妖魔是什么费韭? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任茧球,我火速辦了婚禮,結(jié)果婚禮上星持,老公的妹妹穿的比我還像新娘抢埋。我一直安慰自己,他們只是感情好督暂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布揪垄。 她就那樣靜靜地躺著,像睡著了一般逻翁。 火紅的嫁衣襯著肌膚如雪饥努。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天八回,我揣著相機(jī)與錄音酷愧,去河邊找鬼驾诈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛溶浴,可吹牛的內(nèi)容都是我干的翘鸭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼戳葵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼就乓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拱烁,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤生蚁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后戏自,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邦投,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年擅笔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了志衣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猛们,死狀恐怖念脯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弯淘,我是刑警寧澤绿店,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站庐橙,受9級(jí)特大地震影響假勿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜态鳖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一转培、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浆竭,春花似錦浸须、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缤沦。三九已至虎韵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缸废,已是汗流浹背包蓝。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工驶社, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人测萎。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓亡电,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親硅瞧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子份乒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容