Kubernetes 常用命令

1、查看集羣信息
查看集羣信息:kubectl cluster-info

查看更詳細的可以用:kubectl cluster-info dump

查看各組件信息:kubectl get componentstatuses

查看kubelet進程啓動參數: ps -ef | grep kubelet

2、GET信息:

查看節點:kubectl get nodes

查看rc和namespace:kubectl get rc,namespace

獲取所有命名空間上的pod:kubectl get pod -o wide --all-namespaces

查看pod IP(services)時使用 :kubectl get services 或kubectl get svc

查看所有namespace下面的pod:kubectl get pod --all-namcpaces

查看指定pod存在哪個對應的節點(node)上:kubectl get pod mysql -o wide

查看pod描述describe特別是查看 pod 無法創建的時候的日誌:kubectl describe pod XXX -n kube-system

以jison格式輸出pod的詳細信息:kubectl get po mysql -o json

還可以輸出其它格式和方法(kubectl get -h查看幫助)

查看kube-system namespace下面的pod:kubectl get pod -n kube-system

3、create創建

kubectl命令用於根據文件或輸入創建集羣resource。如果已經定義了相應resource的yaml或son文件,直接kubectl create -f filename即可創建文件內定義的resource。也可以直接只用子命令[namespace/secret/configmap/serviceaccount]等直接創建相應的resource。從追蹤和維護的角度出發,建議使用json或yaml的方式定義資源。

kubectl create -f rc-nginx.yaml

kubectl apply -f rc-nginx.yaml

kubectl delete -f rc-nginx.yaml

4.apply更新

apply命令提供了比patch,edit等更嚴格的更新resource的方式。通過apply,用戶可以將resource的configuration使用source control的方式維護在版本庫中。每次有更新時,將配置文件push到server,然後使用kubectl apply將更新應用到resource。kubernetes會在引用更新前將當前配置文件中的配置同已經應用的配置做比較,並只更新更改的部分,而不會主動更改任何用戶未指定的部分。apply命令的使用方式同replace相同,不同的是,apply不會刪除原有resource,然後創建新的。apply直接在原有resource的基礎上進行更新。同時kubectl apply還會resource中添加一條註釋,標記當前的apply。類似於git操作。

kubectl apply -f rc-nginx.yaml

kubectl delete -f rc-nginx.yaml

5、patch修改

如果一個容器已經在運行,這時需要對一些容器屬性進行修改,又不想刪除容器,或不方便通過replace的方式進行更新。kubernetes還提供了一種在容器運行時,直接對容器進行修改的方式,就是patch命令。
如前面創建pod的label是app=nginx-2,如果在運行過程中,需要把其label改爲app=nginx-3。

kubectl patch pod rc-nginx-2-kpiqt -p '{"metadata":{"labels":{"app":"nginx-3"}}}'

6、replace更新替換資源

kubectl replace -f rc-nginx.yaml

7、delete刪除

根據resource名或label刪除resource。

kubectl delete -f rc-nginx.yaml

kubectl delete pod rc-nginx

kubectl delete pod -label=rc-nginx 

刪除所有包含某個 label 的pod 和 service kubectl delete pod,svc -l name=<label-name>

8、logs 查看日誌

logs命令用於顯示pod運行中,容器內程序輸出到標準輸出的內容。跟docker的logs命令類似。如果要獲得tail -f 的方式,也可以使用-f選項。

kubectl logs <pod-name>

kubectl logs -f <pod-name> # 實時查看日誌

9、rolling-update

rolling-update是一個非常重要的命令,對於已經部署並且正在運行的業務,rolling-update提供了不中斷業務的更新方式。rolling-update每次起一個新的pod,等新pod完全起來後刪除一箇舊的pod,然後再起一個新的pod替換舊的pod,直到替換掉所有的pod。
rolling-update需要確保新的版本有不同的name,Version和label,否則會報錯 。

kubectl rolling-update rc-nginx-2 -f rc-nginx.yaml

如果在升級過程中,發現有問題還可以中途停止update,並回滾到前面版本

kubectl rolling-update rc-nginx-2 —rollback

rolling-update還有很多其他選項提供豐富的功能,如—update-period指定間隔週期,使用時可以使用-h查看help信息

10、scale

scale用於程序在負載加重或縮小時副本進行擴容或縮小,如前面創建的nginx有兩個副本,可以輕鬆的使用scale命令對副本數進行擴展或縮小。
擴展副本數到4:kubectl scale rc rc-nginx-3 —replicas=4

重新縮減副本數到2:kubectl scale rc rc-nginx-3 —replicas=2

11、autoscale

scale雖然能夠很方便的對副本數進行擴展或縮小,但是仍然需要人工介入,不能實時自動的根據系統負載對副本數進行擴、縮。autoscale命令提供了自動根據pod負載對其副本進行擴縮的功能。
autoscale命令會給一個rc指定一個副本數的範圍,在實際運行中根據pod中運行的程序的負載自動在指定的範圍內對pod進行擴容或縮容。如前面創建的nginx,可以用如下命令指定副本範圍在1~4

kubectl autoscale rc rc-nginx-3 —min=1 —max=4

12、exec

exec命令同樣類似於docker的exec命令,爲在一個已經運行的容器中執行一條shell命令,如果一個pod容器中,有多個容器,需要使用-c選項指定容器。

kubectl exec -it codeleak-github-cron-1567581840-zsqpc /bin/sh

13、run:類似於docker的run命令,直接運行一個image。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章