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

kubernetes(k8s)為容器和 Pod 分配內(nèi)存資源

這篇具有很好參考價(jià)值的文章主要介紹了kubernetes(k8s)為容器和 Pod 分配內(nèi)存資源。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

kubernetes(k8s)為容器和 Pod 分配內(nèi)存資源

展示如何將內(nèi)存請(qǐng)求(request)和內(nèi)存限制(limit)分配給一個(gè)容器。 我們保障容器擁有它請(qǐng)求數(shù)量的內(nèi)存,但不允許使用超過(guò)限制數(shù)量的內(nèi)存。

創(chuàng)建新的命名空間

kubectl create namespace mem-example

k8s 容器內(nèi)存設(shè)置,kubernetes,docker,容器

指定內(nèi)存請(qǐng)求和限制

編輯yaml文件

#創(chuàng)建一個(gè)擁有一個(gè)容器的Pod
apiVersion: v1
kind: Pod
metadata:
  name: memory-demo
  namespace: mem-example
spec:
  containers:
  - name: memory-demo-ctr
    image: polinux/stress
#容器會(huì)請(qǐng)求100MiB的內(nèi)存,并且內(nèi)存會(huì)被限制在200MiB以內(nèi)
    resources:
      requests:
        memory: "100Mi"
      limits:
        memory: "200Mi"
#容器啟動(dòng)時(shí)使用壓力測(cè)試工具stress
    command: ["stress"]
# "--vm","1" 產(chǎn)生一個(gè)子進(jìn)程; --vm 2 產(chǎn)生兩個(gè)進(jìn)程
# "--vm-bytes","150M" 每個(gè)進(jìn)程分配150M
# "--vm-hang","1" 指每個(gè)消耗內(nèi)存的進(jìn)程在分配內(nèi)存后轉(zhuǎn)入睡眠1秒,然后釋放內(nèi)存一直重復(fù)執(zhí)行這個(gè)過(guò)程
    args: ["--vm","1","--vm-bytes","150M","--vm-hang","1"]

配置文件的 args 部分提供了容器啟動(dòng)時(shí)的參數(shù)。 “–vm-bytes”, “150M” 參數(shù)告知容器嘗試分配 150 MiB 內(nèi)存。
創(chuàng)建pod

kubectl apply -f memory-request-limit.yaml 

查看Pod是否正常運(yùn)行

kubectl get pod memory-demo -n mem-example

k8s 容器內(nèi)存設(shè)置,kubernetes,docker,容器
查看 Pod 相關(guān)的詳細(xì)信息

kubectl get pod memory-demo -n mem-example -o yaml

輸出結(jié)果顯示:該 Pod 中容器的內(nèi)存請(qǐng)求為 100 MiB,內(nèi)存限制為 200 MiB。
k8s 容器內(nèi)存設(shè)置,kubernetes,docker,容器
運(yùn)行 kubectl top 命令,獲取該 Pod 的指標(biāo)數(shù)據(jù):

如果出現(xiàn)以下問(wèn)題

W0323 15:03:25.034693 2441 top_pod.go:140] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
error: Metrics API not available

解決辦法

下載部署文件

wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server-components.yaml

修改鏡像地址

sed -i 's/registry.k8s.io/metrics-server\/registry.cn-hangzhou.aliyuncs.com\/google_containers/g' metrics-server-components.yaml

如果更改不成功,可手動(dòng)更改或者參照《史上最全操作教程——利用阿里云FREE鏡像倉(cāng)庫(kù)構(gòu)建國(guó)外DOCKER鏡像》這篇文章

在metrics-server-components.yaml文件中添加這一行內(nèi)容“- --kubelet-insecure-tls”這個(gè)配置,就不會(huì)去驗(yàn)證Kubelets提供的服務(wù)證書(shū)的CA。
k8s 容器內(nèi)存設(shè)置,kubernetes,docker,容器

部署metrics-server

kubectl apply -f metrics-server-components.yaml

查看該 Pod 的指標(biāo)數(shù)據(jù)

kubectl top pod memory-demo --namespace=mem-example

k8s 容器內(nèi)存設(shè)置,kubernetes,docker,容器
輸出結(jié)果顯示:Pod 正在使用的內(nèi)存大約為 150 MiB。 這大于 Pod 請(qǐng)求的 100 MiB,但在 Pod 限制的 200 MiB之內(nèi)。

超過(guò)容器限制的內(nèi)存

