W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本頁(yè)介紹怎樣配置 Pod 讓其獲得特定的服務(wù)質(zhì)量(QoS)類。Kubernetes 使用 QoS 類來(lái)決定 Pod 的調(diào)度和驅(qū)逐策略。
你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒有集群,你可以通過(guò) Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:
要檢查版本,請(qǐng)輸入 ?kubectl version
?。
Kubernetes 創(chuàng)建 Pod 時(shí)就給它指定了下列一種 QoS 類:
創(chuàng)建一個(gè)命名空間,以便將本練習(xí)所創(chuàng)建的資源與集群的其余資源相隔離。
kubectl create namespace qos-example
對(duì)于 QoS 類為 Guaranteed 的 Pod:
這些限制同樣適用于初始化容器和應(yīng)用程序容器。
下面是包含一個(gè)容器的 Pod 配置文件。 容器設(shè)置了內(nèi)存請(qǐng)求和內(nèi)存限制,值都是 200 MiB。 容器設(shè)置了 CPU 請(qǐng)求和 CPU 限制,值都是 700 milliCPU:
apiVersion: v1
kind: Pod
metadata:
name: qos-demo
namespace: qos-example
spec:
containers:
- name: qos-demo-ctr
image: nginx
resources:
limits:
memory: "200Mi"
cpu: "700m"
requests:
memory: "200Mi"
cpu: "700m"
創(chuàng)建 Pod:
kubectl create -f https://k8s.io/examples/pods/qos/qos-pod.yaml --namespace=qos-example
查看 Pod 詳情:
kubectl get pod qos-demo --namespace=qos-example --output=yaml
結(jié)果表明 Kubernetes 為 Pod 配置的 QoS 類為 Guaranteed。 結(jié)果也確認(rèn)了 Pod 容器設(shè)置了與內(nèi)存限制匹配的內(nèi)存請(qǐng)求,設(shè)置了與 CPU 限制匹配的 CPU 請(qǐng)求。
spec:
containers:
...
resources:
limits:
cpu: 700m
memory: 200Mi
requests:
cpu: 700m
memory: 200Mi
...
status:
qosClass: Guaranteed
Note:
如果容器指定了自己的內(nèi)存限制,但沒有指定內(nèi)存請(qǐng)求,Kubernetes 會(huì)自動(dòng)為它指定與內(nèi)存限制匹配的內(nèi)存請(qǐng)求。 同樣,如果容器指定了自己的 CPU 限制,但沒有指定 CPU 請(qǐng)求,Kubernetes 會(huì)自動(dòng)為它指定與 CPU 限制匹配的 CPU 請(qǐng)求。
刪除 Pod:
kubectl delete pod qos-demo --namespace=qos-example
如果滿足下面條件,將會(huì)指定 Pod 的 QoS 類為 Burstable:
下面是包含一個(gè)容器的 Pod 配置文件。 容器設(shè)置了內(nèi)存限制 200 MiB 和內(nèi)存請(qǐng)求 100 MiB。
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-2
namespace: qos-example
spec:
containers:
- name: qos-demo-2-ctr
image: nginx
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
創(chuàng)建 Pod:
kubectl create -f https://k8s.io/examples/pods/qos/qos-pod-2.yaml --namespace=qos-example
查看 Pod 詳情:
kubectl get pod qos-demo-2 --namespace=qos-example --output=yaml
結(jié)果表明 Kubernetes 為 Pod 配置的 QoS 類為 Burstable。
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: qos-demo-2-ctr
resources:
limits:
memory: 200Mi
requests:
memory: 100Mi
...
status:
qosClass: Burstable
刪除 Pod:
kubectl delete pod qos-demo-2 --namespace=qos-example
對(duì)于 QoS 類為 BestEffort 的 Pod,Pod 中的容器必須沒有設(shè)置內(nèi)存和 CPU 限制或請(qǐng)求。
下面是包含一個(gè)容器的 Pod 配置文件。 容器沒有設(shè)置內(nèi)存和 CPU 限制或請(qǐng)求。
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-3
namespace: qos-example
spec:
containers:
- name: qos-demo-3-ctr
image: nginx
創(chuàng)建 Pod:
kubectl create -f https://k8s.io/examples/pods/qos/qos-pod-3.yaml --namespace=qos-example
查看 Pod 詳情:
kubectl get pod qos-demo-3 --namespace=qos-example --output=yaml
結(jié)果表明 Kubernetes 為 Pod 配置的 QoS 類為 BestEffort。
spec:
containers:
...
resources: {}
...
status:
qosClass: BestEffort
刪除 Pod:
kubectl delete pod qos-demo-3 --namespace=qos-example
下面是包含兩個(gè)容器的 Pod 配置文件。 一個(gè)容器指定了內(nèi)存請(qǐng)求 200 MiB。 另外一個(gè)容器沒有指定任何請(qǐng)求和限制。
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-4
namespace: qos-example
spec:
containers:
- name: qos-demo-4-ctr-1
image: nginx
resources:
requests:
memory: "200Mi"
- name: qos-demo-4-ctr-2
image: redis
注意此 Pod 滿足 Burstable QoS 類的標(biāo)準(zhǔn)。 也就是說(shuō)它不滿足 Guaranteed QoS 類標(biāo)準(zhǔn),因?yàn)樗囊粋€(gè)容器設(shè)有內(nèi)存請(qǐng)求。
創(chuàng)建 Pod:
kubectl create -f https://k8s.io/examples/pods/qos/qos-pod-4.yaml --namespace=qos-example
查看 Pod 詳情:
kubectl get pod qos-demo-4 --namespace=qos-example --output=yaml
結(jié)果表明 Kubernetes 為 Pod 配置的 QoS 類為 Burstable:
spec:
containers:
...
name: qos-demo-4-ctr-1
resources:
requests:
memory: 200Mi
...
name: qos-demo-4-ctr-2
resources: {}
...
status:
qosClass: Burstable
刪除 Pod:
kubectl delete pod qos-demo-4 --namespace=qos-example
刪除命名空間:
kubectl delete namespace qos-example
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: