av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

創(chuàng)新互聯(lián)kubernetes教程:Kubernetes為系統(tǒng)守護(hù)進(jìn)程預(yù)留計(jì)算資源

為系統(tǒng)守護(hù)進(jìn)程預(yù)留計(jì)算資源

Kubernetes 的節(jié)點(diǎn)可以按照 ?Capacity ?調(diào)度。默認(rèn)情況下 pod 能夠使用節(jié)點(diǎn)全部可用容量。 這是個(gè)問題,因?yàn)楣?jié)點(diǎn)自己通常運(yùn)行了不少驅(qū)動(dòng) OS 和 Kubernetes 的系統(tǒng)守護(hù)進(jìn)程。 除非為這些系統(tǒng)守護(hù)進(jìn)程留出資源,否則它們將與 pod 爭(zhēng)奪資源并導(dǎo)致節(jié)點(diǎn)資源短缺問題。

?kubelet ?公開了一個(gè)名為 'Node Allocatable' 的特性,有助于為系統(tǒng)守護(hù)進(jìn)程預(yù)留計(jì)算資源。 Kubernetes 推薦集群管理員按照每個(gè)節(jié)點(diǎn)上的工作負(fù)載密度配置 “Node Allocatable”。

在開始之前

你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:

  • Katacoda
  • 玩轉(zhuǎn) Kubernetes

您的 Kubernetes 服務(wù)器的版本必須為 1.8 或更高版本。 要檢查版本,請(qǐng)輸入 ?kubectl version?。

你的 kubernetes 服務(wù)器版本必須至少是 1.17 版本,才能使用 kubelet 命令行選項(xiàng) ?--reserved-cpus? 設(shè)置 顯式預(yù)留 CPU 列表。

節(jié)點(diǎn)可分配

Kubernetes 節(jié)點(diǎn)上的 'Allocatable' 被定義為 pod 可用計(jì)算資源量。 調(diào)度器不會(huì)超額申請(qǐng) 'Allocatable'。 目前支持 'CPU'、'memory' 和 'ephemeral-storage' 這幾個(gè)參數(shù)。

可分配的節(jié)點(diǎn)暴露為 API 中 ?v1.Node? 對(duì)象的一部分,也是 CLI 中 ?kubectl describe node? 的一部分。

在 ?kubelet ?中,可以為兩類系統(tǒng)守護(hù)進(jìn)程預(yù)留資源。

啟用 QoS 和 Pod 級(jí)別的 cgroups 

為了恰當(dāng)?shù)脑诠?jié)點(diǎn)范圍實(shí)施節(jié)點(diǎn)可分配約束,你必須通過 ?--cgroups-per-qos? 標(biāo)志啟用新的 cgroup 層次結(jié)構(gòu)。這個(gè)標(biāo)志是默認(rèn)啟用的。 啟用后,?kubelet ?將在其管理的 cgroup 層次結(jié)構(gòu)中創(chuàng)建所有終端用戶的 Pod。

配置 cgroup 驅(qū)動(dòng) 

?kubelet ?支持在主機(jī)上使用 cgroup 驅(qū)動(dòng)操作 cgroup 層次結(jié)構(gòu)。 驅(qū)動(dòng)通過 ?--cgroup-driver? 標(biāo)志配置。

支持的參數(shù)值如下:

  • ?cgroupfs ?是默認(rèn)的驅(qū)動(dòng),在主機(jī)上直接操作 cgroup 文件系統(tǒng)以對(duì) cgroup 沙箱進(jìn)行管理。
  • ?systemd ?是可選的驅(qū)動(dòng),使用 init 系統(tǒng)支持的資源的瞬時(shí)切片管理 cgroup 沙箱。

取決于相關(guān)容器運(yùn)行時(shí)的配置,操作員可能需要選擇一個(gè)特定的 cgroup 驅(qū)動(dòng) 來保證系統(tǒng)正常運(yùn)行。 例如,如果操作員使用 ?containerd ?運(yùn)行時(shí)提供的 ?systemd ?cgroup 驅(qū)動(dòng)時(shí), 必須配置 ?kubelet ?使用 ?systemd ?cgroup 驅(qū)動(dòng)。

Kube 預(yù)留值 

  • Kubelet 標(biāo)志: ?--kube-reserved=[cpu=100m][,][memory=100Mi][,][ephemeral-storage=1Gi][,][pid=1000] ?
  • Kubelet 標(biāo)志: ?--kube-reserved-cgroup=?

?kube-reserved? 用來給諸如 ?kubelet?、容器運(yùn)行時(shí)、節(jié)點(diǎn)問題監(jiān)測(cè)器等 kubernetes 系統(tǒng)守護(hù)進(jìn)程記述其資源預(yù)留值。 該配置并非用來給以 Pod 形式運(yùn)行的系統(tǒng)守護(hù)進(jìn)程保留資源。?kube-reserved? 通常是節(jié)點(diǎn)上 ?pod? 密度 的函數(shù)。

除了 ?cpu?,內(nèi)存 和 ?ephemeral-storage? 之外,?pid ?可用來指定為 kubernetes 系統(tǒng)守護(hù)進(jìn)程預(yù)留指定數(shù)量的進(jìn)程 ID。

要選擇性地對(duì) kubernetes 系統(tǒng)守護(hù)進(jìn)程上執(zhí)行 ?kube-reserved? 保護(hù),需要把 kubelet 的 ?--kube-reserved-cgroup? 標(biāo)志的值設(shè)置為 kube 守護(hù)進(jìn)程的父控制組。

推薦將 kubernetes 系統(tǒng)守護(hù)進(jìn)程放置于頂級(jí)控制組之下(例如 systemd 機(jī)器上的 ?runtime.slice?)。 理想情況下每個(gè)系統(tǒng)守護(hù)進(jìn)程都應(yīng)該在其自己的子控制組中運(yùn)行。 請(qǐng)參考 這個(gè)設(shè)計(jì)方案, 進(jìn)一步了解關(guān)于推薦控制組層次結(jié)構(gòu)的細(xì)節(jié)。

請(qǐng)注意,如果 ?--kube-reserved-cgroup? 不存在,Kubelet 將 不會(huì) 創(chuàng)建它。 如果指定了一個(gè)無效的 cgroup,Kubelet 將會(huì)失敗。

系統(tǒng)預(yù)留值 

  • Kubelet 標(biāo)志: ?--system-reserved=[cpu=100m][,][memory=100Mi][,][ephemeral-storage=1Gi][,][pid=1000] ?
  • Kubelet 標(biāo)志: ?--system-reserved-cgroup=?

?system-reserved? 用于為諸如 ?sshd?、?udev ?等系統(tǒng)守護(hù)進(jìn)程記述其資源預(yù)留值。 ?system-reserved? 也應(yīng)該為 ?kernel ?預(yù)留 內(nèi)存,因?yàn)槟壳?nbsp;?kernel ?使用的內(nèi)存并不記在 Kubernetes 的 Pod 上。 同時(shí)還推薦為用戶登錄會(huì)話預(yù)留資源(systemd 體系中的 ?user.slice?)。

除了 ?cpu?,內(nèi)存 和 ?ephemeral-storage? 之外,?pid ?可用來指定為 kubernetes 系統(tǒng)守護(hù)進(jìn)程預(yù)留指定數(shù)量的進(jìn)程 ID。

要想為系統(tǒng)守護(hù)進(jìn)程上可選地實(shí)施 ?system-reserved? 約束,請(qǐng)指定 kubelet 的 ?--system-reserved-cgroup? 標(biāo)志值為 OS 系統(tǒng)守護(hù)進(jìn)程的父級(jí)控制組。

推薦將 OS 系統(tǒng)守護(hù)進(jìn)程放在一個(gè)頂級(jí)控制組之下(例如 systemd 機(jī)器上的 ?system.slice?)。

請(qǐng)注意,如果 ?--system-reserved-cgroup? 不存在,?kubelet ?不會(huì) 創(chuàng)建它。 如果指定了無效的 cgroup,?kubelet ?將會(huì)失敗。

顯式保留的 CPU 列表

FEATURE STATE: Kubernetes v1.17 [stable]

Kubelet 標(biāo)志:?--reserved-cpus=0-3 ?

?reserved-cpus? 旨在為操作系統(tǒng)守護(hù)程序和 kubernetes 系統(tǒng)守護(hù)程序保留一組明確指定編號(hào)的 CPU。?reserved-cpus? 適用于不打算針對(duì) cpuset 資源為操作系統(tǒng)守護(hù)程序和 kubernetes 系統(tǒng)守護(hù)程序定義獨(dú)立的頂級(jí) cgroups 的系統(tǒng)。 如果 Kubelet 沒有 指定參數(shù) ?--system-reserved-cgroup? 和 ?--kube-reserved-cgroup?, 則 ?reserved-cpus? 的設(shè)置將優(yōu)先于 ?--kube-reserved? 和 ?--system-reserved? 選項(xiàng)。

此選項(xiàng)是專門為電信/NFV 用例設(shè)計(jì)的,在這些用例中不受控制的中斷或計(jì)時(shí)器可能會(huì) 影響其工作負(fù)載性能。 你可以使用此選項(xiàng)為系統(tǒng)或 kubernetes 守護(hù)程序以及中斷或計(jì)時(shí)器顯式定義 cpuset, 這樣系統(tǒng)上的其余 CPU 可以專門用于工作負(fù)載,因不受控制的中斷或計(jì)時(shí)器的影響得以 降低。 要將系統(tǒng)守護(hù)程序、kubernetes 守護(hù)程序和中斷或計(jì)時(shí)器移動(dòng)到此選項(xiàng)定義的顯式 cpuset 上,應(yīng)使用 Kubernetes 之外的其他機(jī)制。 例如:在 Centos 系統(tǒng)中,可以使用 tuned 工具集來執(zhí)行此操作。

驅(qū)逐閾值 

Kubelet 標(biāo)志:?--eviction-hard=[memory.available<500Mi] ?

節(jié)點(diǎn)級(jí)別的內(nèi)存壓力將導(dǎo)致系統(tǒng)內(nèi)存不足,這將影響到整個(gè)節(jié)點(diǎn)及其上運(yùn)行的所有 Pod。 節(jié)點(diǎn)可以暫時(shí)離線直到內(nèi)存已經(jīng)回收為止。 為了防止(或減少可能性)系統(tǒng)內(nèi)存不足,kubelet 提供了 資源不足管理。 驅(qū)逐操作只支持 ?memory ?和 ?ephemeral-storage?。 通過 ?--eviction-hard? 標(biāo)志預(yù)留一些內(nèi)存后,當(dāng)節(jié)點(diǎn)上的可用內(nèi)存降至保留值以下時(shí), ?kubelet ?將嘗試驅(qū)逐 Pod。 如果節(jié)點(diǎn)上不存在系統(tǒng)守護(hù)進(jìn)程,Pod 將不能使用超過 ?capacity-eviction-hard? 所 指定的資源量。因此,為驅(qū)逐而預(yù)留的資源對(duì) Pod 是不可用的。

實(shí)施節(jié)點(diǎn)可分配約束 

Kubelet 標(biāo)志:?--enforce-node-allocatable=pods[,][system-reserved][,][kube-reserved] ?

調(diào)度器將 'Allocatable' 視為 Pod 可用的 ?capacity?(資源容量)。

?kubelet ?默認(rèn)對(duì) Pod 執(zhí)行 'Allocatable' 約束。 無論何時(shí),如果所有 Pod 的總用量超過了 'Allocatable',驅(qū)逐 Pod 的措施將被執(zhí)行。 有關(guān)驅(qū)逐策略的更多細(xì)節(jié)可以在 節(jié)點(diǎn)壓力驅(qū)逐頁找到。 可通過設(shè)置 kubelet ?--enforce-node-allocatable? 標(biāo)志值為 ?pods ?控制這個(gè)措施。

可選地,通過在同一標(biāo)志中同時(shí)指定 ?kube-reserved? 和 ?system-reserved? 值, 可以使 ?kubelet ?強(qiáng)制實(shí)施 ?kube-reserved? 和 ?system-reserved? 約束。 請(qǐng)注意,要想執(zhí)行 ?kube-reserved? 或者 ?system-reserved? 約束, 需要對(duì)應(yīng)設(shè)置 ?--kube-reserved-cgroup? 或者 ?--system-reserved-cgroup?。

一般原則 

