轉自https://www.debian.cn/archives/3828
kubernetes,簡稱K8s,是知名的開源容器編排與調度平台,它的目標是讓容器化部署、資源分配簡單且高效。K8s是絕對主流且流行的容器管理平台,據說在合肥運維同學不會k8s是找不到工作的。本文我們將列舉常用的kubernetes命令,后續會完善內容並提升易讀性。
想起十幾年前,我曾在Linux伊甸園的論壇,整理過一份rpm常用命令的列表,不知有多少朋友看過?
查看所有namespace的pods運行情況
kubectl get pods --all-namespaces
查看具體pods,記得后邊跟namespace名字哦
kubectl get pods kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system
查看pods具體信息
kubectl get pods -o wide kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system
查看集群健康狀態
kubectl get cs
獲取所有deployment
kubectl get deployment --all-namespaces
列出該 namespace 中的所有 pod 包括未初始化的
kubectl get pods --include-uninitialized
查看deployment()
kubectl get deployment nginx-app
查看rc和servers
kubectl get rc,services
查看pods結構信息(重點,通過這個看日志分析錯誤)對控制器和服務,node同樣有效
kubectl describe pods xxxxpodsname --namespace=xxxnamespace
其他控制器類似吧,就是kubectl get 控制器 控制器具體名稱
查看pod日志
kubectl logs $POD_NAME
查看pod變量
kubectl exec my-nginx-5j8ok -- printenv | grep SERVICE
kubectl get cs #### 集群健康情況
kubectl cluster-info #### 集群核心組件運行情況
kubectl get namespaces #### 表空間名
kubectl version #### 版本
kubectl api-versions #### API
kubectl get events #### 查看事件
kubectl get nodes //獲取全部節點
kubectl delete node k8s2 //刪除節點
kubectl rollout status deploy nginx-test
創建
kubectl create -f ./nginx.yaml #### 創建資源
kubectl create -f . #### 創建當前目錄下的所有yaml資源
kubectl create -f ./nginx1.yaml -f ./mysql2.yaml #### 使用多個文件創建資源
kubectl create -f ./dir #### 使用目錄下的所有清單文件來創建資源
kubectl create -f https://git.io/vPieo #### 使用 url 來創建資源
kubectl run -i --tty busybox --image=busybox ----創建帶有終端的pod
kubectl run nginx --image=nginx #### 啟動一個 nginx 實例
kubectl run mybusybox --image=busybox --replicas=5 ----啟動多個pod
kubectl explain pods,svc #### 獲取 pod 和 svc 的文檔
更新
kubectl rolling-update python-v1 -f python-v2.json #### 滾動更新 pod frontend-v1
kubectl rolling-update python-v1 python-v2 --image=image:v2 #### 更新資源名稱並更新鏡像
kubectl rolling-update python --image=image:v2 #### 更新 frontend pod 中的鏡像
kubectl rolling-update python-v1 python-v2 --rollback #### 退出已存在的進行中的滾動更新
cat pod.json | kubectl replace -f - #### 基於 stdin 輸入的 JSON 替換 pod
強制替換,刪除后重新創建資源。會導致服務中斷。
kubectl replace --force -f ./pod.json
為 nginx RC 創建服務,啟用本地 80 端口連接到容器上的 8000 端口
kubectl expose rc nginx --port=80 --target-port=8000
更新單容器 pod 的鏡像版本(tag)到 v4
kubectl get pod nginx-pod -o yaml | sed 's/(image: myimage):.*$/\1:v4/' | kubectl replace -f -
kubectl label pods nginx-pod new-label=awesome #### 添加標簽
kubectl annotate pods nginx-pod icon-url=http://goo.gl/XXBTWq #### 添加注解
kubectl autoscale deployment foo --min=2 --max=10 #### 自動擴展 deployment “foo”
編輯資源
kubectl edit svc/docker-registry #### 編輯名為 docker-registry 的 service
KUBE_EDITOR="nano" kubectl edit svc/docker-registry #### 使用其它編輯器
動態伸縮pod
kubectl scale --replicas=3 rs/foo #### 將foo副本集變成3個
kubectl scale --replicas=3 -f foo.yaml #### 縮放“foo”中指定的資源。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql #### 將deployment/mysql從2個變成3個
kubectl scale --replicas=5 rc/foo rc/bar rc/baz #### 變更多個控制器的數量
kubectl rollout status deploy deployment/mysql #### 查看變更進度
刪除
kubectl delete -f ./pod.json #### 刪除 pod.json 文件中定義的類型和名稱的 pod
kubectl delete pod,service baz foo #### 刪除名為“baz”的 pod 和名為“foo”的 service
kubectl delete pods,services -l name=myLabel #### 刪除具有 name=myLabel 標簽的 pod 和 serivce
kubectl delete pods,services -l name=myLabel --include-uninitialized #### 刪除具有 name=myLabel 標簽的 pod 和 service,包括尚未初始化的
kubectl -n my-ns delete po,svc --all #### 刪除 my-ns namespace下的所有 pod 和 serivce,包括尚未初始化的
kubectl delete pods prometheus-7fcfcb9f89-qkkf7 --grace-period=0 --force 強制刪除
交互
kubectl logs nginx-pod #### dump 輸出 pod 的日志(stdout)
kubectl logs nginx-pod -c my-container #### dump 輸出 pod 中容器的日志(stdout,pod 中有多個容器的情況下使用)
kubectl logs -f nginx-pod #### 流式輸出 pod 的日志(stdout)
kubectl logs -f nginx-pod -c my-container #### 流式輸出 pod 中容器的日志(stdout,pod 中有多個容器的情況下使用)
kubectl run -i --tty busybox --image=busybox -- sh #### 交互式 shell 的方式運行 pod
kubectl attach nginx-pod -i #### 連接到運行中的容器
kubectl port-forward nginx-pod 5000:6000 #### 轉發 pod 中的 6000 端口到本地的 5000 端口
kubectl exec nginx-pod -- ls / #### 在已存在的容器中執行命令(只有一個容器的情況下)
kubectl exec nginx-pod -c my-container -- ls / #### 在已存在的容器中執行命令(pod 中有多個容器的情況下)
kubectl top pod POD_NAME --containers #### 顯示指定 pod和容器的指標度量
調度配置
kubectl cordon k8s-node #### 標記 my-node 不可調度
kubectl drain k8s-node #### 清空 my-node 以待維護
kubectl uncordon k8s-node #### 標記 my-node 可調度
kubectl top node k8s-node #### 顯示 my-node 的指標度量
kubectl cluster-info dump #### 將當前集群狀態輸出到 stdout
kubectl cluster-info dump --output-directory=/path/to/cluster-state #### 將當前集群狀態輸出到 /path/to/cluster-state
如果該鍵和影響的污點(taint)已存在,則使用指定的值替換
kubectl taint nodes foo dedicated=special-user:NoSchedule