在學習如何更有效地使用kubectl以前,您應該基本瞭解它是什麼以及它是如何工做的。nginx
從用戶角度來講:shell
kubectl是控制Kubernetes的駕駛艙。它容許您執行全部可能的Kubernetes操做。json
從技術角度來講:後端
kubectl是Kubernetes API的客戶端,經過該客戶端咱們能夠徹底控制Kubernetes,這意味着每一個Kubernetes操做都做爲API端口公開,而且能夠經過對此端點的HTTP請求來執行。api
查看全部podbash
kubectl get pods
app
動態監聽查看全部podide
kubectl get pods-w
學習
查看全部deploymen測試
kubectl get deployment
查看全部service服務
kubectl get service
查看關聯後端節點
kubectl get endpoints
查看相關POD的日誌
kubectl get logs NAME
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
經過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文件的內容能夠只寫須要升級的屬性 |