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

Kubernetes Pod內(nèi)存監(jiān)控

這篇具有很好參考價值的文章主要介紹了Kubernetes Pod內(nèi)存監(jiān)控。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、Pod監(jiān)控相關指標

對于Pod內(nèi)存相關的指標,主要有兩個數(shù)據(jù)源:

  1. 基于kube-state-metrics,采集到的是內(nèi)存Limits和Requests的設置情況。關鍵的指標如下:
指標 含義
kube_pod_container_resource_limits_memory_bytes Pod內(nèi)存Limits設置量
kube_pod_container_resource_requests_memory_bytes Pod內(nèi)存Requests設置量
  1. 基于kubelet上的CAdvisor,采集到的是內(nèi)存使用情況。關鍵的指標如下:

CAdvisor是Google開源用于收集容器資源和性能指標的一個工具,對于Kubernetes,其集成在kubelet里面,可以收集到每個節(jié)點上的Pod指標。

指標 含義
container_memory_usage_bytes 當前使用的內(nèi)存總量。包括所有使用的內(nèi)存,不管有沒有被訪問 (包括 cache, rss, swap等)。
container_memory_rss RSS使用量。RSS是常駐內(nèi)存集(Resident Set Size)的縮寫,是分配給進程使用實際物理內(nèi)存,包括所有分配到的棧內(nèi)存和堆內(nèi)存 以及 加載到物理內(nèi)存中的共享庫占用的內(nèi)存空間。不包含磁盤緩存
container_memory_cache 緩存使用量。
container_memory_swap 虛擬內(nèi)存使用量。虛擬內(nèi)存(swap)指的是用磁盤來模擬內(nèi)存使用。對性能有影響,一般不用。
container_memory_working_set_bytes 當前內(nèi)存工作集(working set)使用量。工作區(qū)內(nèi)存使用量=活躍的匿名與和緩存,以及file-baked頁。(working_set <= usage)
container_memory_failcnt 申請內(nèi)存失敗次數(shù)。
container_memory_failures_total 內(nèi)存申請錯誤總次數(shù)。

基于以上的指標,就可以計算Pod的內(nèi)存使用率,當然,需要Pod有設置Limits才有意義

sum(container_memory_working_set_bytes{pod!="POD", container!=""}) by (pod) / sum(kube_pod_container_resource_requests_memory_bytes{}) by (pod)

二、關于Pod OOM

先說結(jié)論,Pod OOM主要看的是working_set的使用量是否超過limits。

準備一個簡單的程序,其功能是不斷地申請內(nèi)存

// main.go

package main

import (
	"fmt"
	"net/http"
	"time"
	"os"
	"strconv"

	"github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
	ticker, err := strconv.ParseInt(os.Getenv("Ticker"), 10, 64)
	if err != nil {
		panic(err)
	}
	memoryTicker := time.NewTicker(time.Millisecond * time.Duration(ticker))
	leak := make(map[int][]byte)
	i := 0

	go func() {
		for range memoryTicker.C {
			leak[i] = make([]byte, 1024)
			i++
		}
	}()
	
	http.Handle("/metrics", promhttp.Handler())
	fmt.Println("Strat listening on 0:8000...")
	http.ListenAndServe(":8000", nil)
	
}
# Dockerfile
FROM golang:alpine3.15
WORKDIR /app
COPY main ./
EXPOSE 8000
CMD ["./main"]

k8s查看pod內(nèi)存使用情況,Kubernetes,kubernetes

WorkingSet(container_memory_working_set_bytes)和Usage(container_memory_usage_bytes)基本上是以1:1的趨勢到達limits,然后Pod觸發(fā)OOM

接下來在程序中添加一個goroutine,不斷在文件系統(tǒng)上寫入文件

// main.go

package main

import (
	"fmt"
	"net/http"
	"time"
	"os"
	"strconv"

	"github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
	ticker, err := strconv.ParseInt(os.Getenv("Ticker"), 10, 64)
	if err != nil {
		panic(err)
	}
	memoryTicker := time.NewTicker(time.Millisecond * time.Duration(ticker))
	leak := make(map[int][]byte)
	i := 0

	go func() {
		for range memoryTicker.C {
			leak[i] = make([]byte, 1024)
			i++
		}
	}()
	
	fileTicker := time.NewTicker(time.Millisecond * time.Duration(ticker))
	go func() {
		os.Create("/tmp/file")
		buffer := make([]byte, 1024)
		defer f.Close()

		for range fileTicker.C {
			f.Write(buffer)
			f.Sync()
		}
	}()

	http.Handle("/metrics", promhttp.Handler())
	fmt.Println("Strat listening on 0:8000...")
	http.ListenAndServe(":8000", nil)
	
}

k8s查看pod內(nèi)存使用情況,Kubernetes,kubernetes

當Usage達到Limits,Pod不會OOM,隨著WorkingSet繼續(xù)增大,Cache逐漸減小,等WorkingSet到達Limit,Pod才OOM。

說明Usage中包含文件系統(tǒng)頁面的緩存。當實際內(nèi)存不夠用的時候,這些緩存會讓給程序使用。因為僅僅為了緩存就把程序給OOM掉是不合理的。文章來源地址http://www.zghlxwxcb.cn/news/detail-653509.html

