kubectl常用命令總結


查看集群和版本相關信息

kubectl version				//顯示客戶端和服務器側版本信息
kubectl api-versions		//列出當前版本的kubernetes的服務器端所支持的api版本信息
kubectl cluster-info		//獲取k8s集群信息
kubectl config view         //獲取k8s集群管理配置信息,也就是 .kube/config 文件內容

復制文件到容器

kubectl cp fileName podName:/fileName	//復制文件到pod的指定目錄,也可從容器中復制文件到外部

獲取幫助詳細信息

kubectl explain po			//查看幫助信息和help類似,尤其是資源清單的結構字段信息
//查看幫助信息,資源下的cpu和memory等,每個配置項都有詳細的網頁手冊地址
kubectl explain Deployment.spec.template.spec.containers.resources

常用獲取資源方式

kubectl get pods			//查看pod信息
kubectl get pods -wide		//已監控方式查看pod信息,有新的創建和銷毀會立刻打印出來
kubectl get pods -o wide	//查看pod詳細信息
kubectl get nodes -o wide	//查看node詳細信息
kubectl get namespaces		//列出所有的namespace
kubectl get rc,service      //查看rc和service列表
kubectl get deployment		//獲取指定控制器pod信息
kubectl get pods -n kube-system  //查看kube-system命名空間中pod信息
kubectl get pods/podName -o yaml  //查看pod的yaml信息

描述資源

kubectl describe node nodeName 			//獲取詳細資源清單信息(包括CPU和Memory)
kubectl describe po podName 			//獲取詳細資源清單信息(包括錯誤信息和實時狀態)

 

查看日志

kubectl logs podName -f					//或者指定pod的日志信息

 

進入容器

kubectl exec -it podName sh				//進入pod容器,但是對權限要求也較多
kubectl exec -it podName -c containerName bash   //通過bash獲得Pod中某個容器的TTY,相當於登錄容器
kubectl attach podName					//獲取實時的logs信息

創建資源(推薦用apply)

kubectl create/apply -f yamls/sonar.yaml 			//根據yaml文件創建容器
kubectl create/apply -f yamls/					//多個yaml文件創建容器
kubectl create/apply -f my-service.yaml -f my-rc.yaml //根據yaml配置文件一次性創建service和rc

刪除資源

kubectl delete -f yamls/sonar.yaml 			//刪除指定pod 
kubectl delete -f yamls/					//刪除多個pod 
kubectl delete pods podName					//刪除指定pod 
kubectl delete pod podName --force --grace-period=0    //強制刪除pod
kubectl delete deployment ControllerName	//有控制器的pod不能直接刪除,需先刪除其控制器
kubectl delete pods,services -l name=labelName  //刪除所有包含某個label的Pod和service
kubectl delete pods --all                   //刪除所有Pod

標簽匹配

kubectl get pods --show-labels
kubectl get pods --show-labels -l env=dev,tie=front    //多個標簽同時滿足條件
kubectl get pods --show-labels -l 'env in (dev,test)'    [in,notin]
kubectl label pods podName env=test      //設置標簽 env=test
kubectl label pods podName env=test --overwrite     //若env標簽存在,強制設置標簽 env=test
kubectl lable pods podName env-       //刪除podname中env標簽

暴露服務,也就是創建service

kubectl expose pod podName [--port=80 --target-port=8000]
kubectl expose deployment deployName [--port=80 --target-port=8000]

[自動]擴縮容

kubectl scale deployment deployName --replicas=3               //執行擴縮容Pod的操作
kubectl autoscale deployment deployName --min=2 --max=10       //設置pod數量在2到10之間
kubectl autoscale deployment deployName --max=5 --cpu-percent=80           //pod數量在1到5之間,目標CPU利用率為80%

 

在線設置鏡像版本

kubectl set image deployment/nginx nginx=nginx:1.9.1    //設置nginx鏡像為1.9.1版本
kubectl edit deployment/nginx                           //編輯yaml文件修改
kubectl rolling-update deployment deployName -f redis-rc.update.yaml    //執行滾動升級操作
#官網滾動更新圖
https://kubernetes.io/images/docs/kubectl_rollingupdate.svg

升級和回滾操作

kubectl rollout history deployment deployName                //顯示deployment的詳情
kubectl rollout history deployment deployName --revision=3   //顯示版本3 deployment的詳情
kubectl rollout undo eployment/deployName                    //回滾到上一個版本
kubectl rollout undo eployment/deployName --to-revision=3    //回滾到第3個版本
kubectl rollout undo --dry-run=true eployment/deployName     //回滾到上一個版本,調試但不執行

管理多集群

kubectl cluster-info           //獲取k8s集群信息
kubectl config view            //獲取k8s集群管理配置信息,也就是 .kube/config 文件內容
kubectl config get-contexts    //查看集群名稱的context
kubectl config set-context 上下文名稱 --user=minikube --cluster=minikube --namespace=demo  //設置上下文
kubectl config set current-context minikube   //切換到名稱為 minikube 的集群中
kubectl config use-context minikube           //切換到名稱為 minikube 的集群中

設置集群角色

kubectl label nodes test1 node-role.kubernetes.io/master=       //設置 test1 為 master 角色
kubectl label nodes 192.168.0.92 node-role.kubernetes.io/node=    //設置 test2 為 node 角色
kubectl taint nodes test1 node-role.kubernetes.io/master=true:NoSchedule   //設置 master 一般情況下不接受負載
kubectl taint nodes test1 node-role.kubernetes.io/master-        //master運行pod
kubectl taint nodes test1 node-role.kubernetes.io/master=:NoSchedule   //master不運行pod

 

設置kubectl shell命令自動補全

kubectl completion -h
sudo yum -y install bash-completion
source /usr/share/bash-completion/bash_completion
type _init_completion
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM