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

【云原生】kubernetes中容器的資源限制

這篇具有很好參考價值的文章主要介紹了【云原生】kubernetes中容器的資源限制。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【云原生】kubernetes中容器的資源限制,云原生,云原生,docker,容器

目錄

1 metrics-server

2 指定內(nèi)存請求和限制

3 指定 CPU 請求和限制


資源限制

在k8s中對于容器資源限制主要分為以下兩類:

  • 內(nèi)存資源限制: 內(nèi)存請求(request)和內(nèi)存限制(limit)分配給一個容器。 我們保障容器擁有它請求數(shù)量的內(nèi)存,但不允許使用超過限制數(shù)量的內(nèi)存。

    • 官網(wǎng)參考地址: 為容器和 Pod 分配內(nèi)存資源 | Kubernetes

  • CPU 資源限制: 為容器設(shè)置 CPU request(請求) 和 CPU limit(限制)。 容器使用的 CPU 不能超過所配置的限制。 如果系統(tǒng)有空閑的 CPU 時間,則可以保證給容器分配其所請求數(shù)量的 CPU 資源。

    • 官網(wǎng)參考地址: 為容器和 Pods 分配 CPU 資源 | Kubernetes

請求 request memory cpu :可以使用的基礎(chǔ)資源 100M

限制 limit memory cpu :可以使用的最大資源 200M 超過最大資源之后容器會被 kill , OOM 錯誤

1 metrics-server

官網(wǎng)地址: GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines.

Kubernetes Metrics Server (Kubernetes指標(biāo)服務(wù)器),它是一個可擴展的、高效的容器資源度量源。Metrics Server 用于監(jiān)控每個 Node 和 Pod 的負(fù)載(用于Kubernetes內(nèi)置自動擴縮管道)。Metrics Server 從Kubelets 收集資源指標(biāo),并通過 Metrics API 在Kubernetes apiserver中公開,供 Horizontal Pod Autoscaler 和 Vertical Pod Autoscaler 使用。Metrics API 也可以通過 kubectl top 訪問,使其更容易調(diào)試自動擴縮管道。

  • 查看 metrics-server(或者其他資源指標(biāo) API metrics.k8s.io 服務(wù)提供者)是否正在運行, 請鍵入以下命令:

kubectl get apiservices
  • 如果資源指標(biāo) API 可用,則會輸出將包含一個對 metrics.k8s.io 的引用。

NAME
v1beta1.metrics.k8s.io
  • 安裝 metrics-server

# components.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
 ?  k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
 ?  k8s-app: metrics-server
 ?  rbac.authorization.k8s.io/aggregate-to-admin: "true"
 ?  rbac.authorization.k8s.io/aggregate-to-edit: "true"
 ?  rbac.authorization.k8s.io/aggregate-to-view: "true"
  name: system:aggregated-metrics-reader
rules:
  - apiGroups:
 ? ?  - metrics.k8s.io
 ?  resources:
 ? ?  - pods
 ? ?  - nodes
 ?  verbs:
 ? ?  - get
 ? ?  - list
 ? ?  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
 ?  k8s-app: metrics-server
  name: system:metrics-server
rules:
  - apiGroups:
 ? ?  - ""
 ?  resources:
 ? ?  - nodes/metrics
 ?  verbs:
 ? ?  - get
  - apiGroups:
 ? ?  - ""
 ?  resources:
 ? ?  - pods
 ? ?  - nodes
 ?  verbs:
 ? ?  - get
 ? ?  - list
 ? ?  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
 ?  k8s-app: metrics-server
  name: metrics-server-auth-reader
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: extension-apiserver-authentication-reader
subjects:
  - kind: ServiceAccount
 ?  name: metrics-server
 ?  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
 ?  k8s-app: metrics-server
  name: metrics-server:system:auth-delegator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:auth-delegator
subjects:
  - kind: ServiceAccount
 ?  name: metrics-server
 ?  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
 ?  k8s-app: metrics-server
  name: system:metrics-server
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:metrics-server
subjects:
  - kind: ServiceAccount
 ?  name: metrics-server
 ?  namespace: kube-system
---
apiVersion: v1
kind: Service
metadata:
  labels:
 ?  k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  ports:
 ?  - name: https
 ? ?  port: 443
 ? ?  protocol: TCP
 ? ?  targetPort: https
  selector:
 ?  k8s-app: metrics-server
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
 ?  k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  selector:
 ?  matchLabels:
 ? ?  k8s-app: metrics-server
  strategy:
 ?  rollingUpdate:
 ? ?  maxUnavailable: 0
  template:
 ?  metadata:
 ? ?  labels:
 ? ? ?  k8s-app: metrics-server
 ?  spec:
 ? ?  containers:
 ? ? ?  - args:
 ? ? ? ? ?  - --cert-dir=/tmp
 ? ? ? ? ?  - --secure-port=4443
 ? ? ? ? ?  - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
 ? ? ? ? ?  - --kubelet-use-node-status-port
 ? ? ? ? ?  - --metric-resolution=15s
 ? ? ? ? ?  - --kubelet-insecure-tls #修改去掉證書驗證
 ? ? ? ?  image: dyrnq/metrics-server:v0.6.2 #修改官方無法下載
 ? ? ? ?  imagePullPolicy: IfNotPresent
 ? ? ? ?  livenessProbe:
 ? ? ? ? ?  failureThreshold: 3
 ? ? ? ? ?  httpGet:
 ? ? ? ? ? ?  path: /livez
 ? ? ? ? ? ?  port: https
 ? ? ? ? ? ?  scheme: HTTPS
 ? ? ? ? ?  periodSeconds: 10
 ? ? ? ?  name: metrics-server
 ? ? ? ?  ports:
 ? ? ? ? ?  - containerPort: 4443
 ? ? ? ? ? ?  name: https
 ? ? ? ? ? ?  protocol: TCP
 ? ? ? ?  readinessProbe:
 ? ? ? ? ?  failureThreshold: 3
 ? ? ? ? ?  httpGet:
 ? ? ? ? ? ?  path: /readyz
 ? ? ? ? ? ?  port: https
 ? ? ? ? ? ?  scheme: HTTPS
 ? ? ? ? ?  initialDelaySeconds: 20
 ? ? ? ? ?  periodSeconds: 10
 ? ? ? ?  resources:
 ? ? ? ? ?  requests:
 ? ? ? ? ? ?  cpu: 100m
 ? ? ? ? ? ?  memory: 200Mi
 ? ? ? ?  securityContext:
 ? ? ? ? ?  allowPrivilegeEscalation: false
 ? ? ? ? ?  readOnlyRootFilesystem: true
 ? ? ? ? ?  runAsNonRoot: true
 ? ? ? ? ?  runAsUser: 1000
 ? ? ? ?  volumeMounts:
 ? ? ? ? ?  - mountPath: /tmp
 ? ? ? ? ? ?  name: tmp-dir
 ? ?  hostNetwork: true ?#必須指定這個才行
 ? ?  nodeSelector:
 ? ? ?  kubernetes.io/os: linux
 ? ?  priorityClassName: system-cluster-critical
 ? ?  serviceAccountName: metrics-server
 ? ?  volumes:
 ? ? ?  - emptyDir: {}
 ? ? ? ?  name: tmp-dir
---
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  labels:
 ?  k8s-app: metrics-server
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
 ?  name: metrics-server
 ?  namespace: kube-system
  version: v1beta1
  versionPriority: 100
$ kubectl appply -f components.yaml
2 指定內(nèi)存請求和限制

官網(wǎng): 為容器和 Pod 分配內(nèi)存資源 | Kubernetes

為容器指定內(nèi)存請求,請在容器資源清單中包含 resources:requests 字段。 同理,要指定內(nèi)存限制,請包含 resources:limits。

# nginx-memory-demo.yaml
#內(nèi)存資源的基本單位是字節(jié)(byte)。你可以使用這些后綴之一,將內(nèi)存表示為 純整數(shù)或定點整數(shù):E、P、T、G、M、K、Ei、Pi、Ti、Gi、Mi、Ki。 例如,下面是一些近似相同的值:128974848, 129e6, 129M, 123Mi
apiVersion: v1
kind: Pod
metadata:
  name: nginx-memory-demo
spec:
  containers:
  - name: nginx-memory-demo
 ?  image: nginx:1.19
 ?  resources:
 ? ?  requests:
 ? ? ?  memory: "100Mi" 
 ? ?  limits:
 ? ? ?  memory: "200Mi"
  • 查看容器內(nèi)存使用情況

$ kubectl get pod nginx-memory-demo --output=yaml
  • 查看容器正在使用內(nèi)存情況

