亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么為Kubernetes配置Pod水平自動擴展

發布時間:2021-12-07 14:13:30 來源:億速云 閱讀:248 作者:小新 欄目:云計算

這篇文章主要介紹了怎么為Kubernetes配置Pod水平自動擴展,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

介 紹

Kubernetes有一個強大的功能,它能在運行的服務上進行編碼并配置彈性伸縮。如果沒有彈性伸縮功能,就很難適應部署的擴展和滿足SLAs。這一功能稱為Horizontal Pod Autoscaler (HPA)。

為什么使用HPA

使用HPA,您可以根據資源的使用情況或者自定義的指標,實現部署的自動擴展和縮減,讓部署的規模接近于實際服務的負載。

HPA可以為您的服務帶來兩個直接的幫助:

  1. 在需要計算和內存資源時提供資源,在不需要時釋放它們

  2. 按需增加/降低性能以實現SLA

HPA工作原理

HPA會根據監測到的CPU/內存利用率(資源指標),或基于第三方指標應用程序(如Prometheus、Datadog等)提供的自定義指標,自動調整副本控制器、部署或者副本集合的pods數量(定義最小和最大pods數)。HPA是一種控制回路,它的周期由Kubernetes的controller manager –horizontal-pod-autoscaler-sync-period標志控制(默認值是30s)。

怎么為Kubernetes配置Pod水平自動擴展

HPA定義

HPA是Kubernetes中彈性伸縮API組下的一個API資源。當前穩定的版本是autoscaling/v1,它只提供了對CPU自動縮放的支持。如果您想額外獲得對內存和自定義指標的支持,可以使用Beta版本autoscaling/v2beta1。

您可以在HPA API對象中看到更多信息:https://git.k8s.io/community/contributors/design-proposals/autoscaling/horizontal-pod-autoscaler.md#horizontalpodautoscaler-object

在一般情況下HPA是由kubectl來提供支持的。可以使用kubectl進行創建、管理和刪除:

創建HPA:

  • 帶有manifest: kubectl create -f <HPA_MANIFEST>

  • 沒有manifest(只支持CPU):kubectl autoscale deployment hello-world –min=2 --man=5 –-cpu-percent=50

獲取hpa信息:

  • 基本信息: kubectl get hpa hello-world

  • 細節描述: kubectl describe hpa hello-world

刪除hpa:

  • kubectl delete hpa hello-world

下面是一個HPA manifest定義的例子:

怎么為Kubernetes配置Pod水平自動擴展

這里使用了autoscaling/v2beta1版本,用到了cpu和內存指標

  • 控制hello-world項目部署的自動縮放

  • 定義了副本的最小值1

  • 定義了副本的最大值10

  • 當滿足時調整大小:

    CPU使用率超過50%

    內存使用超過100Mi

安 裝

在HPA可以在Kubernetes集群上使用之前,有一些元素需要在系統中安裝和配置。

需 求

檢查確定Kubernetes集群服務正在運行并且至少包含了這些標志:

  • kube-api: requestheader-client-ca-file

  • kubelet: read-only-port 在端口10255

  • kube-controller: 可選,只在需要和默認值不同時使用

  • horizontal-pod-autoscaler-downscale-delay:”5m0s”

  • horizontal-pod-autoscaler-upscale-delay:”3m0s”

  • horizontal-pod-autoscaler-sync-period: “30s”

對于RKE,Kubernetes集群定義,請確定您已經在服務部分添加了這些行。如果要在Rancher v2.0.X UI中執行此操作,請打開”Cluster options”- “Edit as YAML”并添加下面的定義:

怎么為Kubernetes配置Pod水平自動擴展

要部署指標服務,您的Kubernetes集群必須要正確配置和部署。

注意:在部署和測試示例時,本文使用的是Rancher v2.0.6以及k8s v1.10.1集群

資源指標

如果HPA想要使用資源指標,那么就需要用到metrics-server包了,它在Kubernetes集群中的kube-system命名空間里。

按照下面的步驟實現:

  1. 配置kubectl連接到正確的Kubernetes集群

  2. 克隆metrics-server的Github倉庫:git clone https://github.com/kubernetes-incubator/metrics-server

  3. 安裝metrics-server包(假設Kubernetes升級到了1.8):kubectl create -f metrics-server/deply/1.8+/

  4. 檢查metrics-server是否運行正常。在命名空間kube-system可以檢查服務pod以及日志

怎么為Kubernetes配置Pod水平自動擴展

  1. 檢查是否可以從kubectl訪問指標API:如果您要直接訪問Kubernetes集群,請使用kubectl config的服務器URL,比如‘https://:6443’

怎么為Kubernetes配置Pod水平自動擴展

如果您想通過Rancher訪問Kubernetes集群,那么kubectl config的服務器URL就要像:https://<RANCHER_URL>/k8s/clusters/<CLUSTER_ID>,即你還要在原本的

API路徑后面加上/k8s/clusters/<CLUSTER_ID>

怎么為Kubernetes配置Pod水平自動擴展

自定義指標(Prometheus)

自定義指標作為一種資源,可以由許多第三方應用程序提供。我們準備在演示中使用Prometheus。假設Prometheus已經部署在您的Kubernetes集群中了,它可以從pods、節點、命名空間等等地方獲得正確的指標,我們將使用Prometheus url,http://prometheus.mycompany.io,它公開于端口80。

Prometheus可以在Rancher v2.0目錄中部署。如果在Kubernetes集群上沒有運行,那么就在Rancher目錄中部署它。

如果HPA想要使用Prometheus中的自定義指標,那么Kubernetes集群上的kube-system命名空間則需要用到k8s-prometheus-adapter。為了方便k8s-prometheus-adapter的安裝,我們將使用banzai-charts提供的Helm chart。

