0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于K8S的服務(wù)質(zhì)量QoS你知道多少?

馬哥Linux運維 ? 來源:ZHDYA ? 2023-05-22 10:21 ? 次閱讀

一、K8S中的應(yīng)用服務(wù)質(zhì)量(QoS)

服務(wù)質(zhì)量(QoS)類是Kubernetes的概念,它確定Pod的調(diào)度和驅(qū)逐優(yōu)先級

Kubelet使用它來管理驅(qū)逐pod的順序,以及使用高級CPU管理策略允許更復(fù)雜的pod調(diào)度決策。

QoS由Kubernetes本身分配給Pod。但是,DevOps可以通過處理Pod內(nèi)各個容器的資源請求和限制來控制分配給容器的QoS類。

二、QoS級別

Guaranteed:POD中所有容器(包含初始化容器)都必須統(tǒng)一設(shè)置了limits,并且設(shè)置參數(shù)都一致;

Burstable:POD中有容器設(shè)置了 內(nèi)存 或 CPU request;

BestEffort:POD中的所有容器都沒有指定CPU和內(nèi)存的requests和limits;

2.1、Guaranteed

對于 QoS 類為 Guaranteed 的 Pod:

Pod 中的每個容器,包含初始化容器,必須指定內(nèi)存 請求和 內(nèi)存 限制,并且兩者要相等。

Pod 中的每個容器,包含初始化容器,必須指定 CPU 請求和 CPU 限制,并且兩者要相等。

apiVersion: v1
kind: Pod
metadata:
name: qos-demo
spec:
containers:
- name: qos-demo
 image: nginx
 resources:
  limits:
   memory: "500Mi"
   cpu: "700m"
  requests:
   memory: "500Mi"
   cpu: "700m"

驗證:

# kubectl describe po qos-demo
···
QoS Class:          Guaranteed

注意點:

如果容器指定了自己的內(nèi)存limits,但沒有指定內(nèi)存requests,Kubernetes 會自動為它指定與內(nèi)存limits匹配的內(nèi)存requests。同樣,如果容器指定了自己的 CPU limits,但沒有指定 CPU requests,Kubernetes 會自動為它指定與 CPU limits匹配的 CPU requests;

2.2、Burstable

如果滿足下面條件,將會指定 Pod 的 QoS 類為 Burstable:

Pod 不符合 Guaranteed QoS 類的標準;

Pod 中至少一個容器具有內(nèi)存 CPU requests;

apiVersion: v1
kind: Pod
metadata:
name: qos-demo2
spec:
containers:
- name: qos-demo2
 image: nginx
 resources:
  limits:
   memory: "500Mi"
  requests:
   memory: "200Mi"

驗證:

# kubectl describe po qos-demo2
···
QoS Class:          Burstable

2.3、BestEffort

對于 QoS 類為 BestEffort 的 Pod,Pod 中的容器必須沒有設(shè)置內(nèi)存和 CPU 限制或請求。

apiVersion: v1
kind: Pod
metadata:
name: qos-demo3
spec:
containers:
- name: qos-demo3
 image: nginx

三、QoS優(yōu)先級

3種QoS優(yōu)先級從有低到高(從左向右):

BestEffort pods -> Burstable pods -> Guaranteed pods

四、驅(qū)逐原理

可壓縮資源:CPU

在壓縮資源部分已經(jīng)提到CPU屬于可壓縮資源,當pod使用超過設(shè)置的limits值,pod中進程使用cpu會被限制,但不會被kill。

不可壓縮資源:內(nèi)存

4.1、節(jié)點OOM時如何處理Guaranteed, Burstable 和 BestEffort Pods?

如果節(jié)點在Kubelet可以回收之前耗盡了內(nèi)存,即節(jié)點發(fā)生了oom,則oom_killer會根據(jù)其oom_score終止容器。

對于 “Guaranteed” Pod中的容器,oom_score_adj 為 “ -998”;

對于 “BestEffort” Pod中的容器,其為“ 1000”;

Burstable Pod中的容器,值為“ min(max(2,1000-(1000 * memoryRequestBytes)/ machineMemoryCapacityBytes),999” )”。

oom_killer首先終止QoS等級最低,且超過請求資源最多的容器。這意味著會優(yōu)先從Burstable中選擇占用資源請求過多的容器進行驅(qū)逐;

五、最佳實踐

1、按照應(yīng)用類型進行分類:核心應(yīng)用(core)/ 常規(guī)應(yīng)用(nomarl)/ 附加應(yīng)用(extral)

2、核心應(yīng)用:Guaranteed / 常規(guī)應(yīng)用:Burstable / 附加應(yīng)用:BestEffort

3、集群節(jié)點分為:核心應(yīng)用節(jié)點 / 常規(guī)應(yīng)用節(jié)點 / 附加應(yīng)用節(jié)點

4、調(diào)度策略:

核心應(yīng)用:可以采用nodeAffinity的prefer調(diào)度策略調(diào)度到核心節(jié)點;

常規(guī)應(yīng)用:可以采用nodeAffinity的硬親和調(diào)度策略調(diào)度到常規(guī)節(jié)點;

附加應(yīng)用:可以采用nodeAffinity的硬親和調(diào)度策略調(diào)度到附加節(jié)點;





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10769

    瀏覽量

    210425
  • QoS
    QoS
    +關(guān)注

    關(guān)注

    1

    文章

    136

    瀏覽量

    44712