當(dāng)節(jié)點(diǎn)擁有足夠的可用內(nèi)存時(shí),容器可以使用其請(qǐng)求的內(nèi)存。 但是,容器不允許使用超過(guò)其限制的內(nèi)存。 如果容器分配的內(nèi)存超過(guò)其限制,該容器會(huì)成為被終止的候選容器。 如果容器繼續(xù)消耗超出其限制的內(nèi)存,則終止容器。 如果終止的容器可以被重啟,則 kubelet 會(huì)重新啟動(dòng)它,就像其他任何類型的運(yùn)行時(shí)失敗一樣。

創(chuàng)建一個(gè) Pod,嘗試分配超出其限制的內(nèi)存。 這是一個(gè) Pod 的配置文件,其擁有一個(gè)容器,該容器的內(nèi)存請(qǐng)求為 50 MiB,內(nèi)存限制為 100 MiB

編寫(xiě)memory-request-limit2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: memory-demo-2
  namespace: mem-example
spec:
  containers:
  - name: memory-demo-2-ctr
    image: polinux/stress
    resources:
#請(qǐng)求50MiB
      requests:
        memory: "50Mi"
#限制為100MiB
      limits:
        memory: "100Mi"
#分配250MiB內(nèi)存
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "250M", "--vm-hang", "1"]

創(chuàng)建超出限制的Pod并查看容器相關(guān)信息

#創(chuàng)建Pod
kubectl apply -f memory-request-limit2.yaml

#查看容器相關(guān)信息
kubectl get pod memory-demo-2 --namespace=mem-example
NAME            READY   STATUS      RESTARTS   AGE
memory-demo-2   0/1     OOMKilled   2          26s
此時(shí),容器可能正在運(yùn)行或被殺死。重復(fù)前面的命令,直到容器被殺掉

#查看更詳細(xì)的狀態(tài)信息
kubectl get pod memory-demo-2 --output=yaml --namespace=mem-example

k8s 容器內(nèi)存設(shè)置,kubernetes,docker,容器
k8s 容器內(nèi)存設(shè)置,kubernetes,docker,容器
輸出結(jié)果顯示:由于內(nèi)存溢出(OOM),容器已被殺掉

容器可以被重啟,所以 kubelet 會(huì)重啟它。 多次運(yùn)行下面的命令,可以看到容器在反復(fù)的被殺死和重啟,輸出結(jié)果顯示:容器被殺掉、重啟、再殺掉、再重啟……

kubectl get pod memory-demo-2 --namespace=mem-example

NAME            READY   STATUS             RESTARTS   AGE
memory-demo-2   0/1     CrashLoopBackOff   6          6m19s

查看關(guān)于該 Pod 歷史的詳細(xì)信息

kubectl describe pod memory-demo-2 --namespace=mem-example

Normal   Pulled     8m16s                   kubelet            Successfully pulled image "polinux/stress" in 678.098976ms
Warning  BackOff    3m58s (x25 over 8m58s)  kubelet            Back-off restarting failed container

k8s 容器內(nèi)存設(shè)置,kubernetes,docker,容器

超過(guò)整個(gè)節(jié)點(diǎn)容量的內(nèi)存

內(nèi)存請(qǐng)求和限制是與容器關(guān)聯(lián)的,但將 Pod 視為具有內(nèi)存請(qǐng)求和限制,也是很有用的。 Pod 的內(nèi)存請(qǐng)求是 Pod 中所有容器的內(nèi)存請(qǐng)求之和。 同理,Pod 的內(nèi)存限制是 Pod 中所有容器的內(nèi)存限制之和。

Pod 的調(diào)度基于請(qǐng)求。只有當(dāng)節(jié)點(diǎn)擁有足夠滿足 Pod 內(nèi)存請(qǐng)求的內(nèi)存時(shí),才會(huì)將 Pod 調(diào)度至節(jié)點(diǎn)上運(yùn)行。

將創(chuàng)建一個(gè) Pod,其內(nèi)存請(qǐng)求超過(guò)了你集群中的任意一個(gè)節(jié)點(diǎn)所擁有的內(nèi)存。 這是該 Pod 的配置文件,其擁有一個(gè)請(qǐng)求 1000 GiB 內(nèi)存的容器,這應(yīng)該超過(guò)了你集群中任何節(jié)點(diǎn)的容量。

編寫(xiě)memory-request-limit3.yaml

apiVersion: v1
kind: Pod
metadata:
  name: memory-demo-3
  namespace: mem-example
spec:
  containers:
  - name: memory-demo-3-ctr
    image: polinux/stress
    resources:
      requests:
        memory: "1000Gi"
      limits:
        memory: "1000Gi"
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]

創(chuàng)建Pod容器

kubectl apply -f memory-request-limit3.yaml 

查看容器狀態(tài)

kubectl get pod memory-demo-3 -n mem-example

