新聞中心
配置 Pod 的服務(wù)質(zhì)量
本頁介紹怎樣配置 Pod 讓其獲得特定的服務(wù)質(zhì)量(QoS)類。Kubernetes 使用 QoS 類來決定 Pod 的調(diào)度和驅(qū)逐策略。

為鶴城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及鶴城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、鶴城網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
在開始之前
你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:
- Katacoda
- 玩轉(zhuǎn) Kubernetes
要檢查版本,請輸入 ?kubectl version?。
QoS 類
Kubernetes 創(chuàng)建 Pod 時就給它指定了下列一種 QoS 類:
- Guaranteed
- Burstable
- BestEffort
創(chuàng)建命名空間
創(chuàng)建一個命名空間,以便將本練習(xí)所創(chuàng)建的資源與集群的其余資源相隔離。
kubectl create namespace qos-example
創(chuàng)建一個 QoS 類為 Guaranteed 的 Pod
對于 QoS 類為 Guaranteed 的 Pod:
- Pod 中的每個容器都必須指定內(nèi)存限制和內(nèi)存請求。
- 對于 Pod 中的每個容器,內(nèi)存限制必須等于內(nèi)存請求。
- Pod 中的每個容器都必須指定 CPU 限制和 CPU 請求。
- 對于 Pod 中的每個容器,CPU 限制必須等于 CPU 請求。
這些限制同樣適用于初始化容器和應(yīng)用程序容器。
下面是包含一個容器的 Pod 配置文件。 容器設(shè)置了內(nèi)存請求和內(nèi)存限制,值都是 200 MiB。 容器設(shè)置了 CPU 請求和 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é)果也確認了 Pod 容器設(shè)置了與內(nèi)存限制匹配的內(nèi)存請求,設(shè)置了與 CPU 限制匹配的 CPU 請求。
spec:
containers:
...
resources:
limits:
cpu: 700m
memory: 200Mi
requests:
cpu: 700m
memory: 200Mi
...
status:
qosClass: Guaranteed
Note:
如果容器指定了自己的內(nèi)存限制,但沒有指定內(nèi)存請求,Kubernetes 會自動為它指定與內(nèi)存限制匹配的內(nèi)存請求。 同樣,如果容器指定了自己的 CPU 限制,但沒有指定 CPU 請求,Kubernetes 會自動為它指定與 CPU 限制匹配的 CPU 請求。
刪除 Pod:
kubectl delete pod qos-demo --namespace=qos-example
創(chuàng)建一個 QoS 類為 Burstable 的 Pod
如果滿足下面條件,將會指定 Pod 的 QoS 類為 Burstable:
- Pod 不符合 Guaranteed QoS 類的標準。
- Pod 中至少一個容器具有內(nèi)存或 CPU 的請求或限制。
下面是包含一個容器的 Pod 配置文件。 容器設(shè)置了內(nèi)存限制 200 MiB 和內(nèi)存請求 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
創(chuàng)建一個 QoS 類為 BestEffort 的 Pod
對于 QoS 類為 BestEffort 的 Pod,Pod 中的容器必須沒有設(shè)置內(nèi)存和 CPU 限制或請求。
下面是包含一個容器的 Pod 配置文件。 容器沒有設(shè)置內(nèi)存和 CPU 限制或請求。
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
創(chuàng)建包含兩個容器的 Pod
下面是包含兩個容器的 Pod 配置文件。 一個容器指定了內(nèi)存請求 200 MiB。 另外一個容器沒有指定任何請求和限制。
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 類的標準。 也就是說它不滿足 Guaranteed QoS 類標準,因為它的一個容器設(shè)有內(nèi)存請求。
創(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
環(huán)境清理
刪除命名空間:
kubectl delete namespace qos-example
標題名稱:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes配置Pod的服務(wù)質(zhì)量
網(wǎng)站URL:http://m.5511xx.com/article/dhpeidp.html


咨詢
建站咨詢