原文標題:關(guān)于K8S的服務(wù)質(zhì)量QoS你知道多少?

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解決方案與選型對比

    。Logtail保證多次加載同一容器配置的冪等性??偨Y(jié)阿里云日志服務(wù)提供的解決方案完美地解決了k8s上日志采集難的問題,從之前需要多個軟件、幾十個部署流程精簡到1款軟件、3個操作即可輕松上云,讓廣大用戶真正體驗到一個字:爽,從此日志運維人員的生活
    發(fā)表于 02-28 12:49

    服務(wù)質(zhì)量QoS協(xié)議的研究與分析

    本文主要介紹了服務(wù)質(zhì)量QoS)的協(xié)議和結(jié)構(gòu),對其原理和功能做了一定的分析,涉及了QoS 的四種應(yīng)用方法和模型,分析Internet/RSVP、區(qū)分服務(wù)Differ、MPLS、SBM
    發(fā)表于 09-07 15:50 ?8次下載

    如何利用K8S全面擁抱微服務(wù)架構(gòu)?

    K8S是第一個將“一切以服務(wù)為中心,一切圍繞服務(wù)運轉(zhuǎn)”作為指導(dǎo)思想的創(chuàng)新型產(chǎn)品,它的功能和架構(gòu)設(shè)計自始至終都遵循了這一指導(dǎo)思想,構(gòu)建在K8S上的系統(tǒng)不僅可以獨立運行在物理機、虛擬機集群
    的頭像 發(fā)表于 10-08 15:59 ?2.7w次閱讀

    OpenStack與K8s結(jié)合的兩種方案的詳細介紹和比較

    OpenStack與K8S結(jié)合主要有兩種方案。一是K8S部署在OpenStack平臺之上,二是K8S和OpenStack組件集成。
    的頭像 發(fā)表于 10-14 09:38 ?2.7w次閱讀

    關(guān)于K8s最詳細的解析

    一個目標:容器操作;兩地三中心;四層服務(wù)發(fā)現(xiàn);五種Pod共享資源;六個CNI常用插件;七層負載均衡;八種隔離維度;九個網(wǎng)絡(luò)模型原則;十類IP地址;百級產(chǎn)品線;千級物理機;萬級容器;相如無億,K8s有億:億級日服務(wù)人次。
    的頭像 發(fā)表于 04-08 13:55 ?7159次閱讀
    <b class='flag-5'>關(guān)于</b><b class='flag-5'>K8s</b>最詳細的解析

    Docker不香嗎為什么還要用K8s

    。 關(guān)于 K8s 的基本概念我們將會圍繞如下七點展開: Docker 的管理痛點 什么是 K8s? 云架構(gòu) 云原生 K8s 架構(gòu)原理 K8s
    的頭像 發(fā)表于 06-02 11:56 ?3370次閱讀

    簡單說明k8s和Docker之間的關(guān)系

    ,但最近發(fā)現(xiàn)k8s概念較多,命令也有些不夠用了,故想借此機會寫點東西,更全面認識并使用k8s。本篇文章目的:讓更全面了解k8s概念,以及學(xué)到在工作中常用的操作。整體更偏向于原理和應(yīng)用
    的頭像 發(fā)表于 06-24 15:48 ?3302次閱讀

    K8S集群服務(wù)訪問失敗怎么辦 K8S故障處理集錦

    問題1:K8S集群服務(wù)訪問失??? ? ? 原因分析:證書不能被識別,其原因為:自定義證書,過期等。 解決方法:更新證書即可。 問題2:K8S集群服務(wù)訪問失??? curl: (7) Fa
    的頭像 發(fā)表于 09-01 11:11 ?1.6w次閱讀
    <b class='flag-5'>K8S</b>集群<b class='flag-5'>服務(wù)</b>訪問失敗怎么辦 <b class='flag-5'>K8S</b>故障處理集錦

    K8S(kubernetes)學(xué)習(xí)指南

    K8S(kubernetes)學(xué)習(xí)指南
    發(fā)表于 06-29 14:14 ?0次下載

    切換k8s上下文有多快

    use-context 命令就會很低效。 今天介紹3個工具會讓你在多k8s集群環(huán)境中工作的很輕松。我將從以下幾個方面來評估工具實用性: 速度 如果有多個k8s集群可選擇,切換
    的頭像 發(fā)表于 05-29 15:26 ?686次閱讀
    切換<b class='flag-5'>k8s</b>上下文有多快

    服務(wù)質(zhì)量QoS(Quality of Service)在網(wǎng)絡(luò)中的重要性

    QoS(Quality of Service)即服務(wù)質(zhì)量,在網(wǎng)絡(luò)業(yè)務(wù)中可以通過保證傳輸?shù)膸?、降低傳輸時延、降低數(shù)據(jù)丟包率以及時延抖動等措施來提高服務(wù)質(zhì)量。QoS是一套用于管理和提高網(wǎng)
    的頭像 發(fā)表于 03-16 09:24 ?1449次閱讀
    <b class='flag-5'>服務(wù)質(zhì)量</b><b class='flag-5'>QoS</b>(Quality of Service)在網(wǎng)絡(luò)中的重要性

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    k8s是什么意思? kubernetes簡稱K8s,是一個開源的,用于管理云平臺中多個主機上的容器化的應(yīng)用,Kubernetes的目標是讓部署容器化的應(yīng)用簡單并且高效(powerful
    發(fā)表于 07-19 13:14 ?1068次閱讀

    什么是K3sK8sK3sK8s有什么區(qū)別?

    Kubernetes,通常縮寫為 K8s,是領(lǐng)先的容器編排工具。該開源項目最初由 Google 開發(fā),幫助塑造了現(xiàn)代編排的定義。該系統(tǒng)包括了部署和運行容器化系統(tǒng)所需的一切。
    的頭像 發(fā)表于 08-03 10:53 ?6934次閱讀

    k8s生態(tài)鏈包含哪些技術(shù)

    1. Apache APISIX Ingress 定義 ? 在 K8s 生態(tài)中,Ingress 作為表示 K8s 流量入口的一種資源,想要讓其生效,就需要有一個 Ingress Controller
    的頭像 發(fā)表于 08-07 10:56 ?1110次閱讀
    <b class='flag-5'>k8s</b>生態(tài)鏈包含哪些技術(shù)

    什么是網(wǎng)絡(luò)中的服務(wù)質(zhì)量 (QoS),其相關(guān)技術(shù)和關(guān)鍵指標有哪些?

    QoS(Quality of Service,服務(wù)質(zhì)量)指一個網(wǎng)絡(luò)能夠利用各種基礎(chǔ)技術(shù),為指定的網(wǎng)絡(luò)通信提供更好的服務(wù)能力,是網(wǎng)絡(luò)的一種安全機制,是用來解決網(wǎng)絡(luò)延遲和阻塞等問題的一種技術(shù)。Qo
    的頭像 發(fā)表于 08-30 21:53 ?1074次閱讀
    什么是網(wǎng)絡(luò)中的<b class='flag-5'>服務(wù)質(zhì)量</b> (<b class='flag-5'>QoS</b>),其相關(guān)技術(shù)和關(guān)鍵指標有哪些?