Kubernetes 配置命名空間下Pod配額

2022-06-06 10:03 更新

配置命名空間下 Pod 配額

本文主要介紹如何在命名空間中設(shè)置可運(yùn)行 Pod 總數(shù)的配額。 你可以通過(guò)使用 ResourceQuota 對(duì)象來(lái)配置配額。

在開(kāi)始之前

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

在你的集群里你必須要有創(chuàng)建命名空間的權(quán)限。

創(chuàng)建一個(gè)命名空間

首先創(chuàng)建一個(gè)命名空間,這樣可以將本次操作中創(chuàng)建的資源與集群其他資源隔離開(kāi)來(lái)。

kubectl create namespace quota-pod-example

創(chuàng)建 ResourceQuota

下面是 ResourceQuota 的示例清單:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: pod-demo
spec:
  hard:
    pods: "2"

創(chuàng)建這個(gè) ResourceQuota:

kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod.yaml --namespace=quota-pod-example

查看資源配額的詳細(xì)信息:

kubectl get resourcequota pod-demo --namespace=quota-pod-example --output=yaml

從輸出的信息我們可以看到,該命名空間下 Pod 的配額是 2 個(gè),目前創(chuàng)建的 Pod 數(shù)為 0, 配額使用率為 0。

spec:
  hard:
    pods: "2"
status:
  hard:
    pods: "2"
  used:
    pods: "0"

下面是一個(gè) Deployment 的示例清單:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pod-quota-demo
spec:
  selector:
    matchLabels:
      purpose: quota-demo
  replicas: 3
  template:
    metadata:
      labels:
        purpose: quota-demo
    spec:
      containers:
      - name: pod-quota-demo
        image: nginx

在清單中,?replicas: 3? 告訴 Kubernetes 嘗試創(chuàng)建三個(gè) Pods, 且運(yùn)行相同的應(yīng)用。

創(chuàng)建這個(gè) Deployment:

kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod-deployment.yaml --namespace=quota-pod-example

查看 Deployment 的詳細(xì)信息:

kubectl get deployment pod-quota-demo --namespace=quota-pod-example --output=yaml

從輸出的信息我們可以看到,盡管?chē)L試創(chuàng)建三個(gè) Pod,但是由于配額的限制,只有兩個(gè) Pod 能被成功創(chuàng)建。

spec:
  ...
  replicas: 3
...
status:
  availableReplicas: 2
...
lastUpdateTime: 2021-04-02T20:57:05Z
    message: 'unable to create pods: pods "pod-quota-demo-1650323038-" is forbidden:
      exceeded quota: pod-demo, requested: pods=1, used: pods=2, limited: pods=2'

資源的選擇

在此任務(wù)中,你定義了一個(gè)限制 Pod 總數(shù)的 ResourceQuota, 你也可以限制其他類(lèi)型對(duì)象的總數(shù)。例如, 你可以限制在一個(gè)命名空間中可以創(chuàng)建的 CronJobs 的數(shù)量。

清理

刪除命名空間:

kubectl delete namespace quota-pod-example


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)