tke-autoscaling-placeholderを使用して、第2レベルの弾性スケーリングを実現します

バックグラウンド

TKEクラスターがノードプールで構成され、エラスティックスケーリングが有効になっている場合、ノードリソースが不足しているときにノードの自動拡張をトリガーできます(マシンを自動的に購入してクラスターに参加します)が、この拡張プロセスには一定の時間がかかりますトラフィックが突然多くなる場合シナリオでは、この拡張速度が遅すぎるように見え、ビジネスに影響を与える可能性があります。tke-autoscaling-placeholderこれを使用して、TKEで第2レベルのスケーリングを実現し、この突然の高トラフィックシナリオに対処できます。

原則は何ですか?

tke-autoscaling-placeholder実際、優先度の低いポッドを使用してリソースを事前に占有し(要求のあるコンテナーを一時停止しても実際にはリソースを消費しません)、トラフィックが急増する可能性のある優先度の高いサービスのバッファーとして一部のリソースを予約します。拡張ポッド、高優先度ポッドはポッド低優先度スケジューリングのリソースをすばやく取得でき、ポッドの低優先度tke-autoscaling-placeholderは「混雑」し、ノードプールが構成され、有効化されたエラスティックスケーリングがノード拡張をトリガーする場合、状態は保留になります。このように、一部のリソースはバッファーとして使用されるため、ノードの拡張が遅い場合でも、一部のポッドを迅速に拡張してスケジュールし、第2レベルの拡張を実現できます。バッファリソース予約tke-autoscaling-placeholder要求や部数を調整する実際のニーズに応じて、どれだけ調整できるか。

使用制限は何ですか?

このアプリケーションを使用するには、クラスターのバージョンは1.18以上です。

使い方?

安装tke-autoscaling-placeholder

アプリケーション市場tke-autoscaling-placeholderそれを見つけ、クリックしてアプリケーションの詳細を入力し、次をクリックします创建应用

img

クラスターIDと名前空間をデプロイすることを選択します。アプリケーションの構成パラメーターが最も重要でreplicaCountありresources.request、それぞれ、tke-autoscaling-placeholderプレースホルダーの各コピーのリソースサイズとコピー数であり、これらが一緒になってバッファーリソースのサイズを決定します。高流量のニーズ追加のリソースの量が設定されると推定されます。

最後に、[作成]をクリックすると、リソース占有用のこれらのポッドが正常に開始されたかどうかを確認できます。

$ kubectl get pod -n default
tke-autoscaling-placeholder-b58fd9d5d-2p6ww   1/1     Running   0          8s
tke-autoscaling-placeholder-b58fd9d5d-55jw7   1/1     Running   0          8s
tke-autoscaling-placeholder-b58fd9d5d-6rq9r   1/1     Running   0          8s
tke-autoscaling-placeholder-b58fd9d5d-7c95t   1/1     Running   0          8s
tke-autoscaling-placeholder-b58fd9d5d-bfg8r   1/1     Running   0          8s
tke-autoscaling-placeholder-b58fd9d5d-cfqt6   1/1     Running   0          8s
tke-autoscaling-placeholder-b58fd9d5d-gmfmr   1/1     Running   0          8s
tke-autoscaling-placeholder-b58fd9d5d-grwlh   1/1     Running   0          8s
tke-autoscaling-placeholder-b58fd9d5d-ph7vl   1/1     Running   0          8s
tke-autoscaling-placeholder-b58fd9d5d-xmrmv   1/1     Running   0          8s

tke-autoscaling-placeholder 完全な構成については、次の表を参照してください。

パラメータ 説明 デフォルト
replicaCount プレースホルダーのコピー数 10
image プレースホルダーのミラーアドレス ccr.ccs.tencentyun.com/library/pause:latest
resources.requests.cpu 単一のプレースホルダーコピーが占めるCPUリソースのサイズ 300m
resources.requests.memory 単一のプレースホルダーコピーのメモリサイズ 600Mi
lowPriorityClass.create 優先度の低いPriorityClassを作成するかどうか(プレースホルダーによって参照されていました) true
lowPriorityClass.name 優先度の低いPriorityClassの名前 low-priority
nodeSelector 特定のラベルを使用して、ノードにスケジュールするプレースホルダーを指定します {}
tolerations プレースホルダーが許容する汚れを指定します []
affinity プレースホルダーのアフィニティ構成を指定します {}

優先度の高いポッドを展開する

tke-autoscaling-placeholder の優先度は非常に低く、ビジネスポッドは優先度の高いPriorityClassを指定できます。これは、リソースをプリエンプトして急速な拡張を実現するのに便利です。そうでない場合は、最初に作成できます。

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 1000000
globalDefault: false
description: "high priority class"

priorityClassName優先度の高いPriorityClassとして、ビジネスのポッドで指定されています

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 8
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      priorityClassName: high-priority # 这里指定高优先的 PriorityClass
      containers:
      - name: nginx
        image: nginx
        resources:
          requests:
            cpu: 400m
            memory: 800Mi

クラスターノードのリソースが不足している場合、優先度の高いトラフィックポッドからの拡張tke-autoscaling-placeholderは、ポッドとリソースの優先度低くなり、スケジュールどおりに捕捉されtke-autoscaling-placeholder、ポッドが再び保留になる可能性があります。

$ kubectl get pod -n default
NAME                                          READY   STATUS    RESTARTS   AGE
nginx-bf79bbc8b-5kxcw                         1/1     Running   0          23s

おすすめ

転載: blog.51cto.com/14120339/2606637