kubectl在使用Kubernetes過程當中的重要性不言而喻,掌握其命令行也是許多IT人員的「必修課程」。node
而互聯網上關於kubectl的文章多如牛毛,本文秉持着「濃縮就是精華」的原則,精簡精簡再精簡,挑出你必定會用到的7條命令!同時還介紹了kubectl命令的基本語法,幫助你快速上手kubectl!bash
kubectl是Kubernetes的命令行工具,人們一般經過它與Kubernetes進行交互。經過kubectl可以對集羣自己進行管理,並可以在集羣上進行容器化應用的安裝部署。咱們在《使用Kubectl管理Kubernetes的全解教程》一文中詳細介紹了在不一樣的操做系統中如何安裝kubectl以及如何使用RKE和Rancher建立配置文件。在本文中,咱們將介紹kubectl中最常使用的命令。app
首先,讓咱們來看看kubectl是如何工做的:工具
一個kubectl命令能夠執行一個行動,如get
、create
或者describe
操作系統
一個行動能夠在一個資源上執行,如Deployment命令行
kubectl命令遵循這一語法格式:kubectl an_action a_resource a_resource_name –flags
debug
在大部分狀況下,名稱和標誌並非必要的。例如,要得到關於現有pod的信息,你一般能夠直接運行這一命令:kubectl get pods
。日誌
這裏有一個小技巧:若是你不想每次都手動輸入kubectl,能夠製做一個Bash alias。設置alias k='kubectl'
,以後只需輸入「k」便可代替kubectl。code
接下來,咱們來看看最多見的kubectl資源類型及其縮寫(括號內爲縮寫)。對象
pods (po)
nodes(no)
deployments (deploy)
replicasets(rs)
daemonsets(ds)
statefulsets(sts)
jobs
cronjobs(cj)
services(svc)
persistentvolumes(pv)
persistentvolumeclaim (pvc)
你還須要知道的名稱是all
和event
。all
是指全部已存在的資源,kubectl get all
顯示運行中的Pod、Service、Deployment以及ReplicaSet的關鍵信息。這個命令十分方便。
相似地,kubectl get events顯示了event的歷史記錄。它像是Kubernetes級別的日誌,而不是容器級別的日誌。
若是你想要看到更多類型的kubectl資源,請查閱官方文檔:
https://kubernetes.io/docs/reference/kubectl/overview/
如今讓咱們來看看在資源上執行的常見行動。
help
—獲取幫助
get
— 顯示有關一個或多個資源的信息
describe
—顯示關於一個或多個資源的詳細信息
logs
—顯示容器日誌
exec
—進入容器中一個正在運行的進程
apply
—建立或選擇一個資源
delete
—刪除一個或多個資源
如今,讓咱們來簡單瞭解每一個命令。
help
在命令以後輸入--help
以獲取該命令的幫助。如,kubectl get pods –help
get
kubectl get all
顯示了關於運行中的pod、service、deployment以及Replicaset的關鍵信息。這是檢查事物狀態的首選命令,你能夠將get
和單個對象一塊兒使用,並添加--watch
標誌以實時觀察更新。
describe
kubectl describe all
顯示大量與你的集羣相關的詳細信息,你也能夠將describe
與單個對象一塊兒使用。這個命令在debug過程當中將大有用處。
logs
logs
命令須要一個pod名稱。當在多個pod中時,使用-c my-container
標誌來指定一個容器。使用--previous
標誌來獲取再也不運行的容器信息。
exec
exec
幫助你debug一個容器進程,它容許你經過帶-it
的僞終端在容器內執行進程。例如,要在my_pod中進入容器並運行Bash,請輸入kubectl exec -it my_pod bash
。
apply
這一命令能夠經過文件名或控制檯輸入,對資源進行配置。而且apply
可以對集羣資源進行聲明式管理:若是資源不存在,apply
將建立它;若是它存在,apply
將更改它。此外,apply
還可以添加Service到適用的資源或者經過添加Pod自動化彈性伸縮的Deployment。
請注意,你可使用create
來建立一個Deployment而且使用expose
建立一個Service。但相對來講,不管對於文件自己仍是以後須要從新使用來講,使用帶有apply
的YAML文件是更好選擇。apply
是建立和更新資源的「瑞士軍刀」。
delete
kubectl delete pod my_pod
這一命令可用於刪除名稱爲my_pod的Pod。
要刪除全部相同類型的資源,須要使用--all
標誌。例如,使用kubectl delete rs –all
能夠刪除全部ReplicaSet。請注意,若是你嘗試這一操做,那麼要先刪除Deployment,不然ReplicaSet將會從新啓動。
如今你已經瞭解K8s的關鍵命令了,若是你還想查看更多的kubectl命令,請參閱:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands