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

通過MetricsAPI監(jiān)控pod資源使用情況(k8s資源監(jiān)控,java)

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

1. 目的:簡單監(jiān)控pod

通過MetricsAPI監(jiān)控pod資源使用情況(k8s資源監(jiān)控,java),分布式,# kubernetes,java,kubernetes,java,容器
我想使用java監(jiān)控k8s pod的資源的簡單使用情況,但是k8s內(nèi)部并沒有采集資源的實現(xiàn)。

但是k8s提供了一套k8s的對接標(biāo)準(zhǔn),只要適配這套標(biāo)準(zhǔn),就可以通過kubelet采集資源數(shù)據(jù),并且通過k8s api服務(wù)器輸出。這些對于故障排查以及自動伸縮至關(guān)重要

2. 部署指南

metrics-server是Kubernetes的一個集群范圍內(nèi)的聚合器,用于收集所有節(jié)點和Pods的資源使用信息,如CPU和內(nèi)存。metrics指標(biāo)統(tǒng)計器(github)

  1. 如果證書沒問題,部署最新的metrics-server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml
  1. 如果你的集群使用自簽名的證書,你可能需要添加參數(shù)來忽略 TLS 驗證錯誤

把commponents.yaml wget下來后, 在 components.yaml 文件中,找到 metrics-server 的 Deployment 部分,并添加以下參數(shù)到 args:

- --kubelet-insecure-tls
  1. 查看是否部署成功
kubectl get deployment metrics-server -n kube-system

通過MetricsAPI監(jiān)控pod資源使用情況(k8s資源監(jiān)控,java),分布式,# kubernetes,java,kubernetes,java,容器

# 查看所有命名空間的pod資源
kubectl top pods -A

通過MetricsAPI監(jiān)控pod資源使用情況(k8s資源監(jiān)控,java),分布式,# kubernetes,java,kubernetes,java,容器
top 命令就可以使用了。

3. java Api調(diào)用

在官方提供的客戶端 java庫里是沒有直接調(diào)用metrics的方法的。我們只能使用restful api進行訪問,

  1. 添加maven依賴(獲取tls上下文,如果只是過去資源可以不添加)
<dependency>
            <groupId>io.kubernetes</groupId>
            <artifactId>client-java</artifactId>
            <version>18.0.0</version>
        </dependency>
  1. 測試restful api(測試,可不做)
    我這里是手動把證書導(dǎo)入到了postman(k8s的權(quán)限認證非常關(guān)鍵,沒有權(quán)限是無法訪問api的)
    通過MetricsAPI監(jiān)控pod資源使用情況(k8s資源監(jiān)控,java),分布式,# kubernetes,java,kubernetes,java,容器
  2. java訪問 restapi
    我這里吧k8s 客戶端和 rest http前后文都注入spring了,這樣調(diào)用起來比較方便

注入k8s客戶端

在這里插入代碼片@Configuration
public class KubernetesClientConfig {
         @Bean
    public AppsV1Api appsV1Api(ApiClient apiClient) {
        return  new AppsV1Api(apiClient);
    }

}

通過MetricsAPI監(jiān)控pod資源使用情況(k8s資源監(jiān)控,java),分布式,# kubernetes,java,kubernetes,java,容器
注入8sRestTemplate

@Configuration
public class RestTemplateConfig {
    private final ApiClient apiClient;

    public RestTemplateConfig(ApiClient apiClient) {
        this.apiClient = apiClient;
    }
    @Bean
    public RestTemplate extendK8sRestTemplate() {
       return  new RestTemplate(new OkHttp3ClientHttpRequestFactory(apiClient.getHttpClient()));

    }

}

通過MetricsAPI監(jiān)控pod資源使用情況(k8s資源監(jiān)控,java),分布式,# kubernetes,java,kubernetes,java,容器
4. 定時任務(wù)讀取該數(shù)據(jù),存儲到redis,保留60分鐘,可以根據(jù)自動目的設(shè)置。

里面代碼看起來比較雜亂,整體思路是使用上面注入的extendK8sRestTemplate訪問api,然后存入redis,只保留30分鐘

@Service
public class LogResourceTaskService implements TaskService {
    @Resource
    private final RedisService redisService;
    @Resource
    private final RestTemplate extendK8sRestTemplate;
    @Resource

    private final KubernetesServiceImpl kubernetesServiceImpl;
    @Resource

    private final ApiClient apiClient;
    public LogResourceTaskService(RedisService redisService,RestTemplate extendK8sRestTemplate, KubernetesServiceImpl kubernetesServiceImpl,ApiClient apiClient) {
        this.redisService = redisService;
        this.extendK8sRestTemplate = extendK8sRestTemplate;
        this.apiClient = apiClient;
        this.kubernetesServiceImpl = kubernetesServiceImpl;

    }

