kubectl是Kubernetes的命令行工具,人們一般經過它與Kubernetes進行交互。經過kubectl可以對集羣自己進行管理,並可以在集羣上進行容器化應用的安裝部署。咱們在《使用Kubectl管理Kubernetes的全解教程》一文中詳細介紹了在不一樣的操做系統中如何安裝kubectl以及如何使用RKE和Rancher建立配置文件。在本文中,咱們將介紹kubectl中最常使用的命令。node
首先,讓咱們來看看kubectl是如何工做的:bash
一個kubectl命令能夠執行一個行動,如get、create或者describeapp
一個行動能夠在一個資源上執行,如Deployment工具
kubectl命令遵循這一語法格式:操作系統
kubectl an_action a_resource a_resource_name –flags命令行
在大部分狀況下,名稱和標誌並非必要的。例如,要得到關於現有pod的信息,你一般能夠直接運行這一命令:kubectl get pods。debug
這裏有一個小技巧:若是你不想每次都手動輸入kubectl,能夠製做一個Bash alias。設置alias k='kubectl',以後只需輸入「k」便可代替kubectl。日誌
接下來,咱們來看看最多見的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