国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

云原生|kubernetes|kubernetes集群巡檢腳本

這篇具有很好參考價值的文章主要介紹了云原生|kubernetes|kubernetes集群巡檢腳本。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

生產(chǎn)環(huán)境下的kubernetes集群安裝部署僅僅是前期的一點點工作,主要的工作其實是集中在集群正式運行后的維護,管理工作。

而kubernetes集群的巡視檢查工作是一個比較重要的工作,可以通過定時,定期的巡檢能夠提前發(fā)現(xiàn)kubernetes集群的一些潛在問題,從而在發(fā)生大的影響運行的問題前發(fā)現(xiàn)問題并解決問題。

那么,通常的做法是安裝部署監(jiān)控軟件,例如,prometheus,grafana,zabbix這些,但,毫無疑問的,這些監(jiān)控系統(tǒng)或多或少的會對kubernetes集群有所侵入,并且監(jiān)控系統(tǒng)也是需要維護的,這些無形中增加了我們的維護工作量。

OK,那么使用shell腳本來對集群做一個最為簡單的監(jiān)控,無疑是一個可行的方案。

對于kubernetes集群來說,我們關注的點應該是以下幾點:

1,

kubernetes集群的關鍵服務,例如,kubelet,kube-scheduel,這些服務是否正常

2,

kubernetes集群的整體資源使用率,例如,所有節(jié)點的內(nèi)存,CPU,這樣的關鍵資源使用了多少,剩余多少

如果某個節(jié)點的內(nèi)存使用率過高,會提示我們是哪個節(jié)點,并生成清單文件,按照清單來進行詳細的分析,從而保證集群的穩(wěn)定。

3,

pod的分布,例如,A節(jié)點有哪些pod在運行,這些pod運行是否正常

4,

pod的重啟次數(shù),該指標是一個關鍵的指標,在實際的生產(chǎn)中,很多pod可能實時觀察的時候是running狀態(tài)的,但其實這些pod在不停的反復部署,例如,因為某個存活探針的狀態(tài)不穩(wěn)定,某些pod需要的內(nèi)存不足(pod有指定資源配額策略),造成了oom,等等各種原因都會造成pod反復重啟(pod重啟也就是等于pod重新部署)

因此,我們需要抓取所有pod的重啟次數(shù),并提供一個清單,后續(xù)手動的按照清單文件內(nèi)所列的pod,挨個查詢重啟原因,以此來保證pod的健康,進而保證kubernetes集群的穩(wěn)定。

基于這些需求,編寫了以下的kubernetes巡檢腳本

一,

巡檢腳本的內(nèi)容

#!/bin/bash
#!author zsk
#k8s集群日常巡檢

if [ -d /opt/xunjian/$(date +'%Y-%m-%d') ];
then
echo "巡檢目錄已創(chuàng)建,今日巡檢內(nèi)容都存放到此目錄/opt/xunjian/下"
else
mkdir -p /opt/xunjian/$(date +'%Y-%m-%d')
echo "/opt/xunjian/ 這個目錄剛創(chuàng)建好"
fi

unhealthy=$(kubectl get cs | awk 'NR == 1 {next}{if($2 != "Healthy") print $1}' | wc -l)                                #組件狀態(tài)異常數(shù)
kubeletError=$(systemctl status kubelet.service | grep ^"$(date | awk '{print$2,$3}')" | grep -i error | wc -l)         #kubelet日志報錯數(shù)
errorPod=$(kubectl get po -A | grep -v NAMESPACE| awk '{if($4 != "Running") print}' | wc -l )                #非runing狀態(tài)pod數(shù)
restartPod=`kubectl get po -A |awk '{if($4>0)print$1,$4}'|grep -v NAME`

#查看controller-manager、scheduler、etcd狀態(tài)
server_stat=/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-server.txt
>$server_stat
echo -e "----------Controller-manager、Scheduler、Etcd-0檢測中--------------------------------------"
if (( ${unhealthy} >=1 ));then
  echo -e "\033[31m$(kubectl get cs | awk 'NR == 1 {next}{if($2 != "Healthy") print $1}') Unhealthy\033[0m" >$server_stat
else
  echo -e "controller-manager、scheduler、etcd-0無異常">$server_stat
fi

#查看kubelet狀態(tài)
echo -e "\n \n----------       Kubelet狀態(tài)檢測中       ----------"
if (( ${kubeletError} >=1 ));then
  echo -e "\033[31mkubelet錯誤日志:\033[0m" ; systemctl status kubelet.service | grep ^"$(date | awk '{print$2,$3}')" |awk '{for (i=10;i<=NF;i++)printf("%s ", $i);print ""}' | grep -i error | sort -n | uniq >> node.txt 2>&1
else
  echo -e "\033[32mkubelet無日志報錯\033[0m"
fi

#查看Pods狀態(tài)
echo -e "\n \n----------      Pods運行狀態(tài)檢測中       ----------"
>/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-pod.txt
if [ ${errorPod} -gt 1 ];then
  echo -e "異常的pod信息將寫入下面的文件內(nèi)"
  echo -e "\033[31mErrorPod:\033[0m"  && kubectl get po -A | grep -v NAMESPACE | awk '{if($4 != "Running") print}' > /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-pod.txt