    @Override
    public void work(String guid) {
        String mapKey0 = "metrics_cpu:"+PodDataSynConfig.CURRENT_POD;
        String mapKey1 = "metrics_memory:"+PodDataSynConfig.CURRENT_POD;

        String url = String.format("%s/apis/metrics.k8s.io/v1beta1/namespaces/%s/pods/%s", apiClient.getBasePath(),kubernetesServiceImpl.getNamespace(), PodDataSynConfig.CURRENT_POD);
        ResponseEntity<PodMetrics> response =  extendK8sRestTemplate.getForEntity(url, PodMetrics.class);

        if (response.getBody() != null && response.hasBody()){
            if(response.getBody().getContainers() != null && response.getBody().getContainers().get(0) != null){
                String cpu = response.getBody().getContainers().get(0).getUsage().getCpu();
                String memory = response.getBody().getContainers().get(0).getUsage().getMemory();
                long timestamp = Instant.now().getEpochSecond();

                redisService.getRedisTemplate().opsForZSet().add(mapKey0, timestamp+":"+cpu,timestamp);
                redisService.getRedisTemplate().opsForZSet().add(mapKey1, timestamp+":"+memory,timestamp);
            }
        }
        removeOldData(mapKey0,mapKey1);
        
    }
    public void removeOldData(String key0, String key1) {
        long cutoffTimestamp = Instant.now().getEpochSecond() - 3600; // 60分鐘前
        redisService.getRedisTemplate().opsForZSet().removeRangeByScore(key0, -Double.MAX_VALUE, cutoffTimestamp);
        redisService.getRedisTemplate().opsForZSet().removeRangeByScore(key1, -Double.MAX_VALUE, cutoffTimestamp);

    }

}

4. 完工:

這樣簡單讀取pod資源的任務(wù)就完成了,主要步驟就是 metrics server服務(wù)器的部署,然后使用restful api讀取信息。文章來源地址http://www.zghlxwxcb.cn/news/detail-827117.html

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

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • K8s(一)Pod資源——Pod介紹、創(chuàng)建Pod、Pod簡單資源配額

    K8s(一)Pod資源——Pod介紹、創(chuàng)建Pod、Pod簡單資源配額

    目錄 Pod概述 pod網(wǎng)絡(luò) pod存儲 pod和容器對比 創(chuàng)建pod的方式 pod運行方式分類 Pod的創(chuàng)建 Pod的創(chuàng)建過程 通過kubectl run來創(chuàng)建pod 通過yaml文件創(chuàng)建,yaml文件簡單寫法 Pod簡單操作 Pod的標(biāo)簽labels Pod的資源配額resource 測試 Kubernetes Pod | Kubernetes Pod是Kubernetes中的最小調(diào)度單元,k8s都是以p

    2024年01月18日
    瀏覽(52)
  • k8s資源對象(1) namespace&&pod

    k8s資源對象(1) namespace&&pod

    Namespace是kubernetes系統(tǒng)中的一種非常重要資源,它的主要作用是用來實現(xiàn)多套環(huán)境的資源隔離或者多租戶的資源隔離。 默認情況下,kubernetes集群中的所有的Pod都是可以相互訪問的。但是在實際中,可能不想讓兩個Pod之間進行互相的訪問,那此時就可以將兩個Pod劃分到不同的

    2024年01月18日
    瀏覽(49)
  • k8s pod一直處于pending狀態(tài)一般有哪些情況,怎么排查?

    一個pod一開始創(chuàng)建的時候,它本身就是會處于pending狀態(tài),這時可能是正在拉取鏡像,正在創(chuàng)建容器的過程。 如果等了一會發(fā)現(xiàn)pod一直處于pending狀態(tài), 那么我們可以使用kubectl describe命令查看一下pod的Events詳細信息。一般可能會有這么幾種情況導(dǎo)致pod一直處于pending狀態(tài): 1、

    2024年01月17日
    瀏覽(33)
  • kubernetes(k8s) pod(資源限制、基礎(chǔ)概念)

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

    目錄 ?一、資源限制 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)絡(luò) 1.2、存儲 1.3、小結(jié) 2、Pause主要功能 3、Pod

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

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

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

    2024年04月11日
    瀏覽(102)
  • k8s pod “cpu和內(nèi)存“ 資源限制

    轉(zhuǎn)載用于收藏學(xué)習(xí):原文 為了保證充分利用集群資源,且確保重要容器在運行周期內(nèi)能夠分配到足夠的資源穩(wěn)定運行,因此平臺需要具備 Pod的資源限制的能力。 對于一個pod來說,資源最基礎(chǔ)的2個的指標(biāo)就是:CPU和內(nèi)存。 Kubernetes提供了個采用requests和limits 兩種類型參數(shù)對資

    2024年02月13日
    瀏覽(30)
  • 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學(xué)習(xí)指南(10)-k8s中為pod分配CPU和內(nèi)存資源

    Kubernetes(簡稱K8s)是一種開源的容器編排平臺,廣泛用于構(gòu)建、部署和管理容器化應(yīng)用。在Kubernetes中,Pod是最小的可部署單元,而資源分配是確保Pod正常運行的關(guān)鍵因素之一。本文將深入探討如何在Kubernetes中為Pod分配CPU和內(nèi)存資源,并提供詳細的示例。 在容器化環(huán)境中,多

    2024年02月04日
    瀏覽(37)
  • K8s(四)Pod資源——pod生命周期、重啟策略、容器鉤子與容器探測

    目錄 Pod生命周期 Pod重啟策略 初始化容器 容器鉤子 容器探測 啟動探測 存活探測 就緒探測 參考資料 Pod 的生命周期 | Kubernetes Init 容器 | Kubernetes Pod的生命周期可以分為以下幾個階段: Pending(等待):在這個階段,Pod被創(chuàng)建,并且正在等待被調(diào)度到一個節(jié)點上運行。此時,

    2024年01月20日
    瀏覽(43)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包