輸出結(jié)果顯示:Pod 處于 PENDING 狀態(tài)。 這意味著,該 Pod 沒(méi)有被調(diào)度至任何節(jié)點(diǎn)上運(yùn)行,并且它會(huì)無(wú)限期的保持該狀態(tài)

kubectl get pod memory-demo-3 --namespace=mem-example
NAME            READY     STATUS    RESTARTS   AGE
memory-demo-3   0/1       Pending   0          25s

查看關(guān)于 Pod 的詳細(xì)信息,包括事件

kubectl describe pod memory-demo-3 --namespace=mem-example

  Type     Reason            Age    From               Message
  ----     ------            ----   ----               -------
  Warning  FailedScheduling  3m47s  default-scheduler  0/1 nodes are available: 1 Insufficient memory.
  Warning  FailedScheduling  3m46s  default-scheduler  0/1 nodes are available: 1 Insufficient memory.

k8s 容器內(nèi)存設(shè)置,kubernetes,docker,容器

如果不指定內(nèi)存限制

如果你沒(méi)有為一個(gè)容器指定內(nèi)存限制,則自動(dòng)遵循以下情況之一:

容器可無(wú)限制地使用內(nèi)存。容器可以使用其所在節(jié)點(diǎn)所有的可用內(nèi)存, 進(jìn)而可能導(dǎo)致該節(jié)點(diǎn)調(diào)用 OOM Killer。 此外,如果發(fā)生 OOM Kill,沒(méi)有資源限制的容器將被殺掉的可行性更大。

運(yùn)行的容器所在命名空間有默認(rèn)的內(nèi)存限制,那么該容器會(huì)被自動(dòng)分配默認(rèn)限制。 集群管理員可用使用 LimitRange 來(lái)指定默認(rèn)的內(nèi)存限制。

內(nèi)存請(qǐng)求和限制的目的

通過(guò)為集群中運(yùn)行的容器配置內(nèi)存請(qǐng)求和限制,你可以有效利用集群節(jié)點(diǎn)上可用的內(nèi)存資源。 通過(guò)將 Pod 的內(nèi)存請(qǐng)求保持在較低水平,你可以更好地安排 Pod 調(diào)度。 通過(guò)讓內(nèi)存限制大于內(nèi)存請(qǐng)求,你可以完成兩件事:

Pod 可以進(jìn)行一些突發(fā)活動(dòng),從而更好的利用可用內(nèi)存。
Pod 在突發(fā)活動(dòng)期間,可使用的內(nèi)存被限制為合理的數(shù)量。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-615470.html