到了這里,關于Kubernetes Pod內(nèi)存監(jiān)控的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關文章

  • 飛天使-k8s知識點17-kubernetes實操2-pod探針的使用

    飛天使-k8s知識點17-kubernetes實操2-pod探針的使用

    探針的使用 容器探針啟動實驗1-啟動探針的使用-startupprobe Liveness Probes 和 Readiness Probes 演示 若存在started.html 則進行

    2024年02月20日
    瀏覽(30)
  • k8s 查看 pod 網(wǎng)段

    查看當前k8s集群中 pod 和 service 網(wǎng)段信息 ? ? ? ? ?

    2024年02月16日
    瀏覽(19)
  • kubernetes(k8s) pod(資源限制、基礎概念)

    kubernetes(k8s) pod(資源限制、基礎概念)

    目錄 ?一、資源限制 1、概念 1.2、Pod和容器的資源請求和限制 1.3、CPU資源單位 1.4、內(nèi)存資源單位 1.5、CPU和內(nèi)存的Requests和Limits的特點 1.6、案例 二、pod 的兩種使用方式 三、pod 資源共享 四、底層容器Pause 1、pause 共享資源 1.1、網(wǎng)絡 1.2、存儲 1.3、小結(jié) 2、Pause主要功能 3、Pod

    2024年02月05日
    瀏覽(103)
  • Kubernetes(k8s)核心資源解析:Pod詳解

    Kubernetes(k8s)核心資源解析:Pod詳解

    ??The Begin??點點關注,收藏不迷路?? Pod是Kubernetes中最小的調(diào)度單元,它可以包含一個或多個容器。Pod中的所有容器共享網(wǎng)絡和存儲卷,它們一起運行在同一個節(jié)點上。Pod提供了一種抽象層,使得容器可以作為一個邏輯單元來管理。 Pod中的容器共享IP地址、端口空間和存儲

    2024年04月11日
    瀏覽(102)
  • k8s快速查看pod對應的容器

    環(huán)境: centos 7.6 k8s 1.20 我們知道,在k8s中最小基本單位是pod,而一個pod里面可以封裝一個或多個容器,而在宿主機上容器的名字并不是pod的名字,所以,下面的方式可以快速的查看一個pod里面對應宿主機哪些容器:

    2024年02月07日
    瀏覽(25)
  • K8S第四講 Kubernetes刪除pod阻塞問題

    在Kubernetes中,當您嘗試刪除一個Pod時,可能會遇到Pod一直阻塞的情況。這通常是由于Pod正在運行或被其他資源(例如ReplicaSet或Deployment)控制而導致的。以下是一些可能的解決方案: 1: 確認Pod是否正在運行:在執(zhí)行刪除Pod命令之前,請先檢查Pod的狀態(tài),確保它沒有在運行中

    2024年02月05日
    瀏覽(118)
  • Kubernetes(k8s):精通 Pod 操作的關鍵命令

    Kubernetes(k8s):精通 Pod 操作的關鍵命令

    ??The Begin??點點關注,收藏不迷路?? Kubernetes 是一個強大的容器編排平臺,其中的核心概念之一就是 Pod。Pod 是 Kubernetes 中最小的可部署單元,它由一個或多個容器組成,共享網(wǎng)絡和存儲資源。 在本篇博客中,我們將深入探討 Kubernetes 集群中與 Pod 相關的一些重要命令,幫

    2024年04月14日
    瀏覽(1129)
  • 【k8s pod container內(nèi)存指標說明】

    我司平臺研發(fā)的devops平臺底層采用k8s實現(xiàn),k8s自帶cadvisor進行集群指標收集,根據(jù)官網(wǎng),我們選用了 container_memory_working_set_bytes (容器的工作集使用量)作為內(nèi)存使用量的觀察項,但隨著后續(xù)使用過程中發(fā)現(xiàn)該指標上升到一定大小后就會維持不變,并不像應用實際內(nèi)存使用量

    2024年02月15日
    瀏覽(17)
  • k8s集群pod和node狀態(tài)監(jiān)控

    k8s集群pod和node狀態(tài)監(jiān)控

    curl -L -O https://raw.githubusercontent.com/gjeanmart/kauri-content/master/spring-boot-simple/k8s/kube-state-metrics.yml 修改namespace為dev(default也行,但是后面的metricbeat安裝也需要修改namespace為default)。 kubectl create -f kube-state-metrics.yml curl -L -O https://raw.githubusercontent.com/elastic/beats/7.6/deploy/kubernetes/metr

    2024年04月09日
    瀏覽(37)
  • K8s(Kubernetes)學習(三):pod概念及相關操作

    K8s(Kubernetes)學習(三):pod概念及相關操作

    摘取官網(wǎng): https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/#working-with-pods 1.1 簡介 Pod 是可以在 Kubernetes 中 創(chuàng)建和管理的、最小的可部署的計算單元 。 Pod (就像在鯨魚莢或者豌豆莢中) 是一組(一個或多個)容器 ; 這些容器共享存儲、網(wǎng)絡、以及怎樣運行這些容器的聲明。 P

    2024年02月13日
    瀏覽(89)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包