メインコンテンツまでスキップ

CoreDNSのオートスケーリング

CoreDNSはKubernetesのデフォルトのDNSサービスであり、k8s-app=kube-dnsというラベルを持つPodで実行されています。このラボ演習では、クラスターのスケジュール可能なノードとコアの数に基づいてCoreDNSをスケールします。Cluster Proportional AutoscalerがCoreDNSのレプリカ数を調整します。

備考

Amazon EKSはEKSアドオンを通じてCoreDNSを自動的にスケールする機能を提供しており、これが本番環境での推奨パスです。このラボで取り上げる内容は教育目的です。

まず、Helmチャートを使用してCPAをインストールしましょう。CPAを設定するために次のvalues.yamlファイルを使用します:

~/environment/eks-workshop/modules/autoscaling/workloads/cpa/values.yaml
options:
target: deployment/coredns
namespace: kube-system

config:
linear:
nodesPerReplica: 2
min: 2
max: 6
preventSinglePointFailure: true
includeUnschedulableNodes: true

この設定では:

  1. デプロイメントcorednsをターゲットにします
  2. クラスター内のワーカーノード2台ごとにレプリカを1つ追加します
  3. 常に少なくとも2つのレプリカを実行します
  4. 6つ以上のレプリカにはスケールしません
注意

上記の設定はCoreDNSを自動的にスケールするためのベストプラクティスとは見なされるべきではなく、ワークショップの目的のために実証しやすい例です。

チャートをインストールしましょう:

~$helm repo add cluster-proportional-autoscaler https://kubernetes-sigs.github.io/cluster-proportional-autoscaler
~$helm upgrade --install cluster-proportional-autoscaler cluster-proportional-autoscaler/cluster-proportional-autoscaler \
--namespace kube-system \
--version "${CPA_CHART_VERSION}" \
--set "image.tag=v${CPA_VERSION}" \
--values ~/environment/eks-workshop/modules/autoscaling/workloads/cpa/values.yaml \
--wait
NAME: cluster-proportional-autoscaler
LAST DEPLOYED: [...]
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None

これにより、kube-system名前空間にDeploymentが作成されます。確認してみましょう:

~$kubectl get deployment cluster-proportional-autoscaler -n kube-system
NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
cluster-proportional-autoscaler   1/1     1            1           92s