1. 程式人生 > >Kubernetes1.7新特性:新增自動伸縮條件和引數

Kubernetes1.7新特性:新增自動伸縮條件和引數

一、核心概念

Horizontal Pod Autoscaling,簡稱HPA,是Kubernetes中實現POD水平自動伸縮的功能。雲端計算具有水平彈性的特性,這個是雲端計算區別於傳統IT技術架構的主要特性。對於Kubernetes中的POD叢集來說,HPA可以實現很多自動化功能,比如當POD中業務負載上升的時候,可以建立新的POD來保證業務系統穩定執行,當POD中業務負載下降的時候,可以銷燬POD來提高資源利用率。


HPA控制器預設每隔30秒就會執行一次,如果要修改間隔時間,可以設定horizontal-pod-autoscaler-sync-period引數。

二、1.7新特性

1、HPA觸發條件新特性(α特性)

在Kubernetes1.7中,對HorizontalPodAutoscalerStatus結構體,新增加了Conditions屬性。


Conditions屬性是一個HorizontalPodAutoscalerCondition結構體,在這個結構體中包括Type、Status、LastTransitionTime、Reason和Message五個屬性,每個屬性的含義如下:

•       Type屬性:包含三個可選型別,ScalingActive、AbleToScale和ScalingLimited。

•       Status屬性:表示Type屬性是true還是false。取值為true和false,只有當HPA控制器檢查的目標指標執行正常的時候才會設定ScalingActive為true。在其他情況下會將ScalingActive設定成false。如果Type是AbleToScale型別,那麼取值為true的時候有三種情況,第一種是當HPA控制器可以獲取當前目標自動伸縮,第二種是HPA控制器可以擴充套件或者收縮目標到指定的副本數,第三種是HPA控制器發現已經到了可以啟動一次新的自動伸縮時間了,在其他情況下會設定成false。如果Type是ScalingLimited,那麼只有當副本數在配置範圍內的時候才被設定成false,否則都是true。

•       LastTransitionTime:記錄上一次事務執行時間。

•       Reason:記錄上一次事務產生的原因。

•       Message:記錄上一次事務產生的詳細資訊。

通過kubectl describe hpa命令可以看到HorizontalPodAutoscalerStatus結構體新增的Conditions屬性。

$kubectl describe hpa cm-test
Name:                           cm-test
Namespace:                      prom
Labels:                         <none>
Annotations:                    <none>
CreationTimestamp:              Fri, 16 Jun 2017 18:09:22 +0000
Reference:                     ReplicationController/cm-test
Metrics:                        ( current / target )
  "http_requests" on pods:      66m / 500m
Minreplicas:                   1
Maxreplicas:                   4
ReplicationControllerpods:     1 current / 1 desired
Conditions:
  Type                  Status  Reason                  Message
  ----                  ------  ------                  -------
  AbleToScale           True    ReadyForNewScale        the last scale time was sufficientlyold as to warrant a new scale
  ScalingActive         True   ValidMetricFound        the HPAwas able to successfully calculate a replica count from pods metrichttp_requests
  ScalingLimited        False  DesiredWithinRange      thedesired replica count is within the acceptible range
Events:

2、增加了兩個HPA引數(α特性)

在Kubernetes1.7中,對HPA控制器,在原先horizontal-pod-autoscaler-sync-period引數基礎上,新增加了horizontal-pod-autoscaler-upscale-delay和horizontal-pod-autoscaler-downscale-delay兩個引數,預設值分別是3分鐘和5分鐘,分別代表自動伸展後的延遲時間和自動收縮後的延遲時間。

HPA控制器通過這兩個新增引數來加以輔助控制是否進行自動伸縮,同時也會根據這兩個引數來設定HorizontalPodAutoscalerCondition結構體的Conditions屬性。