通過下面的步驟可以使用這一chart:

  1. 在k8s集群上初始化helm

怎么為Kubernetes配置Pod水平自動擴展

  1. 從Github倉庫克隆banzai-charts:

怎么為Kubernetes配置Pod水平自動擴展

  1. 安裝prometheus-adapter,指定具體的Prometheus URL和端口

怎么為Kubernetes配置Pod水平自動擴展

  1. 檢查prometheus-adapter是否運行正常。檢查服務pod和日志是在kube-system命名空間下

怎么為Kubernetes配置Pod水平自動擴展

  1. 檢查指標API是否可以從kubectl進行訪問:直接訪問Kubernetes集群,那么kubectl config的服務器URL就比如https://<K8s_URL>:6443

怎么為Kubernetes配置Pod水平自動擴展

如果是從Rancher進行訪問,那么kubectl config的服務器URL就是https://<RANCHER_URL>/k8s/clusters/<CLUSTER_ID>,需要加上后綴/k8s/clusters/<CLUSTER_ID>

怎么為Kubernetes配置Pod水平自動擴展

ClusterRole和ClusterRoleBinding

默認情況下,HPA將嘗試通過用戶的system:anonymous讀取(系統的和自定義的)指標。用戶需要定義view-resource-metrics以及view-custom-metrics,而ClusterRole和ClusterRoleBinding將它們分配給system:anonymous來打開對指標的讀取訪問。

要實現這一點,需要下面的步驟:

  1. 配置kubectl正確連接到k8s集群

  2. 復制ClusterRole和ClusterRoleBinding文件:

怎么為Kubernetes配置Pod水平自動擴展

怎么為Kubernetes配置Pod水平自動擴展

在Kubernetes集群上創建它們(如果你想使用自定義指標的話):

怎么為Kubernetes配置Pod水平自動擴展

服務部署

為了讓HPA正常工作,服務部署應該要有容器的資源請求定義。

我們用一個hello-world的例子來測試一下HPA是否正常工作。

我們根據下面步驟進行,第一步,正確配置kubectl連接到k8s集群,第二步,復制hello-world的部署文件。

怎么為Kubernetes配置Pod水平自動擴展

  1. 在k8s集群上部署它

怎么為Kubernetes配置Pod水平自動擴展

  1. 為資源或者自定義指標復制HPA

  2. 資源指標:

``` apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: hello-world namespace: default spec: scaleTargetRef: apiVersion: extensions/v1beta1 kind: Deployment name: hello-world minReplicas: 1 maxReplicas: 10 metrics:

  • type: Resource resource:name: cpu targetAverageUtilization: 50

  • type: Resource resource: name: memory targetAverageValue: 1000Mi

  • 自定義指標(和資源指標一樣,不過需要添加自定義的cpu_system指標)

怎么為Kubernetes配置Pod水平自動擴展

  1. 獲得HPA信息和描述,并且檢查資源指標是否已經顯示出來:

資源指標:

怎么為Kubernetes配置Pod水平自動擴展

自定義指標:

怎么為Kubernetes配置Pod水平自動擴展

  1. 給我們的服務產生負載,進行彈性伸縮的測試。這里可以使用各種各樣的工具(產生負載),不過這里我們使用https://github.com/rakyll/hey 向hello-world服務發出http請求,并觀察彈性伸縮是否正常工作

  2. 觀察自動的擴縮容

  • 資源指標:

  • 當cpu利用率達到目標比例時,自動擴展到2個pods

怎么為Kubernetes配置Pod水平自動擴展

怎么為Kubernetes配置Pod水平自動擴展

當cpu使用率達到目標值horizontal-pod-autoscaler-upscale-delay默認超過3分鐘時,擴展到3個pods:

怎么為Kubernetes配置Pod水平自動擴展

怎么為Kubernetes配置Pod水平自動擴展

當cpu使用率降到目標值horizontal-pod-autoscaler-downscale-delay默認超過5分鐘時,縮小到1個pods:

怎么為Kubernetes配置Pod水平自動擴展

怎么為Kubernetes配置Pod水平自動擴展

自定義指標:

  • 當cpu利用率達到目標時擴展到2個pods:

怎么為Kubernetes配置Pod水平自動擴展

怎么為Kubernetes配置Pod水平自動擴展

當cpu_system利用率限制達到目標值,擴展到3個pods:

怎么為Kubernetes配置Pod水平自動擴展

怎么為Kubernetes配置Pod水平自動擴展

當cpu利用率限制達到目標值horizontal-pod-autoscaler-upscale-delay超過3分鐘(默認),擴展到4個pods:

怎么為Kubernetes配置Pod水平自動擴展

怎么為Kubernetes配置Pod水平自動擴展

當所有的指標都低于目標值horizontal-pod-autoscaler-downscale-delay 超過5分鐘,自動縮小到1個pods:

怎么為Kubernetes配置Pod水平自動擴展

怎么為Kubernetes配置Pod水平自動擴展

感謝你能夠認真閱讀完這篇文章,希望小編分享的“怎么為Kubernetes配置Pod水平自動擴展”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淮安市| 仪征市| 安国市| 大宁县| 霍州市| 东乌珠穆沁旗| 乌恰县| 巫溪县| 紫金县| 镶黄旗| 博野县| 鹿邑县| 东城区| 金乡县| 金溪县| 若尔盖县| 赤峰市| 天台县| 西华县| 英德市| 茌平县| 宝丰县| 孙吴县| 通榆县| 肥城市| 柳林县| 遵义市| 三明市| 临漳县| 玉林市| 洞头县| 西吉县| 从化市| 塔城市| 茌平县| 合作市| 万载县| 江孜县| 黄山市| 昆明市| 南投县|