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
この設定では:
- デプロイメント
corednsをターゲットにします - クラスター内のワーカーノード2台ごとにレプリカを1つ追加します
- 常に少なくとも2つのレプリカを実行します
- 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