$ kubectl top pod nginx-memory-demo 
  • 內(nèi)存請求和限制的目的

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

    • Pod 可以進行一些突發(fā)活動,從而更好的利用可用內(nèi)存。

    • Pod 在突發(fā)活動期間,可使用的內(nèi)存被限制為合理的數(shù)量。

  • 沒有指定內(nèi)存限制

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

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

    • 運行的容器所在命名空間有默認(rèn)的內(nèi)存限制,那么該容器會被自動分配默認(rèn)限制。

3 指定 CPU 請求和限制

官網(wǎng): 為容器和 Pods 分配 CPU 資源 | Kubernetes

為容器指定 CPU 請求,請在容器資源清單中包含 resources: requests 字段。 要指定 CPU 限制,請包含 resources:limits

# nginx-cpu-demo.yaml
#CPU 資源以 CPU 單位度量。小數(shù)值是可以使用的。一個請求 0.5 CPU 的容器保證會獲得請求 1 個 CPU 的容器的 CPU 的一半。 你可以使用后綴 m 表示毫。例如 100m CPU、100 milliCPU 和 0.1 CPU 都相同。 CPU 請求只能使用絕對數(shù)量,而不是相對數(shù)量。0.1 在單核、雙核或 48 核計算機上的 CPU 數(shù)量值是一樣的。
apiVersion: v1
kind: Pod
metadata:
  name: nginx-cpu-demo
spec:
  containers:
  - name: nginx-cpu-demo
 ?  image: nginx:1.19
 ?  resources:
 ? ?  limits:
 ? ? ?  cpu: "1"
 ? ?  requests:
 ? ? ?  cpu: "0.5"
  • 顯示 pod 詳細(xì)信息

$ kubectl get pod nginx-cpu-demo --output=yaml 
  • 顯示 pod 運行指標(biāo)

$ kubectl top pod nginx-cpu-demo
  • CPU 請求和限制的初衷

    通過配置你的集群中運行的容器的 CPU 請求和限制,你可以有效利用集群上可用的 CPU 資源。 通過將 Pod CPU 請求保持在較低水平,可以使 Pod 更有機會被調(diào)度。 通過使 CPU 限制大于 CPU 請求,你可以完成兩件事:

    • Pod 可能會有突發(fā)性的活動,它可以利用碰巧可用的 CPU 資源。

    • Pod 在突發(fā)負(fù)載期間可以使用的 CPU 資源數(shù)量仍被限制為合理的數(shù)量。

  • 如果不指定 CPU 限制

    如果你沒有為容器指定 CPU 限制,則會發(fā)生以下情況之一:

    • 容器在可以使用的 CPU 資源上沒有上限。因而可以使用所在節(jié)點上所有的可用 CPU 資源。

    • 容器在具有默認(rèn) CPU 限制的名字空間中運行,系統(tǒng)會自動為容器設(shè)置默認(rèn)限制。

  • 如果你設(shè)置了 CPU 限制但未設(shè)置 CPU 請求

如果你為容器指定了 CPU 限制值但未為其設(shè)置 CPU 請求,Kubernetes 會自動為其 設(shè)置與 CPU 限制相同的 CPU 請求值。類似的,如果容器設(shè)置了內(nèi)存限制值但未設(shè)置 內(nèi)存請求值,Kubernetes 也會為其設(shè)置與內(nèi)存限制值相同的內(nèi)存請求。文章來源地址http://www.zghlxwxcb.cn/news/detail-632857.html

到了這里,關(guān)于【云原生】kubernetes中容器的資源限制的文章就介紹完了。如果您還想了解更多內(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)文章

  • Kubernetes配置 Pods 和容器—將 Docker Compose 文件轉(zhuǎn)換為 Kubernetes 資源

    你必須擁有一個 Kubernetes 的集群,同時你必須配置 kubectl 命令行工具與你的集群通信。 建議在至少有兩個不作為控制平面主機的節(jié)點的集群上運行本教程。 我們有很多種方式安裝 Kompose。首選方式是從最新的 GitHub 發(fā)布頁面下載二進制文件。 Kompose 通過 GitHub?安裝 只需幾步,

    2024年02月12日
    瀏覽(57)
  • 【kubernetes系列】Kubernetes之資源限制ResourceQuota

    當(dāng)多個用戶或團隊共享具有固定節(jié)點數(shù)目的集群時,人們會擔(dān)心有人使用超過其基于公平原則所分配到的資源量。我們可以通過ResourceQuota來解決這個問題,對每個namespace的資源消耗總量提供限制。它可以限制命名空間中某種類型的對象的總數(shù)目上限,也可以限制命名空間中的

    2024年02月16日
    瀏覽(13)
  • kubernetes pod 資源限制 探針

    kubernetes pod 資源限制 探針

    當(dāng)定義 Pod 時可以選擇性地為每個容器設(shè)定所需要的資源數(shù)量。 最常見的可設(shè)定資源是 CPU 和內(nèi)存大小,以及其他類型的資源。 當(dāng)為 Pod 中的容器指定了 request 資源時,代表容器運行所需的最小資源量,調(diào)度器就使用該信息來決定將 Pod 調(diào)度到哪個節(jié)點上。當(dāng)還為容器指定了

    2024年02月13日
    瀏覽(18)
  • 19、Kubernetes核心技術(shù) - 資源限制

    19、Kubernetes核心技術(shù) - 資源限制

    目錄 一、概述 二、Kubernetes 中的資源單位 2.1、CPU資源單位 2.2、內(nèi)存資源單位 三、Pod資源限制 四、namespace資源限制 4.1、為命名空間配置內(nèi)存和 CPU 配額 4.2、為命名空間配置默認(rèn)的內(nèi)存請求和限制 4.3、為命名空間配置默認(rèn)的CPU請求和限制 五、超過容器限制的內(nèi)存 當(dāng)定義 Po

    2024年01月20日
    瀏覽(19)
  • Kubernetes 對Pod的資源限制詳解;

    limits 限制容器最高使用多少資源: resources.limits.cpu resources.limits.memory request 是容器使用的最小資源申請,也就是說這個容器里的服務(wù)至少給它多少資源才能運行,作為容器調(diào)度時資源分配的依據(jù):(對于k8s來說是預(yù)留,主要用作于k8s對node資源的一個規(guī)劃和分配) requests一般小于

    2024年02月07日
    瀏覽(14)
  • 云原生Kubernetes:K8S集群實現(xiàn)容器運行時遷移(docker → containerd) 與 版本升級(v1.23.14 → v1.24.1)

    云原生Kubernetes:K8S集群實現(xiàn)容器運行時遷移(docker → containerd) 與 版本升級(v1.23.14 → v1.24.1)

    目錄 一、理論 1.K8S集群升級 2.環(huán)境 3.升級策略 4.master1節(jié)點遷移容器運行時(docker → containerd)? 5.master2節(jié)點遷移容器運行時(docker → containerd)? 6.node1節(jié)點容器運行時遷移(docker → containerd)? 7.升級集群計劃(v1.23.14 →?v1.24.1) 8.升級master1節(jié)點版本(v1.24.1) 9.升級master2節(jié)點版本

    2024年02月03日
    瀏覽(38)
  • 云原生k8s---資源限制、探針

    云原生k8s---資源限制、探針

    目錄 一:資源限制 1、資源限制原因 2、Pod 和 容器 的資源請求和限制 3、CPU 資源單位 4、內(nèi)存 資源單位? 5、事例 (1)事例一 (2)事例二 ?二:重啟策略 1、重啟策略模式 2、事例 三:探針 1、探針簡介 2、探針的三種規(guī)則 3、Probe支持三種檢查方法 4、事例 (1)exec方式 (

    2024年02月13日
    瀏覽(25)
  • CKA 10_Kubernetes工作負(fù)載與調(diào)度 資源調(diào)度 資源限制 LimitRanger 資源配額 ResourceQuota

    官方文檔: 概念 | 策略 | 限制范圍 官方文檔: 概念 | 策略 | 資源配額 默認(rèn)情況下, Kubernetes 集群上的容器運行使用的計算資源沒有限制。 使用資源配額,集群管理員可以以名字空間為單位,限制其資源的使用與創(chuàng)建。 在命名空間中,一個 Pod 或 Container 最多能夠使用命名空

    2024年02月08日
    瀏覽(18)
  • 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日
    瀏覽(102)
  • Kubernetes/k8s之HPA,命名空間資源限制

    Kubernetes/k8s之HPA,命名空間資源限制

    Horizontal Pod Autoscaling:po的水平自動伸縮 這是k8s自帶的模塊 pod占用cpu比例達(dá)到一定的閥值,會觸發(fā)伸縮機制。 根據(jù)cpu的閥值觸發(fā)伸縮機制 replication controller 副本控制器 控制pod的副本數(shù) deployment controller 節(jié)點控制器 部署pod hpa控制副本的數(shù)量,以及如何控制部署pod 1、hpa基于kub

    2024年01月24日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包