kubectl命令大全
linux
命令列通過tab
鍵自動補全的方式
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
kubectl annotate – 更新資源的註解。
kubectl api-versions – 以“組/版本”的格式輸出服務端支援的API版本。
kubectl apply – 通過檔名或控制檯輸入,對資源進行配置。
kubectl attach – 連線到一個正在執行的容器。
kubectl autoscale – 對replication controller進行自動伸縮。
kubectl cluster-info – 輸出叢集資訊。
kubectl config – 修改kubeconfig配置檔案。
kubectl create – 通過檔名或控制檯輸入,建立資源。
kubectl delete – 通過檔名、控制檯輸入、資源名或者label selector刪除資源。
kubectl describe – 輸出指定的一個/多個資源的詳細資訊。
kubectl edit – 編輯服務端的資源。
kubectl exec – 在容器內部執行命令。
kubectl expose – 輸入replication controller,service或者pod,並將其暴露為新的kubernetes service。
kubectl get – 輸出一個/多個資源。
kubectl label – 更新資源的label。
kubectl logs – 輸出pod中一個容器的日誌。
kubectl namespace -(已停用)設定或檢視當前使用的namespace。
kubectl patch – 通過控制檯輸入更新資源中的欄位。
kubectl port-forward – 將本地埠轉發到Pod。
kubectl proxy – 為Kubernetes API server啟動代理伺服器。
kubectl replace – 通過檔名或控制檯輸入替換資源。
kubectl rolling-update – 對指定的replication controller執行滾動升級。
kubectl run – 在叢集中使用指定映象啟動容器。
kubectl scale – 為replication controller設定新的副本數。
kubectl stop – (已停用)通過資源名或控制檯輸入安全刪除資源。
kubectl version – 輸出服務端和客戶端的版本資訊。
kubectl cordon 設定node不可使用|
kubectl uncordon 設定node可以使用|
kubectl drain 設定node進入維護模式|
kubectl
輸出格式
顯示Pod
的更多資訊
kubectl get pod <pod-name> -o wide
以yaml
格式顯示Pod
的詳細資訊
kubectl get pod <pod-name> -o yaml
kubectl
操作示例
建立資源物件create
kubectl
命令用於根據檔案或輸入建立叢集resource
。如果已經定義了相應resource
的yaml
或son
檔案
根據yaml
配置檔案一次性建立service
和rc
kubectl create -f my-service.yaml -f my-rc.yaml
根據<directory>
目錄下所有.yaml
、.yml
、.json
檔案的定義進行建立操作
kubectl create -f <directory>
檢視資源物件get
get
命令用於獲取叢集的一個或一些resource
資訊。resource
包括叢集節點、執行的pod,ReplicationController,service
等。
檢視所有Pod
列表
kubectl get pods
檢視rc
和service
列表
kubectl get rc,service
一般情況下使用時,需要你加入namespace
來確定在哪個名稱空間下查詢
檢視safety
空間下所有pod
在哪個節點上:
kubectl get pods -o wide -n safety
描述資源物件describe
describe
類似於get
,同樣用於獲取resource
的相關資訊。不同的是,get
獲得的是更詳細的resource
個性的詳細資訊,describe
獲得的是resource
叢集相關的資訊。describe
命令同get
類似,但是describe
不支援-o
選項,對於同一型別resource
,describe
輸出的資訊格式,內容域相同。
顯示Node的詳細資訊
kubectl describe nodes <node-name>
顯示Pod的詳細資訊
kubectl describe pods/<pod-name>
顯示由RC管理的Pod
的資訊
kubectl describe pods <rc-name>
更新替換資源replace
replace
命令用於對已有資源進行更新、替換。如前面create
中建立的nginx
,當我們需要更新resource
的一些屬性的時候,比如修改副本數量,增加、修改label
,更改image
版本,修改埠等。都可以直接修改原yaml
檔案,然後執行replace
命令。
注:名字不能被更新。另外,如果是更新label
,原有標籤的pod
將會與更新label
後的rc斷開聯絡,有新label
的rc將會建立指定副本數的新的pod,但是預設並不會刪除原來的pod。所以此時如果使用get po
將會發現pod
數翻倍,進一步check會發現原來的pod已經不會被新rc控制,此處只介紹命令不詳談此問題,好奇者可自行實驗。
kubectl replace -f rc-nginx.yaml
修復資源patch
如果一個容器已經在執行,這時需要對一些容器屬性進行修改,又不想刪除容器,或不方便通過replace
的方式進行更新。kubernetes
還提供了一種在容器執行時,直接對容器進行修改的方式,就是patch
命令。
如前面建立pod
的label
是app=nginx-2
,如果在執行過程中,需要把其label
改為app=nginx-3
,這patch
命令如下:
kubectl patch pod rc-nginx-2-kpiqt -p '{"metadata":{"labels":{"app":"nginx-3"}}}'
刪除資源物件delete
根據resource
名或label
刪除resource
。
基於Pod.yaml
定義的名稱刪除Pod
kubectl delete -f pod.yaml
刪除所有包含某個label
的Pod
和service
kubectl delete pods,services -l name=<label-name>
刪除所有Pod
kubectl delete pods --all
執行容器的命令exec
exec命令同樣類似於docker的exec命令,為在一個已經執行的容器中執行一條shell命令,如果一個pod容器中,有多個容器,需要使用-c選項指定容器。
執行Pod的data命令,預設是用Pod中的第一個容器執行
kubectl exec <pod-name> data
指定Pod中某個容器執行data命令
kubectl exec <pod-name> -c <container-name> data
通過bash獲得Pod中某個容器的TTY,相當於登入容器
kubectl exec -it <pod-name> -c <container-name> bash
6.Pod
的擴容與縮容scale
scale
用於程式在負載加重或縮小時副本進行擴容或縮小,如前面建立的nginx
有兩個副本,可以輕鬆的使用scale
命令對副本數進行擴充套件或縮小。
執行擴容縮容Pod
的操作
kubectl scale rc redis --replicas=3
我們需要確認的是在rc
配置檔案中定義的replicas
數量,當我們執行上述命令的結果大於replicas
的數量時,則我們執行的命令相當於擴容操作,反之相反,可以理解為我們填寫的數量是我們需要的Pod
數量。需要注意的是,當我們需要進行永久性擴容時,不要忘記修改rc
配置檔案中的replicas
數量。
7.Pod
的滾動升級rolling-update
rolling-update
是一個非常重要的命令,對於已經部署並且正在執行的業務,rolling-update
提供了不中斷業務的更新方式。rolling-update
每次起一個新的pod
,等新pod
完全起來後刪除一箇舊的pod
,然後再起一個新的pod
替換舊的pod
,直到替換掉所有的pod
。
執行滾動升級操作
kubectl rolling-update redis -f redis-rc.update.yaml
需要注意的是當我們執行rolling-update
命令前需要準備好新的RC
配置檔案以及ConfigMap
配置檔案,RC
配置檔案中需要指定升級後需要使用的映象名稱,或者可以使用kubeclt rolling-update redis --image=redis-2.0
直接指定映象名稱的方式直接升級。
日誌logs
logs
命令用於顯示pod
執行中,容器內程式輸出到標準輸出的內容。跟docker
的logs
命令類似。如果要獲得tail -f
的方式,也可以使用-f
選項。
kubectl logs rc-nginx-2-kpiqt
標籤label
為kubernetes
叢集的resource
打標籤,如前面例項中提到的為rc
打標籤對rc
分組。還可以對nodes
打標籤,這樣在編排容器時,可以為容器指定nodeSelector
將容器排程到指定lable
的機器上,如如果叢集中有IO
密集型,計算密集型的機器分組,可以將不同的機器打上不同標籤,然後將不同特徵的容器排程到不同分組上。
在1.2之前的版本中,使用kubectl get nodes
則可以列出所有節點的資訊,包括節點標籤,1.2版本中不再列出節點的標籤資訊,如果需要檢視節點被打了哪些標籤,需要使用describe
檢視節點的資訊。
英文 簡寫 |
---|
clusters (僅對federation apiservers有效) |
componentstatuses (縮寫 cs) |
configmaps (縮寫 cm) |
daemonsets (縮寫 ds) |
deployments (縮寫 deploy) |
endpoints (縮寫 ep) |
events (縮寫 ev) |
horizontalpodautoscalers (縮寫 hpa) |
ingresses (縮寫 ing) |
jobs |
limitranges (縮寫 limits) |
namespaces (縮寫 ns) |
networkpolicies |
nodes (縮寫 no) |
persistentvolumeclaims (縮寫 pvc) |
persistentvolumes (縮寫 pv) |
pods (縮寫 po) |
podsecuritypolicies (縮寫 psp) |
podtemplates |
replicasets (縮寫 rs) |
replicationcontrollers (縮寫 rc) |
resourcequotas (縮寫 quota) |
secrets |
serviceaccounts (縮寫 sa) |
services (縮寫 svc) |
statefulsets |
storageclasses |
thirdpartyresources |
kubectl edit
使用預設編輯器 編輯伺服器上定義的資源。
使用命令列工具獲取的任何資源都可以使用edit
命令編輯。edit
命令會開啟使用KUBE_EDITOR,GIT_EDITOR
或者EDITOR
環境變數定義的編輯器,可以同時編輯多個資源,但所編輯過的資源只會一次性提交。edit
除命令引數外還接受檔名形式。
檔案預設輸出格式為YAML
。要以JSON
格式編輯,請指定“-o json
”選項。
如果在更新資源時報錯,將會在磁碟上建立一個臨時檔案來記錄。在更新資源時最常見的錯誤是幾個使用者同時使用編輯器更改伺服器上資源,發生這種情況,你需要將你的更改應用到最新版本的資源上,或者更新儲存的臨時副本。
示例
編輯名為’docker-registry
’的service
:
kubectl edit svc/docker-registry
使用替代的編輯器
KUBE_EDITOR="nano"
kubectl edit svc/docker-registry
編輯名為“myjob
”的service
,輸出JSON
格式 V1 API版本
kubectl edit job.v1.batch/myjob -o json
以YAML格式輸出編輯deployment“mydeployment”
,並將修改的配置儲存在annotation
中:
kubectl edit deployment/mydeployment -o yaml --save-config
Flags
Name | Shorthand | Default | Usage |
---|---|---|---|
filename | f | [] | Filename, directory, or URL to files to use to edit the resource |
include-extended-apis | True | If true, include definitions of new APIs via calls to the API server. [default true] | |
output | o | yaml | Output format. One of: yaml |
record | False | Record current kubectl command in the resource annotation. If set to false, do not record the command. If set to true, record the command. If not set, default to updating the existing annotation value only if one already exists. | |
recursive | R | False | Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory. |
save-config | False | If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future. | |
schema-cache-dir | ~/.kube/schema | If non-empty, load/store cached API schemas in this directory, default is ‘$HOME/.kube/schema’ | |
validate | True | If true, use a schema to validate the input before sending it | |
windows-line-endings | False | Use Windows line-ending |
相關文章
- 常用kubectl命令總結
- kubectl常用命令
- AT 命令大全
- Kubernetes之kubectl常用命令
- VIM 命令大全
- Redis 命令大全Redis
- MSF命令大全
- Ubuntu命令大全Ubuntu
- kali命令大全
- RMAN命令大全
- MySQl 命令大全MySql
- FTP 命令大全FTP
- dos命令大全
- dos 命令大全
- git命令大全Git
- Solaris 命令大全
- docker命令大全Docker
- docker 命令大全Docker
- SQL*PLUS命令, set命令大全SQL
- Laravel Artisan 命令大全Laravel
- Linux命令大全Linux
- 終端命令大全
- RAC操作命令大全
- Git命令大全(Github)Github
- Hadoop命令大全Hadoop
- vim命令使用大全
- linux 命令 大全Linux
- Docker 操作命令大全Docker
- 適用於初學者的基本 kubectl 和 Helm 命令
- 掌握 Kubernetes 故障排除技巧:kubectl命令的基本指南
- Linux命令操作大全Linux
- linux命令大全(續)Linux
- linux GPT命令大全LinuxGPT
- gpfs 相關命令大全
- CentOS基礎命令大全CentOS
- VI 日常命令來大全
- Linux命令大全——LMNOPQLinux
- 搜尋引擎命令大全