文章目錄
- Kubernetes常用命令總結
- 1. 集群管理命令
- `kubectl cluster-info`
- `kubectl get nodes`
- `kubectl describe node <node-name>`
- `kubectl top nodes`
- 2. Pod相關命令
- `kubectl get pods`
- `kubectl get pods -o wide`
- `kubectl describe pod <pod-name>`
- `kubectl logs <pod-name>`
- `kubectl logs <pod-name> -f`
- `kubectl logs <pod-name> -c <container-name>`
- `kubectl exec -it <pod-name> -- /bin/bash`
- `kubectl delete pod <pod-name>`
- `kubectl get pods --all-namespaces`
- 3. Deployment相關命令
- `kubectl get deployments`
- `kubectl create deployment <name> --image=<image>`
- `kubectl apply -f <deployment-file.yaml>`
- `kubectl describe deployment <deployment-name>`
- `kubectl scale deployment <name> --replicas=<number>`
- `kubectl set image deployment/<name> <container-name>=<new-image>`
- `kubectl rollout status deployment/<name>`
- `kubectl rollout history deployment/<name>`
- `kubectl rollout undo deployment/<name> --to-revision=<number>`
- `kubectl delete deployment <name>`
- 4. Service相關命令
- `kubectl get services`
- `kubectl create service <type> <name> --tcp=<port>:<target-port>`
- `kubectl expose deployment <deployment-name> --port=<port> --target-port=<target-port> --type=<type>`
- `kubectl describe service <service-name>`
- `kubectl delete service <name>`
- 5. 命名空間相關命令
- `kubectl get namespaces`
- `kubectl create namespace <name>`
- `kubectl delete namespace <name>`
- `kubectl get pods -n <namespace>`
- `kubectl config set-context --current --namespace=<namespace>`
- 6. 配置管理命令
- `kubectl get configmaps`
- `kubectl create configmap <name> --from-literal=<key>=<value>`
- `kubectl create configmap <name> --from-file=<file-path>`
- `kubectl describe configmap <name>`
- `kubectl get secrets`
- `kubectl create secret generic <name> --from-literal=<key>=<value>`
- `kubectl describe secret <name>`
- 7. 日志與監控命令
- `kubectl logs <pod-name> --previous`
- `kubectl top pods`
- `kubectl get events`
- `kubectl get events --sort-by='.lastTimestamp'`
- 8. 問題排查命令
- `kubectl get pods --field-selector=status.phase=Pending`
- `kubectl get pods --field-selector=status.phase=Failed`
- `kubectl exec -it <pod-name> -- <command>`
- `kubectl debug <pod-name> -it --image=busybox`
- `kubectl port-forward pod/<pod-name> <local-port>:<pod-port>`
- 9. 資源操作通用命令
- `kubectl apply -f <yaml-file>`
- `kubectl delete -f <yaml-file>`
- `kubectl get <resource-type>`
- `kubectl get <resource-type> <resource-name> -o yaml`
- `kubectl describe <resource-type> <resource-name>`
- `kubectl edit <resource-type> <resource-name>`
- `kubectl delete <resource-type> <resource-name>`
- 10. 其他常用命令
- `kubectl get all`
- `kubectl get all -n <namespace>`
- `kubectl explain <resource-type>`
- `kubectl api-resources`
- `kubectl config view`
- `kubectl config use-context <context-name>`
- `kubectl cp <local-file-path> <pod-name>:<pod-file-path>`
- `kubectl cp <pod-name>:<pod-file-path> <local-file-path>`
Kubernetes常用命令總結
1. 集群管理命令
kubectl cluster-info
-
說明:顯示集群的基本信息,包括控制平面和服務的地址
-
示例:
kubectl cluster-info
-
輸出:
Kubernetes control plane is running at https://192.168.99.100:8443 KubeDNS is running at https://192.168.99.100:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
kubectl get nodes
-
說明:列出集群中的所有節點及其狀態
-
示例:
kubectl get nodes
-
輸出:
NAME STATUS ROLES AGE VERSION minikube Ready control-plane 10d v1.24.3
kubectl describe node <node-name>
-
說明:顯示節點的詳細信息,包括資源使用情況、運行的Pod等
-
示例:
kubectl describe node minikube
kubectl top nodes
-
說明:顯示節點的CPU和內存使用情況
-
示例:
kubectl top nodes
-
輸出:
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% minikube 150m 7% 1200Mi 31%
2. Pod相關命令
kubectl get pods
-
說明:列出當前命名空間中的所有Pod
-
示例:
kubectl get pods
-
輸出:
NAME READY STATUS RESTARTS AGE nginx-deployment-7f89b7589 1/1 Running 0 5m
kubectl get pods -o wide
-
說明:顯示Pod的詳細信息,包括IP地址和所在節點
-
示例:
kubectl get pods -o wide
kubectl describe pod <pod-name>
-
說明:顯示Pod的詳細描述,包括容器信息、事件等
-
示例:
kubectl describe pod nginx-deployment-7f89b7589
kubectl logs <pod-name>
-
說明:獲取Pod的日志
-
示例:
kubectl logs nginx-deployment-7f89b7589
kubectl logs <pod-name> -f
-
說明:實時跟蹤Pod的日志輸出
-
示例:
kubectl logs nginx-deployment-7f89b7589 -f
kubectl logs <pod-name> -c <container-name>
-
說明:獲取Pod中指定容器的日志(當Pod有多個容器時)
-
示例:
kubectl logs my-pod -c my-container
kubectl exec -it <pod-name> -- /bin/bash
-
說明:在Pod中執行交互式命令,通常用于進入容器
-
示例:
kubectl exec -it nginx-deployment-7f89b7589 -- /bin/bash
kubectl delete pod <pod-name>
-
說明:刪除指定的Pod
-
示例:
kubectl delete pod nginx-deployment-7f89b7589
kubectl get pods --all-namespaces
-
說明:查看所有命名空間中的Pod
-
示例:
kubectl get pods --all-namespaces
3. Deployment相關命令
kubectl get deployments
-
說明:列出當前命名空間中的所有Deployment
-
示例:
kubectl get deployments
-
輸出:
NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 10m
kubectl create deployment <name> --image=<image>
-
說明:創建一個新的Deployment
-
示例:
kubectl create deployment nginx --image=nginx:1.21
kubectl apply -f <deployment-file.yaml>
-
說明:通過YAML文件創建或更新Deployment
-
示例:
kubectl apply -f nginx-deployment.yaml
kubectl describe deployment <deployment-name>
-
說明:顯示Deployment的詳細信息
-
示例:
kubectl describe deployment nginx-deployment
kubectl scale deployment <name> --replicas=<number>
-
說明:調整Deployment的副本數量
-
示例:
kubectl scale deployment nginx-deployment --replicas=5
kubectl set image deployment/<name> <container-name>=<new-image>
-
說明:更新Deployment中容器的鏡像
-
示例:
kubectl set image deployment/nginx-deployment nginx=nginx:1.22
kubectl rollout status deployment/<name>
-
說明:查看Deployment的更新狀態
-
示例:
kubectl rollout status deployment/nginx-deployment
kubectl rollout history deployment/<name>
-
說明:查看Deployment的歷史版本記錄
-
示例:
kubectl rollout history deployment/nginx-deployment
kubectl rollout undo deployment/<name> --to-revision=<number>
-
說明:回滾Deployment到指定版本
-
示例:
kubectl rollout undo deployment/nginx-deployment --to-revision=2
kubectl delete deployment <name>
-
說明:刪除Deployment
-
示例:
kubectl delete deployment nginx-deployment
4. Service相關命令
kubectl get services
-
說明:列出當前命名空間中的所有Service
-
示例:
kubectl get services
-
輸出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d nginx ClusterIP 10.96.234.123 <none> 80/TCP 5m
kubectl create service <type> <name> --tcp=<port>:<target-port>
-
說明:創建一個新的Service
-
示例:
kubectl create service clusterip nginx --tcp=80:80
kubectl expose deployment <deployment-name> --port=<port> --target-port=<target-port> --type=<type>
-
說明:為Deployment創建Service
-
示例:
kubectl expose deployment nginx-deployment --port=80 --target-port=80 --type=NodePort
kubectl describe service <service-name>
-
說明:顯示Service的詳細信息
-
示例:
kubectl describe service nginx-service
kubectl delete service <name>
-
說明:刪除Service
-
示例:
kubectl delete service nginx-service
5. 命名空間相關命令
kubectl get namespaces
-
說明:列出集群中的所有命名空間
-
示例:
kubectl get namespaces
-
輸出:
NAME STATUS AGE default Active 10d kube-system Active 10d kube-public Active 10d kube-node-lease Active 10d
kubectl create namespace <name>
-
說明:創建一個新的命名空間
-
示例:
kubectl create namespace my-namespace
kubectl delete namespace <name>
-
說明:刪除命名空間
-
示例:
kubectl delete namespace my-namespace
kubectl get pods -n <namespace>
-
說明:查看指定命名空間的Pod
-
示例:
kubectl get pods -n kube-system
kubectl config set-context --current --namespace=<namespace>
-
說明:設置當前上下文的默認命名空間
-
示例:
kubectl config set-context --current --namespace=my-namespace
6. 配置管理命令
kubectl get configmaps
-
說明:列出當前命名空間中的ConfigMap
-
示例:
kubectl get configmaps
kubectl create configmap <name> --from-literal=<key>=<value>
-
說明:創建ConfigMap
-
示例:
kubectl create configmap app-config --from-literal=APP_ENV=production --from-literal=MAX_USERS=100
kubectl create configmap <name> --from-file=<file-path>
-
說明:從文件創建ConfigMap
-
示例:
kubectl create configmap app-config --from-file=config.properties
kubectl describe configmap <name>
-
說明:查看ConfigMap詳情
-
示例:
kubectl describe configmap app-config
kubectl get secrets
-
說明:列出當前命名空間中的Secret
-
示例:
kubectl get secrets
kubectl create secret generic <name> --from-literal=<key>=<value>
-
說明:創建Secret
-
示例:
kubectl create secret generic db-credentials --from-literal=username=admin --from-literal=password=secretpassword
kubectl describe secret <name>
-
說明:查看Secret詳情
-
示例:
kubectl describe secret db-credentials
7. 日志與監控命令
kubectl logs <pod-name> --previous
-
說明:查看Pod之前的日志(如果Pod重啟過)
-
示例:
kubectl logs nginx-deployment-7f89b7589 --previous
kubectl top pods
-
說明:查看Pod的CPU和內存使用情況
-
示例:
kubectl top pods
kubectl get events
-
說明:查看集群中的事件,有助于排查問題
-
示例:
kubectl get events
kubectl get events --sort-by='.lastTimestamp'
-
說明:按時間排序查看事件
-
示例:
kubectl get events --sort-by='.lastTimestamp'
8. 問題排查命令
kubectl get pods --field-selector=status.phase=Pending
-
說明:查看處于Pending狀態的Pod,通常表示有調度問題
-
示例:
kubectl get pods --field-selector=status.phase=Pending
kubectl get pods --field-selector=status.phase=Failed
-
說明:查看處于Failed狀態的Pod
-
示例:
kubectl get pods --field-selector=status.phase=Failed
kubectl exec -it <pod-name> -- <command>
-
說明:在Pod中執行命令,用于檢查容器內部情況
-
示例:
# 檢查網絡連接 kubectl exec -it nginx-deployment-7f89b7589 -- ping -c 3 google.com# 檢查文件系統 kubectl exec -it nginx-deployment-7f89b7589 -- df -h# 檢查內存使用 kubectl exec -it nginx-deployment-7f89b7589 -- free -m
kubectl debug <pod-name> -it --image=busybox
-
說明:創建一個調試容器連接到Pod
-
示例:
kubectl debug nginx-deployment-7f89b7589 -it --image=busybox
kubectl port-forward pod/<pod-name> <local-port>:<pod-port>
-
說明:將本地端口轉發到Pod端口,用于測試連接
-
示例:
kubectl port-forward pod/nginx-deployment-7f89b7589 8080:80
9. 資源操作通用命令
kubectl apply -f <yaml-file>
-
說明:通過YAML文件創建或更新資源
-
示例:
kubectl apply -f deployment.yaml
kubectl delete -f <yaml-file>
-
說明:通過YAML文件刪除資源
-
示例:
kubectl delete -f deployment.yaml
kubectl get <resource-type>
-
說明:查看指定類型資源
-
示例:
kubectl get deployments kubectl get services kubectl get configmaps
kubectl get <resource-type> <resource-name> -o yaml
-
說明:以YAML格式查看資源詳情
-
示例:
kubectl get deployment nginx-deployment -o yaml
kubectl describe <resource-type> <resource-name>
-
說明:查看指定資源詳情
-
示例:
kubectl describe service nginx-service
kubectl edit <resource-type> <resource-name>
-
說明:編輯資源配置
-
示例:
kubectl edit deployment nginx-deployment
kubectl delete <resource-type> <resource-name>
-
說明:刪除資源
-
示例:
kubectl delete pod my-pod kubectl delete deployment my-deployment
10. 其他常用命令
kubectl get all
-
說明:查看當前命名空間中的所有資源
-
示例:
kubectl get all
kubectl get all -n <namespace>
-
說明:查看指定命名空間中的所有資源
-
示例:
kubectl get all -n kube-system
kubectl explain <resource-type>
-
說明:獲取資源類型的詳細說明
-
示例:
kubectl explain deployment kubectl explain pod.spec.containers
kubectl api-resources
-
說明:查看所有API資源類型
-
示例:
kubectl api-resources
kubectl config view
-
說明:查看kubectl配置
-
示例:
kubectl config view
kubectl config use-context <context-name>
-
說明:切換集群上下文
-
示例:
kubectl config use-context minikube
kubectl cp <local-file-path> <pod-name>:<pod-file-path>
-
說明:復制文件到Pod
-
示例:
kubectl cp local-file.txt my-pod:/tmp/remote-file.txt
kubectl cp <pod-name>:<pod-file-path> <local-file-path>
-
說明:從Pod復制文件到本地
-
示例:
kubectl cp my-pod:/tmp/remote-file.txt local-file.txt