Windows下安裝kubectl及Node和Pod操作常用命令
kubernetes通過kube-apiserver作為整個叢集管理的入口。Apiserver是整個叢集的主管理節點,使用者通過Apiserver配置和組織叢集,同時叢集中各個節點同etcd儲存的互動也是通過Apiserver進行互動。Apiserver實現了一套RESTfull的介面,使用者可以直接使用API同Apiserver互動。另外官方還提供了一個客戶端kubectl隨工具集打包,用於可直接通過kubectl以命令列的方式同叢集互動
專案中部分服務用了k8s部署,研測環境部門搭的叢集,版本較低且叢集中的機器經常出故障,平時工作中難免需要去k8s中看一些POD或節點狀態資訊等,這裡記錄一下如何在window下配置kubectl以及工作中常用操作node和pod的命令
windows下配置kubectl
下載
下載地址:https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe
官網連結:https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#install-kubectl-binary-with-curl-on-windows
配置環境變數
【這臺電腦】→【屬性】→【高階系統配置】
path中增加 D:\xxx\tools\kube
,此目錄即是存放kubectl.exe的目錄,配置好了我們可以直接再cmd執行kubectl試一下效果
這時我們的kubectl就相當安裝好了
配置kubeconfig
kubectl預設會從$HOME/.kube目錄下查詢檔名為 config 的檔案,也能通過設定環境變數 KUBECONFIG 或者通過設定去指定其它 kubeconfig 檔案,kubeconfig就是為訪問叢集所作的配置。那麼在windows中我們對應的目錄就在C:\Users\xxx.kube下的config檔案,我們可以把我們config檔案放入config中去,這樣我們就可以用kubectl直接訪問k8s叢集了
同樣如果想用一些grep之類的命令,可以使用 Git Bash
客戶端操作,如下:
kubectl get pods -n 375-xxx-pre NAME READY STATUS RESTARTS AGE xxx-pre-xxx-85f4ff7998-7bz6s 0/1 CrashLoopBackOff 345 36d xxx-pre-xxx-696d949fbf-8qccb 1/1 Running 223 49d xxx-pre-xxx-xxx-v4-6cf49766d6-zc9b2 1/1 Running 1 6h xxx-pre-xxx-xxx-v4-5bd5b69898-wglpz 1/1 Running 0 11h xxx-pre-xxx-xxx-v4-7bb478c5fc-xlhxk 1/1 Running 0 6h edu-asyn-xxx-55bcbdffc5-pf9l8 1/1 Running 0 7d nginx-ingress-controller-5b548fbf68-4jjn9 1/1 Running 0 1y term-xxx-c7795745c-vljdf 1/1 Running 0 330d texlive-python-api-7b69cd5fd7-zhfcs 1/1 Running 0 14d web-open-695b4bf966-j9k7g 1/1 Running 0 329d
常用的kubectl命令
node操作
# 查詢節點資訊
kubectl get nodes
# 查詢節點更多資訊
kubectl get nodes -o wide
# 暫停節點
kubectl cordon node_xxx
# 恢復節點
kubectl uncordon node_xxx
# 溫和的驅除節點(操作需謹慎)
kubectl drain node_xxx
# 暴力刪除(操作需謹慎)
kubectl delete node node_xxx
pod操作
# 建立pod,定義號pod_xxx.yaml
kubectl create -f pod_xxx.yaml
# 查詢所有pod資訊
kubectl get pods
# 更多資訊
kubectl get pods -o wide
# 查詢單個namespace下的pods詳細資訊
kubectl get pods -n namespace_xxx -o wide
# 檢視單個pod資訊
kubectl get pod pod_xxx -n namespace_xxx -o wide
# 跟蹤pod日誌
kubectl logs -f pod_xxx -n namespace_xxx
# 進入單個pod
kubectl exec -it pod_xxx -n namespace_xxx bash
# 檢視單個pod狀態和生命週期
kubectl describe pod pod_xxx -n namespace_xxx
# JSON格式顯示Pod的完整資訊
kubectl get pod pod_xxx -n namespace_xxx --output json
# YAML方式顯示Pod的完整資訊
kubectl get pod pod_xxx -n namespace_xxx --output yaml
# 更新pod
kubectl replace -f pod_xxx.yaml
# 重建pod,Pod的很多屬性沒辦法修改,比如容器映象,這時候可以採用--force引數
kubectl replace --force -f pod_xxx.yaml
# 刪除單個pod
kubectl delete pod pod_xxx
# 刪除所有pod O(∩_∩)O
kubectl delete pod --all
其他
# 檢視副本數,預設都是一個
kubectl get deployments
# 設定副本數量,增加到3個
kubectl scale deployments/xxx --replicas=3
# 重新縮減到一個
kubectl scale deployments/xxx --replicas=1
# ……
參考連結
關於kubectl相關有博主總結的很好,若想檢視更多請移步:
Kubernetes之kubectl常用命令:https://blog.csdn.net/xingwangc2014/article/details/51204224