Pod 相關腳本
清理 Evicted 的 pod

kubectl get pod -o wide --all-namespaces | awk '{if($4=="Evicted"){cmd="kubectl -n "$1" delete pod "$2; system(cmd)}}'

清理非 Running 的 pod

kubectl get pod -o wide --all-namespaces | awk '{if($4!="Running"){cmd="kubectl -n "$1" delete pod "$2; system(cmd)}}'

不斷嘗試建立TCP連接測試網絡連通性

while true; do echo "" | telnet 10.0.0.3 443; sleep 0.1; done

ctrl+c 終止測試
替換 10.0.0.3 與 443 為需要測試的 IP/域名 和端口表格輸出各節點佔用的 podCIDR

kubectl get no -o=custom-columns=INTERNAL-IP:.metadata.name,EXTERNAL-IP:.status.addresses[1].address,CIDR:.spec.podCIDR

表格輸出各節點總可用資源 (Allocatable)

kubectl get no -o=custom-columns="NODE:.metadata.name,ALLOCATABLE CPU:.status.allocatable.cpu,ALLOCATABLE MEMORY:.status.allocatable.memory"

輸出各節點已分配資源的情況

kubectl get nodes --no-headers | awk '{print $1}' | xargs -I {} sh -c "echo {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve --;"

表格輸出 cpu 已分配情況:

kubectl get nodes --no-headers | awk '{print $1}' | xargs -I {} sh -c 'echo -n "{}\t" ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- | grep cpu | awk '\''{print $2$3}'\'';'

表格輸出 memory 已分配情況:

kubectl get nodes --no-headers | awk '{print $1}' | xargs -I {} sh -c 'echo -n "{}\t" ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- | grep memory | awk '\''{print $2$3}'\'';'

強制重啟一個Deployment

kubectl patch deployment <deployment-name> \
  -p '{"spec":{"template":{"spec":{"containers":[{"name":"<container-name>","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'

線程數排名統計

printf " NUM PID\t\tCOMMAND\n" && ps -eLf | awk '{$1=null;$3=null;$4=null;$5=null;$6=null;$7=null;$8=null;$9=null;print}' | sort |uniq -c |sort -rn | head -10

直接通過 NortPort 訪問獲取真實 IP

kubectl patch svc myservice -p '{"spec":{"externalTrafficPolicy":"Local"}}'

直接通過 NortPort 訪問獲取真實 IP

kubectl patch svc myservice -p '{"spec":{"externalTrafficPolicy":"Local"}}'
印出已註冊的api
kubectl api-resources
強制刪除pv
kubectl patch pv k8s-pv-kafka02 -p '{"metadata":{"finalizers":null}}'
強制刪除pod
kubectl delete pods --grace-period=0 --force
#獲取集群中所有 pod 運行需要的鏡像
kubectl get pods -A -o=custom-columns='IMAGE:spec.containers[*].image' | tr ',' '\n' | sort -u
#獲取所有 namespace 的 events 日誌並按照時間戳記排序
kubectl get events --all-namespaces -o wide --sort-by=.metadata.creationTimestamp
#匯出一個 namespaces 下所有 pod 的日誌
kubectl get pod -n kube-system | awk '{print $1}' | xargs -L1 -I {} bash -c "kubectl -n kube-system logs {} > {}.log"
#匯出 k8s 元件的 pod 日誌
kubectl get pod -n kube-system | grep -E "kube-apiserver|kube-controller|kube-proxy|kube-scheduler|coredns" | awk '{print $1}' | xargs -L1 -I {} sh -c "kubectl -n kube-system logs {} > {}.log"
#獲取集群中節點的 IP
kubectl get nodes -o jsonpath='{ $.items[*].status.addresses[?(@.type=="InternalIP")].address }'
#獲取所有 Pod 的 IP
kubectl get pods -o jsonpath='{ $.items[*].status.podIP }'
#獲取所有 node 節點的子網資訊
kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'
#獲取所有 service 的 IP
kubectl get svc --no-headers --all-namespaces -o jsonpath='{$.items[*].spec.clusterIP}'
#根據 CPU/RAM 佔用排序
# cpu
kubectl top pods --all-namespaces | sort --reverse --key 3 --numeric

# memory

kubectl top pods --all-namespaces | sort --reverse --key 4 --numeric

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料