1. 程式人生 > 實用技巧 >k8s常用命令

k8s常用命令

簡介

master機器服務:
	- api Server
  		- 提供叢集管理的REST API介面,包括認證授權、資料校驗以 及叢集狀態變更等
  		- 只有API Server才直接操作etcd
  		- 其他模組通過API Server查詢或修改資料
  		- 提供其他模組之間的資料互動和通訊的樞紐
	- scheduler
  		- 負責分配排程Pod到叢集內的node節點
  		- 監聽kube-apiserver,查詢還未分配Node的Pod
  		- 根據排程策略為這些Pod分配節點
	- controller manager
  		- 由一系列的控制器組成,它通過API Server監控整個 叢集的狀態,並確保叢集處於預期的工作狀態
	- kubelet
	- kube-proxy
	- docker

Node機器服務:
	- docker
	- kubelet
	- kube-proxy

常用命令

檢視Kubernates的版本
kubectl version
檢視istio-system映象
kubectl get pod -n istio-system
檢視k8基礎映象(kube-system)
kubectl get pod -n kube-system
修改node為準備狀態
kubectl uncordon (IP地址)
修改node為不可排程狀態
kubectl cordon (IP地址)
將某node機器上的pod平滑的趕到其它節點上
kubectl drain (IP地址)
臨時刪除node節點
kubectl delete nodes (IP地址)
解除安裝node節點
easzctl del-node (IP地址)
刪除node
kubectl delete node (IP地址)
新加node節點機器
easzctl add-node 機器ip
新加master節點機器
easzctl add-master 機器ip
檢視執行例項日誌
kubectl logs -f -n cloud(容器例項)-c(容器名稱)
檢視容器執行狀態
kubectl get pod -n cloud 
顯示Pod的更多資訊
kubectl get pod -n cloud -o wide
檢視執行例項pod描述
kubectl describe pod -n cloud (容器例項)

例:kubectl describe pod -n cloud newstu-75cf556fdf-pcq2j
推送本地映象到映象倉庫
docker push 映象IP/cloud/映象名稱:版本號

例:docker push 192.168.111.18/cloud/auth-center:v1
儲存映象
docker save (映象名稱):(版本) -o (儲存映象的名稱)

例:docker save 222.30.194.226/cloud/app-manager:v1 -o app-manager.tar
刪除lod檔案
kubectl delete -f kubectl istio-svc-dpt.yaml
新增lod檔案
kubectl apply -f kubectl istio-svc-dpt.yaml
列出所有容器中的伺服器節點ip
kubectl get services
列出node節點
kubectl get nodes
獲取自動部署例項列表
kubectl get deployments -n cloud     (獲取所有例項資訊)

例:kubectl get deployments redis -n cloud    (獲取指定redis例項)
刪除pod自動部署例項資訊
kubectl delete  deployments -n cloud     (刪除所有pod例項,慎用)

kubectl delete  deployments redis -n cloud      (刪除指定redis例項)
獲取pod service資訊
kubectl get services -n cloud
修改映象名
docker tag 原映象名 新映象名
刪除映象例項
kubectl delete deployments -n cloud(容器名稱)

例:kubectl delete deployments -n cloud salary
強制刪除並自動重啟pod
kubectl delete pod -n cloud (pod名稱)

例:kubectl delete pod -n cloud newstu-75cf556fdf-pcq2j
進入容器內部
kubectl exec -it -n cloud(容器例項)-c (容器名稱)/bin/sh

例:kubectl exec -it -n cloud cas-686757cfcd-dxtxr -c cas /bin/sh
從pod裡面拷貝檔案到本地
kubectl cp -n cloud (pod例項):(要拷貝的檔案) -c (pod名稱) (拷貝的位置)

例:kubectl cp -n cloud pitcher-dash-5746cff75-429qd:app.jar -c pitcher-dash /opt
新增標籤
kubectl label nodes(節點) 192.168.0.74(所選節點) name=office
檢視node節點標籤
kubectl get nodes --show-labels
刪除node節點標籤
kubectl label nodes (node節點IP) 標籤-

例: kubectl label nodes 192.168.111.112 name-
檢視pod cpu、記憶體佔用情況
kubectl top pod --all-namespaces
清理殭屍pod
kubectl delete pod -n cloud --force --grace-period=0  podname
檢視pod使用記憶體
kubectl top pod -n cloud
docker批量刪除無tag標籤的無用映象
docker images|grep none|awk '{print $3}'|xargs docker rmi

問題處理

如pod無法下載出現以下問題

這個問題大概意思是說http返回值503無法探測此pod在node節點的狀態

原因是因為建立node節點或者是新新增node節點是建立了多餘的網絡卡 mynet0

ip link set mynet0 down

ip link delete mynet0

service kubelet restart

如沒有這個網絡卡重啟網路外掛即可flannel (多重啟幾次)

如閘道器檔案無法下載

這個問題是網路外掛導致重啟網路外掛flannel (多重啟幾次)