else
  echo -e "所有pod運行狀態(tài)都是running" > /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-pod.txt
fi
if [ -n "$restartPod" ];
then
echo -e "以下是有重啟的pod,請根據(jù)此清單排查pod的重啟原因 \n">>/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-pod.txt
echo -e "$restartPod" >>/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-pod.txt
else
echo "所有pod沒有重啟的情況">>/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-pod.txt
fi





#查看Node資源使用率
check_node(){
echo -e "\n \n----------    Nodes資源使用狀態(tài)檢測中    ----------"
>/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-memory.txt
>/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-node.txt
memWarn=0
for i in $(kubectl get nodes | awk 'NR == 1 {next}{print $1}');do
  memRq=$(kubectl describe node $i | grep memory | grep % | awk '{print $3}' | sed "s/[^0-9]//g")       #memory_request
  memLim=$(kubectl describe node $i | grep memory | grep % | awk '{print $5}' | sed "s/[^0-9]//g")      #memory_limit
  cpuUsed=$(kubectl top nodes $i | awk 'NR == 1 {next}{print $3}'| sed "s/[^0-9]//g")                   #cpu使用率
  memUsed=$(kubectl top nodes $i | awk 'NR == 1 {next}{print $5}'| sed "s/[^0-9]//g")                   #內(nèi)存使用率
  if (( $cpuUsed > 0)) || (( $memUsed > 0 ));then
    let memWarn+=1
    echo -e "$i\tCPU使用率:$cpuUsed%\t內(nèi)存使用率:$memUsed" >> /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-node.txt
  fi
  if [ $memUsed -gt  95 ];then
    let memWarn+=1
    echo "|||+++++++++++++++++++++++++++++++++++++++++++|||" >> /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-memory.txt
    echo -e "$i\t內(nèi)存使用率超出預期,請檢查內(nèi)存占用率過高的原因?。?!"  >> /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-memory.txt
    echo "|||++++++++++++++++++++++++++++++++++++++++++|||" >> /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-memory.txt
    echo -e "\n \n \n" >> /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-memory.txt
    else
    echo -e "$i  該節(jié)點的內(nèi)存在正常范圍內(nèi)" >> /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-memory.txt
  fi
done
#if (( $memWarn ==0 ));then
#  echo -e "無節(jié)點CPU、內(nèi)存使用異常" >> /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-memory.txt
#fi
}
check_node




##獲取node的詳情,記錄每個節(jié)點內(nèi)的運行了哪些pod,以及pod的資源使用情況
>/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-describenode.txt
for e in $(kubectl get node |grep -v NAME|awk '{print $1}')
 do
   kubectl describe node $e >> /opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-describenode.txt 2>&1
   echo -e "\n \n" >>/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-describenode.txt
   echo "||++++++++++++++++++++++++++++++++++++++這是分隔這是分隔這是分隔這是分隔+++++++++++++||" >>/opt/xunjian/$(date +'%Y-%m-%d')/$(date +'%Y-%m-%d')-describenode.txt
 done

jilu_tar(){
cd /opt/xunjian
tar cvjf  /opt/xunjian.tar.gz /opt/xunjian
echo "打包成功"

}
jilu_tar

二,

巡檢腳本的使用的前置條件

1,

需要kubernetes集群內(nèi)部署有metric-server 插件即可,因為腳本內(nèi)很多關鍵數(shù)據(jù)是通過此插件來查詢的

metric-server的部署見我的博客:

云原生|kubernetes|centos7下離線化部署kubesphere-3.3.2---基于kubernetes-1.22.16(從網(wǎng)絡插件開始記錄)_kubesphere離線部署_晚風_END的博客-CSDN博客

2,

kubernetes集群是以kubeadm方式部署的,etcd集群是內(nèi)部堆疊形式部署的,因為腳本內(nèi)的服務檢查是通過kubectl get cs命令來檢查的

三,

腳本說明

該腳本將會生成5個文件,文件存放路徑是/opt/xunjian/當前日期? 日期格式為2023-07-12

describe文件保存了所有節(jié)點的詳細信息

memory文件保存了所有節(jié)點內(nèi)存使用率,如果超出腳本內(nèi)設定的95,將會提示

node文件保存了當前的節(jié)點的資源使用情況,第一列是節(jié)點IP,第二列是cpu使用率,第三列是內(nèi)存使用率

pod文件保存了有過重啟的pod的名稱和重啟次數(shù),如果pod都正常,打印無異常pod

server文件保存了集群的主要服務是否正常,如有異常,將會提示。文章來源地址http://www.zghlxwxcb.cn/news/detail-556466.html

