K8S命令的梳理
kubectl
是一個(gè)基礎(chǔ)的K8S集群管理命令本砰,可以實(shí)現(xiàn)對(duì)K8S資源的查詢碴裙,創(chuàng)建,刪除点额,更新舔株,回退等各種各樣的操作。由于其復(fù)雜的功能體系还棱,命令靈活度又高载慈,因此需要進(jìn)行常見的一些命令和使用場景的梳理。
1 K8S命令的組成
K8S基礎(chǔ)命令由三段式組成:
kubectl 動(dòng)作 資源 [選項(xiàng)]
2 K8S命令的基礎(chǔ)動(dòng)作
常見的K8S命令有8個(gè)動(dòng)作珍手。分別是:
- get:展示一個(gè)或者多個(gè)資源
- create:通過資源配置文件名或者鍵盤輸入創(chuàng)建資源
- expose:選擇一個(gè)RC办铡,Service,Deployment或者Pod琳要,并且暴露為新的K8s服務(wù)
- run:在集群上運(yùn)行指定鏡像
- set:在對(duì)象上設(shè)置指定屬性
- explain:資源的文檔
- edit:編輯服務(wù)器上的資源
- delete:通過資源創(chuàng)建的文件名寡具,鍵盤輸入,資源名焙蹭,或者選擇器標(biāo)簽等刪除資源
此外晒杈,kubectl還提供了一些高級(jí)的用法。在日常開發(fā)中除非特定的場景孔厉,否則一般不會(huì)用到。這些命令包括:
- 部署類的命令
- rollout:管理deployment的部署
- rolling-update:實(shí)現(xiàn)滾動(dòng)升級(jí)帖努,并最終輸出RC
- scale:為Deployment, ReplicaSet, RC或者Job設(shè)置新的大小
- autoscale:自動(dòng)伸縮Deployment, ReplicaSet, ReplicationController
- 集群管理類的命令
- certificate:修改認(rèn)證資源
- cluster-info:顯示集群信息
- top:顯示(CPU/Memory/Storage)資源的使用
- cordon:標(biāo)記節(jié)點(diǎn)為
unschedulable
- uncordon:標(biāo)記節(jié)點(diǎn)為
schedulable
- drain:Drain node in preparation for maintenance
- taint:Update the taints on one or more nodes
- 故障定位和排除類的命令
- describe:顯示指定資源或者資源組的詳情
- logs:打印某個(gè)pod中容器的日志
- attach:附加在一個(gè)運(yùn)行的容器上執(zhí)行撰豺,使用該命令注意不要關(guān)閉容器并退出
- exec:在一個(gè)容器中執(zhí)行命令,不影響現(xiàn)在運(yùn)行的容器中的功能
- port-forward:轉(zhuǎn)發(fā)一個(gè)或者多個(gè)端口到pod中
- proxy:運(yùn)行porxy以實(shí)現(xiàn)到Kubernetes API server的功能轉(zhuǎn)發(fā)
- cp:與容器之間進(jìn)行文件拷貝
- 其他更高級(jí)的命令
- apply:Apply a configuration to a resource by filename or stdin
- patch:Update field(s) of a resource using strategic merge patch
- replace:Replace a resource by filename or stdin
- convert:Convert config files between different API versions
- 設(shè)置命令
- label:Update the labels on a resource
- annotate:Update the annotations on a resource
- completion:Output shell completion code for the given shell (bash or zsh)
- 其他的系統(tǒng)級(jí)命令
- api-versions:以
group/version
的形式打印服務(wù)器上支持的API版本 - config:修改
kubeconfig
文件 - help:幫助命令
- version:打印客戶端和服務(wù)器的版本號(hào)
- api-versions:以
2.1 基礎(chǔ)動(dòng)作 get 的命令
get
是kubectl中最基礎(chǔ)的命令拼余,也是使用最多的命令污桦。
該命令的使用格式如下:
get 資源 [選項(xiàng)]
因此,使用改命令需要首先分清楚匙监,paas上到底有多少中資源類型凡橱。那么,paas上面有多少中資源呢亭姥?
2.1.1 get命令中的資源類型
請(qǐng)見下表(需要區(qū)分的是稼钩,kubectl工具中認(rèn)為的資源,并不等同于k8s上面可以創(chuàng)建出的與pod相關(guān)的資源類型)
序號(hào) | 資源 | 資源縮寫 |
---|---|---|
1 | cloud | cld |
2 | clusters | 只有在聯(lián)邦apiservers下才合法 |
3 | componentstatuses | cs |
4 | configmaps | cm |
5 | daemonsets | ds |
6 | deployments | deploy |
7 | endpoints | ep |
8 | events | ev |
9 | horizontalpodautoscalers | hpa |
10 | ingresses | ing |
11 | jobs | - |
12 | limitranges | limits |
13 | namespaces | ns |
14 | networks | net |
15 | networkmappings | nm |
16 | networkpolicies | - |
17 | nodes | no |
18 | persistentvolumeclaims | pvc |
19 | persistentvolumes | pv |
20 | physicalnetworks | pn |
21 | processlifecycles | plc |
22 | pods | po |
23 | podsecuritypolicies | psp |
24 | podtemplates | - |
25 | replicasets | rs |
26 | replicationcontrollers | rc |
27 | resourcequotas | quota |
28 | secrets | - |
29 | serviceaccounts | sa |
30 | services | svc |
31 | statefulsets | - |
32 | storageclasses | - |
33 | thirdpartyresources | - |
34 | clusterversions | - |
2.1.2 幾個(gè)常用的get命令組合
使用get
命令需要注意的一點(diǎn)是:該命令會(huì)隱藏一些資源信息达罗,如運(yùn)行情況等坝撑。要顯示這些信息静秆,可以通過在命令最后加上--show-all
標(biāo)記進(jìn)行實(shí)現(xiàn)。
get
的幾個(gè)常用命令組合:
- 顯示所有的pod信息巡李,格式如linux下的ps命令(精簡)
kubectl get pods
- 全面顯示pod 信息抚笔,增加
-o wide
選項(xiàng)
kubectl get pods -o wide
- 查看單個(gè)指定RC名稱的信息
kubectl get replicationcontroller web
- 使用json格式展示指定的pod信息
kubectl get -o json pod web-pod-13je7
- 把yaml形式的pod信息展示位json格式
kubectl get -f pod.yaml -o json
- 查看指定pod信息中的某一段
kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}
- 同時(shí)輸出所有的RC和service資源實(shí)例列表
kubectl get rc,services
- 通過資源類型和名字獲取具體的實(shí)例信息
kubectl get rc/web service/frontend pods/web-pod-13je7
2.1.3 get中的重要選項(xiàng)
- 跨命名空間查詢對(duì)象
--all-namespaces=false
指定配置文件名
使用-f
或者--filename=[]
指定輸出格式
使用-o
或者--output=''
指定輸出格式,輸出格式必須為下表中的一個(gè)
json
yaml
wide
name
-
custom-columns=...
侨拦,具體信息可以查看:http://kubernetes.io/docs/user-guide/kubectl-overview/#custom-columns custom-columns-file=...
-
go-template=...
殊橙,具體信息可以查看http://golang.org/pkg/text/template/#pkg-overview go-template-file=...
-
jsonpath=...
,具體信息可以查看http://kubernetes.io/docs/user-guide/jsonpath jsonpath-file=...
- 顯示所有的輸出信息
-a
選項(xiàng)可以輸出所有的信息狱从。