Kubectl基礎命令大全

Kubectl簡述

在學習如何更有效地使用kubectl之前,您應該基本瞭解它是什麼以及它是如何工作的。

從用戶角度來說:

kubectl是控制Kubernetes的駕駛艙。它允許您執行所有可能的Kubernetes操作。

從技術角度來說:

kubectl是Kubernetes API的客戶端,通過該客戶端我們可以完全控制Kubernetes,這意味着每個Kubernetes操作都作爲API端口公開,並且可以通過對此端點的HTTP請求來執行。

命令大全(我所知道的)

查詢命令

查看所有pod

kubectl get pods

動態監聽查看所有pod

kubectl get pods-w

查看所有deploymen

kubectl get deployment

查看所有service服務

kubectl get service

查看關聯後端節點

kubectl get endpoints

查看相關POD的日誌

kubectl get logs NAME

pod副本數量調整

kubectl scale [--current-replicas=replicas] --replicas=replicas NAME

其中,

“--current-replicas” 當前副本數量

“--replicas” 副本數量


項目的生命週期

創建--》發佈--》更新--》回滾--》刪除

創建

kubect run NAME --image=image [--port=port] [--replicas=replicas] [--command]

“--image” 指定鏡像

“--replicas” 指定副本數量

“--port” 指定內部通信端口

實例:kubectl run nginx --image=nginx:latest --replicas=3

以最新版nginx作爲鏡像建立有着三個副本的pods

發佈

kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

“-f FILENAME ” 指定YAML文件名稱

“TYPE NAME” 指定deploymen名稱

“--type” 指定服務類型(默認爲集羣地址-clusterip)

“--port=80” 內部通信的端口

“--target-port=80” 暴露在外部的端口

實例:kubectl expose deploy/nginx --port=80 --target-port=80 --name=nginx-svc --type=NodePort

將nginx以內部端口80,暴露端口80,指定名稱爲nginx-svc,類型爲節點形式進行發佈。

更新

kubectl set image deploy/NAME NAME=新版本

實例:kubectl set image deploy/nginx nginx=nginx:1.14

變更nginx版本爲nginx1.14

回滾

kubectl rollout [commands]

常用command:

history 顯示 rollout 歷史

pause 標記提供的 resource 爲中止狀態

resume 繼續一個停止的 resource

status 顯示 rollout 的狀態

undo 撤銷上一次的 rollout

實例:kubectl rollout undo deploy/nginx

刪除

kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)]) [options]

實例:

kubectl delete svc/nginx-svc

kubectl delete deploy/nginx


除此之外,還有一批命令~~~

查看資源對象簡寫

kubectl api-resources

查看具體資源詳細信息

kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]

實例:

kubectl describe pod/nginx-7697996758-9d6tf

kubectl describe svc/nginx

編輯資源詳細信息

kubectl edit (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]

實例:

kubectl edit deploy/NAME

進入相應pod中*

kubectl exec POD [-c CONTAINER] -- COMMAND [args...] [options]

例子:kubectl exec -it nginx-7697996758-9d6tf bash

查看生成的YAML格式文件

kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml

查看生成的JSON格式文件

kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json

生成YAML 、 JSON文件導出

kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json(yaml) > test.json(yaml)

將現有資源進行導出

kubectl get svc/nginx-svc --export -o yaml > nginx-svc.yaml

測試命令正確性,不執行(類似shell腳本中的sh -n)

kubectl run nginx --image=nginx --port=80 --replicas=2 --dry-run


create與apply的異同

通過YAML文件建立

kubectl create -f FILENAME [options]

例子:kubectl create -f nginx.yaml

通過YAML文件升級deployment

kubectl apply -f FILENAME

相同點 不同點
如果yaml文件中的kind值爲deployment,那麼上面這兩個命令都可以創建一個deployment,生成相應數量的pod create命令:是先刪除所有現有的東西,重新根據yaml文件生成新的。所以要求yaml文件中的配置必須是完整的<br />
apply命令:根據配置文件裏面列出來的內容,升級現有的。所以yaml文件的內容可以只寫需要升級的屬性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章