k8s常用命令
Kubernetes(通常簡稱為 k8s)是一個開源的容器編排平臺,用於自動化部署、擴充套件和管理容器化應用程式。以下是一些常用的 Kubernetes 命令:
一、叢集資訊查詢
kubectl version
:檢視叢集的版本資訊。kubectl api-versions
:輸出一系列的 API 組及其對應的版本號。kubectl api-resources
:輸出服務端 API 支援的資源型別。kubectl cluster-info
:檢視叢集資訊。kubectl cluster-info dump
:檢視叢集更詳細的資訊。
二、資源詳細資訊檢視
kubectl describe <資源型別,如:deployments> <資源名稱>
:檢視特定資源的詳細資訊。kubectl -n <名稱空間> describe pod <pod-name>
:檢視指定名稱空間下指定 pod 的詳細資訊,加-o wide引數顯示詳細資訊。kubectl describe nodes
:顯示叢集節點資源:CPU、GPU、記憶體的使用情況(標籤);nodes 後可加具體節點名。
三、資源建立
kubectl apply -f <檔名>
:更新資源&建立資源(推薦)。kubectl create -f <檔名>
:建立資源。kubectl create -f.
:建立當前目錄下的所有 yaml 資源。kubectl create -f./app1.yaml -f./app2.yaml
:批次建立資源。
四、資源刪除
kubectl delete pod <pod-name>
:刪除指定 pod。kubectl delete service <service-name>
:刪除指定 service。kubectl delete <資源型別> <資源名稱>
:刪除指定資源。kubectl delete -f./pod.json
:刪除 pod.json 檔案中定義的型別和名稱的 pod。kubectl delete pods --all -n <名稱空間>
:刪除指定命令空間下所有的 pod;pods 改為 services 即為刪除所有的 services。kubectl delete pod <pod-name> -n <命令空間> --force --grace-period=0
:強制刪除 pod。kubectl delete pods <pod-name> -n <名稱空間>
:靜態 POD 直接刪除,非靜態 POD 重啟。kubectl delete pods,services -l name=<標籤名>
:刪除指定標籤 pod 和 serivce;--include-uninitialized(含尚未初始化)。
五、資源擴縮容
kubectl scale <資源型別,如 rc> <資源名稱,如 rc-nginx-2> --replicas=5
:擴充套件副本數到 5。kubectl scale rc rc-nginx-2 —replicas=3
:副本數縮減到 3。kubectl autoscale deployment my-app --min=3 --max=10
:自動擴縮容 my-app 的部署,指定副本範圍在 3~10。--cpu-percent=80
:上條命令結尾如果加這段的話,代表當 CPU 使用率達到 80% 時觸發以上自動擴縮容操作。
六、資源使用情況查詢
kubectl top node k8s-node
:顯示節點(k8s-node)資源的使用情況。kubectl top node
:顯示叢集所有節點的資源的使用情況。kubectl top pod -n logging
:顯示指定名稱空間(如,logging)的 pod 的資源的使用情況。
七、資源註解更新
kubectl annotate pods <pod-name> description='my frontend'
:更新 pod,設定其註解description的值為my frontend。
八、容器操作
kubectl -n <名稱空間> exec -it <名稱空間> -- bash
:登入容器的命令。kubectl -n <名稱空間> cp /opt/sql <名稱空間>:/tmp/
:複製本機/opt/sql 路徑下的檔案到 pod 的 /tmp/路徑下。kubectl -n <名稱空間> cp <Pod 名稱>:/tmp/app_bak./mysql_bak/
:複製 Pod 內app_bak路徑所有檔案到本地 mysql_bak 路徑。
九、回滾和歷史檢視
cat pod.json | kubectl apply -f -
:將控制檯輸入的 JSON 配置應用到 Pod。kubectl rollout history deployment nginx-deployment
:檢視修訂版本的歷史記錄。kubectl rollout undo deployment nginx-deployment --to-revision=1
:如果不加 –to-revision=版本號,會回退到上一個版本。
十、資源配額與限制檢視
kubectl describe quota
:檢視叢集的資源配額。kubectl describe limitrange
:檢視叢集的資源限制。
十一、日誌檢視
kubectl logs -f <Pod 名稱> -n <名稱空間>
:檢視指定 Pod 的日誌。kubectl logs --tail=10 <Pod 名稱>
:檢視指定 pod 的最後 10 行日誌。kubectl logs <Pod 名稱> -n <名稱空間> | grep 關鍵字
:根據關鍵字檢視日誌。
十二、節點與標籤操作
kubectl get nodes --show-labels
:檢視所有節點和 label。kubectl label nodes <節點名> <標籤鍵>=<標籤名>
:給節點增加標籤。kubectl label nodes <節點名> <標籤鍵>-
:給節點去掉(刪除)標籤。kubectl taint nodes <節點名> <標籤鍵>=true:NoSchedule
:給節點增加汙點。kubectl taint nodes <節點名> <標籤鍵>:NoSchedule-
:給節點去掉(刪除)汙點。kubectl taint nodes --all <標籤鍵>:NoSchedule-
:刪除所有節點的指導標籤。
十三、服務編輯
kubectl edit svc/docker-registry
:編輯名為 docker-registry 的 service。
十四、資源列表檢視
kubectl get pods -A
:檢視所有的 pod。kubectl get pods -n <名稱空間>
:檢視特定名稱空間下的 Pod 列表。kubectl get po -A|grep -Ev '1/1|2/2|3/3|4/4|Com'
:檢視異常 pod 的列表。kubectl get pods -o wide | grep <需查詢 pod 的關鍵字>
:查詢包含特定關鍵字的 Pod,並且輸出詳細資訊。kubectl get namespaces
:檢視名稱空間列表。kubectl get nodes
:檢視節點列表,可以加上 --show-labels 檢視 label,可以加上 -o wide 檢視 IP。kubectl get services
:檢視叢集中服務的狀態。kubectl get statefulset
:檢視 statefulset 列表,中介軟體與底座大量使用該型別控制器。kubectl get daemonset
:檢視 daemonset 列表,基礎元件大量使用該型別控制器。kubectl get deployments
:檢視 deployment 列表,大部分元件使用該型別控制器。kubectl get svc
:檢視服務列表,可指定引數 -A 參看所有名稱空間中的服務。kubectl get ingress -A
:檢視域名列表,可指定引數 -A 參看所有名稱空間中的對外域名列表。kubectl get crd -A
:檢視自定義資源列表。kubectl get networkpolicies
:檢視叢集的網路策略。kubectl get storageclass
:檢視叢集的儲存類。
十五、資源格式資訊獲取
kubectl get <資源型別,如 deployment> <資源名稱,如 my-deployment> -o yaml
:獲取指定 namespace 的 yaml 格式格式資訊。kubectl get <資源型別,如 deployment> <資源名稱,如 my-deployment> -o json
:獲取指定 namespace 的 json 格式資訊。
十六、節點排程管理
kubectl cordon k8s-node
:標記 k8s-node 節點不可排程。kubectl uncordon k8s-node
:標記 k8s-node 節點可排程。kubectl drain k8s-node
:排除 k8s-node 節點,準備進行維護。