バックグラウンド
TKEクラスターがノードプールで構成され、エラスティックスケーリングが有効になっている場合、ノードリソースが不足しているときにノードの自動拡張をトリガーできます(マシンを自動的に購入してクラスターに参加します)が、この拡張プロセスには一定の時間がかかりますトラフィックが突然多くなる場合シナリオでは、この拡張速度が遅すぎるように見え、ビジネスに影響を与える可能性があります。tke-autoscaling-placeholder
これを使用して、TKEで第2レベルのスケーリングを実現し、この突然の高トラフィックシナリオに対処できます。
原則は何ですか?
tke-autoscaling-placeholder
実際、優先度の低いポッドを使用してリソースを事前に占有し(要求のあるコンテナーを一時停止しても実際にはリソースを消費しません)、トラフィックが急増する可能性のある優先度の高いサービスのバッファーとして一部のリソースを予約します。拡張ポッド、高優先度ポッドはポッド低優先度スケジューリングのリソースをすばやく取得でき、ポッドの低優先度tke-autoscaling-placeholder
は「混雑」し、ノードプールが構成され、有効化されたエラスティックスケーリングがノード拡張をトリガーする場合、状態は保留になります。このように、一部のリソースはバッファーとして使用されるため、ノードの拡張が遅い場合でも、一部のポッドを迅速に拡張してスケジュールし、第2レベルの拡張を実現できます。バッファリソース予約tke-autoscaling-placeholder
要求や部数を調整する実際のニーズに応じて、どれだけ調整できるか。
使用制限は何ですか?
このアプリケーションを使用するには、クラスターのバージョンは1.18以上です。
使い方?
安装tke-autoscaling-placeholder
アプリケーション市場tke-autoscaling-placeholder
でそれを見つけ、クリックしてアプリケーションの詳細を入力し、次をクリックします创建应用
。
クラスター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