繁体   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