簡體   English   中英

Kubernetes 整個命名空間的默認 QoS

[英]Kubernetes default QoS for whole namespace

是否有任何方法可以為給定命名空間中的所有節點設置默認QoS? 或者只是在命名空間級別而不是 pod 級別設置 QoS。 我的意思是每個現有和每個新創建的 pod 都將具有給定命名空間的默認設置的情況。

例如。 命名空間kube-systemsuper-important所有 pod 都獲得了“保證”的 QoS 級別。

我想以這樣的方式設置 QoS,如果kube-system (或其他重要的組/命名空間)的資源 pod 出現任何問題,它們會被最后刪除,晚於不太重要的。

PS 我得到了關於准入控制器的建議,但我沒有看到與 QoS 的相關性。

這是可能的。 關於QoS的一些基本信息:

Kubernetes 使用 QoS 類來決定調度和驅逐 Pod。

要為 Pod 提供保證的 QoS 等級:

  • Pod 中的每個 Container 都必須有內存限制和內存請求,並且它們必須相同。
  • Pod 中的每個 Container 都必須有 CPU 限制和 CPU 請求,並且它們必須相同。

如果滿足以下條件,Pod 將被賦予 Burstable QoS 等級:

  • Pod 不符合 QoS 等級保證的標准。 Pod 中至少有一個 Container 有內存或 CPU 請求。

要為 Pod 提供 BestEffort 的 QoS 等級:

  • Pod 中的容器不得有任何內存或 CPU 限制或請求。

以下是如何為命名空間 qos-test 中的所有 pod 設置保證 QoS 的示例。

讓我們創建一個命名空間 qos-test:

$ kubectl create namespace qos-test

接下來,讓我們創建一個 LimitRange 對象 YAML 文件(CPU 和內存應該存在,限制和請求應該相同):

$ cat <<EOF > limitRange.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-gua
spec:
  limits:
  - default:
      cpu: 100m
      memory: 512Mi
    defaultRequest:
      cpu: 100m
      memory: 256Mi
    type: Container
EOF

然后讓我們將其應用到命名空間 qos-test 中:

$ kubectl create -f limitRange.yaml --namespace=qos-test

現在,讓我們創建一個 Pod(Pod 規范中不得存在 CPU 或內存請求和限制):

$ cat <<EOF > default-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: default-pod
spec:
  containers:
  - name: default-ctr
    image: nginx
EOF

$ kubectl create -f default-pod.yaml --namespace=qos-test

最后,讓我們檢查一下我們得到了什么:

$ kubectl get namespaces
...
$ kubectl get limitrange --all-namespaces -o wide
...
$ kubectl get limitrange -o yaml -n qos-test
...
$ kubectl get pod default-pod -o yaml -n qos-test

apiVersion: v1
kind: Pod
metadata:
  ...
  name: default-pod
  namespace: qos-test
  ...
spec:
  containers:
  - image: nginx
    imagePullPolicy: Always
    name: default-ctr
    resources:
      limits:
        cpu: 100m
        memory: 256Mi
      requests:
        cpu: 100m
        memory: 256Mi
    ...
status:
  ...
  hostIP: 10.0.2.15
  phase: Running
  podIP: 172.17.0.10
  qosClass: Guaranteed
  ...

如您所見, default-pod獲得了qosClass: Guaranteed

要創建具有不同 QoS 的 pod,請參閱文檔的這一部分:

您可以在本文中找到有關為命名空間配置默認限制的更多詳細信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM