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 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章