系統(tǒng)守護(hù)進(jìn)程一般會(huì)被按照類似 Guaranteed pods 一樣對(duì)待。 系統(tǒng)守護(hù)進(jìn)程可以在與其對(duì)應(yīng)的控制組中出現(xiàn)突發(fā)資源用量,這一行為要作為 kubernetes 部署的一部分進(jìn)行管理。 例如,?kubelet ?應(yīng)該有它自己的控制組并和容器運(yùn)行時(shí)共享 ?kube-reserved? 資源。 不過,如果執(zhí)行了 ?kube-reserved? 約束,則 kubelet 不可出現(xiàn)突發(fā)負(fù)載并用光 節(jié)點(diǎn)的所有可用資源。

在執(zhí)行 ?system-reserved? 預(yù)留策略時(shí)請(qǐng)加倍小心,因?yàn)樗赡軐?dǎo)致節(jié)點(diǎn)上的 關(guān)鍵系統(tǒng)服務(wù)出現(xiàn) CPU 資源短缺、因?yàn)閮?nèi)存不足而被終止或者無法在節(jié)點(diǎn)上創(chuàng)建進(jìn)程。 建議只有當(dāng)用戶詳盡地描述了他們的節(jié)點(diǎn)以得出精確的估計(jì)值, 并且對(duì)該組中進(jìn)程因內(nèi)存不足而被殺死時(shí),有足夠的信心將其恢復(fù)時(shí), 才可以強(qiáng)制執(zhí)行 ?system-reserved? 策略。

  • 作為起步,可以先針對(duì) ?pods ?上執(zhí)行 'Allocatable' 約束。
  • 一旦用于追蹤系統(tǒng)守護(hù)進(jìn)程的監(jiān)控和告警的機(jī)制到位,可嘗試基于用量估計(jì)的 方式執(zhí)行 ?kube-reserved? 策略。
  • 隨著時(shí)間推進(jìn),在絕對(duì)必要的時(shí)候可以執(zhí)行 ?system-reserved? 策略。

隨著時(shí)間推進(jìn)和越來越多特性被加入,kube 系統(tǒng)守護(hù)進(jìn)程對(duì)資源的需求可能也會(huì)增加。 以后 kubernetes 項(xiàng)目將嘗試減少對(duì)節(jié)點(diǎn)系統(tǒng)守護(hù)進(jìn)程的利用,但目前這件事的優(yōu)先級(jí) 并不是最高。 所以,將來的發(fā)布版本中 ?Allocatable ?容量是有可能降低的。

示例場(chǎng)景 

這是一個(gè)用于說明節(jié)點(diǎn)可分配(Node Allocatable)計(jì)算方式的示例:

  • 節(jié)點(diǎn)擁有 32Gi memeory,16 CPU 和 100Gi Storage 資源
  • ?--kube-reserved? 被設(shè)置為 cpu=1,memory=2Gi,ephemeral-storage=1Gi
  • ?--system-reserved? 被設(shè)置為 cpu=500m,memory=1Gi,ephemeral-storage=1Gi
  • ?--eviction-hard? 被設(shè)置為 memory.available<500Mi,nodefs.available<10%

在這個(gè)場(chǎng)景下,'Allocatable' 將會(huì)是 14.5 CPUs、28.5Gi 內(nèi)存以及 88Gi 本地存儲(chǔ)。 調(diào)度器保證這個(gè)節(jié)點(diǎn)上的所有 Pod 的內(nèi)存 ?requests ?總量不超過 28.5Gi, 存儲(chǔ)不超過 '88Gi'。 當(dāng) Pod 的內(nèi)存使用總量超過 28.5Gi 或者磁盤使用總量超過 88Gi 時(shí), kubelet 將會(huì)驅(qū)逐它們。 如果節(jié)點(diǎn)上的所有進(jìn)程都盡可能多地使用 CPU,則 Pod 加起來不能使用超過 14.5 CPUs 的資源。

當(dāng)沒有執(zhí)行 ?kube-reserved? 或 ?system-reserved? 策略且系統(tǒng)守護(hù)進(jìn)程 使用量超過其預(yù)留時(shí),如果節(jié)點(diǎn)內(nèi)存用量高于 31.5Gi 或 ?storage ?大于 90Gi, kubelet 將會(huì)驅(qū)逐 Pod。


網(wǎng)站欄目:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes為系統(tǒng)守護(hù)進(jìn)程預(yù)留計(jì)算資源
標(biāo)題來源:http://uogjgqi.cn/article/djejigs.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流