到了這里,關(guān)于kubernetes(k8s)為容器和 Pod 分配內(nèi)存資源的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • K8s(四)Pod資源——pod生命周期、重啟策略、容器鉤子與容器探測(cè)

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

    2024年01月20日
    瀏覽(42)
  • Kubernetes(k8s)容器編排Pod介紹和使用

    Kubernetes(k8s)容器編排Pod介紹和使用

    Pod是kubernetes中你可以創(chuàng)建和部署的最小也是最簡(jiǎn)的單位,一個(gè)Pod代表著集群中運(yùn)行的一個(gè)進(jìn)程。 Pod有兩個(gè)必須知道的特點(diǎn) 通過(guò)yaml文件或者json描述Pod和其內(nèi)容器的運(yùn)行環(huán)境和期望狀態(tài),例如一個(gè)最簡(jiǎn)單的運(yùn)行nginx應(yīng)用的pod,定義如下 3.1.1 參數(shù)描述 下面簡(jiǎn)要分析一下上面的

    2024年02月08日
    瀏覽(118)
  • 【Kubernetes】k8s中容器之間、pod之間如何進(jìn)行網(wǎng)絡(luò)通信?

    【Kubernetes】k8s中容器之間、pod之間如何進(jìn)行網(wǎng)絡(luò)通信?

    首先來(lái)回顧一下Pod: Pod 是用于構(gòu)建應(yīng)用程序的最小可部署對(duì)象。單個(gè) Pod 代表集群中正在運(yùn)行的工作負(fù)載,并 封裝一個(gè)或多個(gè) Docker 容器、任何所需的存儲(chǔ)以及唯一的 IP 地址 。 集群中每一個(gè) Pod 都會(huì)獲得自己的、 獨(dú)一無(wú)二的 IP 地址。一個(gè)Pod里的一組容器共享相同的IP地址。

    2024年04月28日
    瀏覽(106)
  • K8S 1.27 新特性 Pod 無(wú)需重啟調(diào)整CPU內(nèi)存資源

    如果您已經(jīng)部署了指定 CPU 或 Memory 資源的 Kubernetes pod,可能已經(jīng)注意到更改資源值涉及重新啟動(dòng) pod。直到現(xiàn)在,這一直是運(yùn)行工作負(fù)載的破壞性操作。 在 Kubernetes v1.27 中,添加了一個(gè)新的 alpha 功能,允許用戶在不重啟容器的情況下調(diào)整分配給 Pod 的 CPU 或 memory 資源的大小。

    2024年02月11日
    瀏覽(27)
  • Kubernetes 啟動(dòng)Pod的方法-Pod的調(diào)度算法-Pod間的通信-k8s的控制器-Pod資源控制-發(fā)布Service服務(wù)

    Kubernetes 啟動(dòng)Pod的方法-Pod的調(diào)度算法-Pod間的通信-k8s的控制器-Pod資源控制-發(fā)布Service服務(wù)

    目錄 Pod 參考文檔:Pod | Kubernetes Pod配置文件:simple-pod.yaml 對(duì)master進(jìn)行如下操作 Pod的狀態(tài)有: 參考文檔:(70條消息) Pod生命周期中的狀態(tài)解釋_pod狀態(tài)_鬧玩兒扣眼珠子的博客-CSDN博客 進(jìn)入Pod內(nèi)的nginx容器: 當(dāng)我們創(chuàng)建一個(gè)Pod,其中的步驟是什么?(啟動(dòng)Pob的流程) 大概步驟:

    2024年02月13日
    瀏覽(100)
  • 【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù) II 將pod數(shù)據(jù)傳遞給容器

    【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù) II 將pod數(shù)據(jù)傳遞給容器

    在上一篇文章中,我們學(xué)習(xí)了針對(duì)容器設(shè)置啟動(dòng)時(shí)要執(zhí)行的命令和參數(shù)、定義相互依賴的環(huán)境變量、為容器設(shè)置環(huán)境變量,三種設(shè)置方式,本篇文章,我們將繼續(xù)學(xué)習(xí)數(shù)據(jù)的傳遞。 有兩種方式可以將 Pod 和 Container 字段傳遞給運(yùn)行中的容器: 環(huán)境變量 卷文件 這兩種呈現(xiàn) Pod

    2024年01月25日
    瀏覽(526)
  • k8s(Kubernetes)設(shè)置 pod,Deployment 域名自定義映射ip,hosts 解析 HostAliases

    直接 編輯修改 Deployment 最后內(nèi)容如下,如需保存 按 esc 鍵,最后輸入 :wq 保存退出,容器會(huì)自動(dòng)重新生成新的

    2024年02月12日
    瀏覽(55)
  • K8S 1.27 動(dòng)態(tài)調(diào)整容器CPU和內(nèi)存資源限制,無(wú)需重啟應(yīng)用程序

    如果您在部署Pod時(shí)指定了 CPU 和內(nèi)存資源,更改資源大小需要重新啟動(dòng) Pod。到目前為止,重啟對(duì)于正在運(yùn)行工的作負(fù)載是一種破壞性操作。 Kubernetes 1.27 中的 alpha 功能發(fā)布。其中一項(xiàng)能夠自動(dòng)調(diào)整 Pod 的 CPU 和內(nèi)存限制的大小,只需修補(bǔ)正在運(yùn)行的 Pod 定義即可更改它們,而無(wú)

    2024年02月07日
    瀏覽(29)
  • K8S pod 均勻調(diào)度分配 —— 筑夢(mèng)之路

    ? 在 k8s 中 通過(guò)? kube-scheduler ?組件來(lái)實(shí)現(xiàn) pod 的調(diào)度,所謂調(diào)度,即把需要?jiǎng)?chuàng)建的 pod 放到 合適的 node 上,大概流程為,通過(guò)對(duì)應(yīng)的? 調(diào)度算法 ?和? 調(diào)度策略 ,為待調(diào)度的 pod 列表中的 pod 選擇一個(gè)最合適的 Node,然后目標(biāo)節(jié)點(diǎn)上的? kubelet ?通過(guò) watch 接口監(jiān)聽(tīng)到? kube-sch

    2024年02月16日
    瀏覽(26)
  • Kubernetes配置 Pods 和容器—調(diào)整分配給容器的 CPU 和內(nèi)存資源

    本頁(yè)說(shuō)明如何在不重啟 Pod 或其容器的情況下調(diào)整分配給運(yùn)行中 Pod 容器的 CPU 和內(nèi)存資源。 Kubernetes 節(jié)點(diǎn)會(huì)基于 Pod 的? requests ?為 Pod 分配資源, 并基于 Pod 的容器中指定的? limits ?限制 Pod 的資源使用。 對(duì)于原地調(diào)整 Pod 資源而言: 針對(duì) CPU 和內(nèi)存資源的容器的? requests ?和

    2024年02月13日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包