到了這里,關于云原生|kubernetes|kubernetes集群巡檢腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 云原生Kubernetes:K8S集群實現(xiàn)容器運行時遷移(docker → containerd) 與 版本升級(v1.23.14 → v1.24.1)

    云原生Kubernetes:K8S集群實現(xiàn)容器運行時遷移(docker → containerd) 與 版本升級(v1.23.14 → v1.24.1)

    目錄 一、理論 1.K8S集群升級 2.環(huán)境 3.升級策略 4.master1節(jié)點遷移容器運行時(docker → containerd)? 5.master2節(jié)點遷移容器運行時(docker → containerd)? 6.node1節(jié)點容器運行時遷移(docker → containerd)? 7.升級集群計劃(v1.23.14 →?v1.24.1) 8.升級master1節(jié)點版本(v1.24.1) 9.升級master2節(jié)點版本

    2024年02月03日
    瀏覽(38)
  • Linux巡檢腳本

    ??????? 做運維的朋友都知道,大家經(jīng)常要對一些系統(tǒng)做月度維護或者自查,在這個過程中,如果只是小工作量的查詢,進入系統(tǒng)直接輸入命令即可。但是如果說要查詢的系統(tǒng)很多,每個系統(tǒng)中要查詢的項目也很多,那么每次都要一次一次地輸入命令就很麻煩。所以建議大

    2024年02月09日
    瀏覽(16)
  • 服務器巡檢腳本(linux)

    2024年02月20日
    瀏覽(21)
  • python linux系統(tǒng)巡檢腳本

    背景: 因為服務器很多,剛開始一臺一臺手動巡檢,效率很低,于是我想能不能寫個工具實現(xiàn)一勞永逸,于是我想到了python ,python 具有豐富的類庫,且語言簡潔,作為運維使用來說比較方便 上代碼 不足之處還望批評指正

    2024年01月21日
    瀏覽(13)
  • 【云原生】Kubernetes臨時容器

    特性狀態(tài): Kubernetes v1.25 [stable] 本頁面概述了臨時容器:一種特殊的容器,該容器在現(xiàn)有 Pod 中臨時運行,以便完成用戶發(fā)起的操作,例如故障排查。 你會使用臨時容器來檢查服務,而不是用它來構建應用程序 Pod 是 Kubernetes 應用程序的基本構建塊。 由于 Pod 是一次性且可替

    2024年02月15日
    瀏覽(57)
  • 【云原生】容器編排工具Kubernetes

    【云原生】容器編排工具Kubernetes

    目錄 一、 K8S介紹 官網(wǎng)地址: 1.1docker編排與k8s編排相比 1.2特性 1.3功能 二、K8S重要組件 2.1核心組件 (1)Kube-apiserver (2)Kube-controller-manager (3)Kube-scheduler (4)Node ①kubelet ②kube-proxy ③docker (5)etcd 2.2Kubernetes工作原理 三、Pod 3.1 Pod控制器 (1)Deployment (2)ReplicaSet (3)

    2024年02月09日
    瀏覽(32)
  • 【云原生】Kubernetes容器編排工具

    【云原生】Kubernetes容器編排工具

    目錄 1. K8S介紹 1.1 k8s的由來 下載地址 1.2 docker編排與k8s編排相比 1.3 傳統(tǒng)后端部署與k8s 的對比 傳統(tǒng)部署 k8s部署? ?2. k8s的集群架構與組件 (1) Kube-apiserver (2)Kube-controller-manager? (3)Kube-scheduler?? 2.2?k8s的配置存儲中心 2.3? k8s的Node 組件? ?(1)Kubelet? ?(2)Kube-Proxy?

    2024年02月10日
    瀏覽(24)
  • 云原生、容器化、Kubernetes、微服務

    作者:禪與計算機程序設計藝術 云原生(Cloud Native)是一個開放且社區(qū)驅動的項目,它定義了一組架構原則、最佳實踐和工具集,這些原則、實踐和工具圍繞業(yè)務需求和工程實踐而設計,可用于開發(fā)人員在構建和運行分布式系統(tǒng)時更加順暢地交付可靠的軟件。云原生可以幫助

    2024年02月07日
    瀏覽(28)
  • 【云原生|Kubernetes】02-Kubeadm安裝部署Kubernetes集群

    【云原生|Kubernetes】02-Kubeadm安裝部署Kubernetes集群

    前面簡單介紹了Kubernetes的相關架構及其組件,這一章節(jié)我們將介紹如何快速搭建Kubernetes的集群,這里我們將使用官方支持的用于部署 Kubernetes 的工具— kubeadm。 主機名 ip地址 節(jié)點類型 系統(tǒng)版本 master.example.com 192.168.194.128 master,etcd centos7.x node1.example.com 192.168.194.130 node1 cent

    2024年02月03日
    瀏覽(23)
  • 【云原生】kubernetes中容器的資源限制

    【云原生】kubernetes中容器的資源限制

    目錄 1 metrics-server 2 指定內(nèi)存請求和限制 3 指定 CPU 請求和限制 資源限制 在k8s中對于容器資源限制主要分為以下兩類: 內(nèi)存資源限制: 內(nèi)存 請求 (request)和內(nèi)存 限制 (limit)分配給一個容器。 我們保障容器擁有它請求數(shù)量的內(nèi)存,但不允許使用超過限制數(shù)量的內(nèi)存。 官網(wǎng)參

    2024年02月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包