📚
coredns-autoscaler の ConfigMap を触ってみる
適当なアプリ作って試すのもいいけど、せっかくなら kube-system
にリソースあるからそれいじって遊べばいいじゃん、ということで。
もとの状態はこんな感じ。
coredns
は node が 8 台になると 3 pods に増やすよ、ってことなんだと思う、たぶん。
その他に全体のコア数で scale out するっぽい。
$ kubectl get cm coredns-autoscaler -n kube-system -o yaml
apiVersion: v1
data:
ladder: '{"coresToReplicas":[[1,2],[512,3],[1024,4],[2048,5]],"nodesToReplicas":[[1,2],[8,3],[16,4],[32,5]]}'
kind: ConfigMap
metadata:
creationTimestamp: "2022-04-17T06:20:15Z"
name: coredns-autoscaler
namespace: kube-system
resourceVersion: "3435413"
uid: xxxxxxxx-xxxx-xxxx-xxxx-4d5ca4274842
なので、この nodesToReplicas
の部分を [[1,2],[3,3],[16,4],[32,5]]
と書き換えてみる。
今 node は 3 台あるので、この状態でも coredns
が 3 台に増えてくれたらいい。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-19344272-vmss000000 Ready agent 12d v1.21.9
aks-nodepool1-19344272-vmss000001 Ready agent 12d v1.21.9
aks-nodepool1-19344272-vmss000008 Ready agent 4h33m v1.21.9
ConfigMap (cm) の編集はこんな感じで。
たぶん Vi (Vim) が起動するので適当に編集してとじる。
$ kubectl edit cm coredns-autoscaler -n kube-system
configmap/coredns-autoscaler edited
しばらくすると coredns
の pods が 3 つになってるのがわかる。
$ kubectl get po -n kube-system -l k8s-app=kube-dns
NAME READY STATUS RESTARTS AGE
coredns-69c47794-26sgj 1/1 Running 0 26m
coredns-69c47794-6xnlq 1/1 Running 0 16h
coredns-69c47794-cgn9k 1/1 Running 0 7d7h
kubectl logs
でもそんな感じを確認できる。
$ kubectl logs -l k8s-app=coredns-autoscaler -n kube-system
I0429 07:02:25.712236 1 ladder_controller.go:72] Detected ConfigMap version change (old: 1887 new: 3435413) - rebuilding lookup entries
I0429 07:02:25.712257 1 ladder_controller.go:73] Params from apiserver:
{"coresToReplicas":[[1,2],[512,3],[1024,4],[2048,5]],"nodesToReplicas":[[1,2],[3,3],[16,4],[32,5]]}
I0429 07:02:25.737857 1 k8sclient.go:272] Cluster status: SchedulableNodes[3], SchedulableCores[6]
I0429 07:02:25.737875 1 k8sclient.go:273] Replicas are not as expected : updating replicas from 2 to 3
というわけで元に戻しておきましょう。
$ kubectl edit cm coredns-autoscaler -n kube-system
configmap/coredns-autoscaler edited
$ kubectl get configmap coredns-autoscaler -n kube-system -o yaml
apiVersion: v1
data:
ladder: '{"coresToReplicas":[[1,2],[512,3],[1024,4],[2048,5]],"nodesToReplicas":[[1,2],[8,3],[16,4],[32,5]]}'
kind: ConfigMap
metadata:
creationTimestamp: "2022-04-17T06:20:15Z"
name: coredns-autoscaler
namespace: kube-system
resourceVersion: "3440910"
uid: xxxxxxxx-xxxx-xxxx-xxxx-4d5ca4274842
$ kubectl logs -l k8s-app=coredns-autoscaler -n kube-system
I0429 07:29:55.714762 1 ladder_controller.go:72] Detected ConfigMap version change (old: 3435413 new: 3440910) - rebuilding lookup entries
I0429 07:29:55.714786 1 ladder_controller.go:73] Params from apiserver:
{"coresToReplicas":[[1,2],[512,3],[1024,4],[2048,5]],"nodesToReplicas":[[1,2],[8,3],[16,4],[32,5]]}
I0429 07:29:55.746859 1 k8sclient.go:272] Cluster status: SchedulableNodes[3], SchedulableCores[6]
I0429 07:29:55.746881 1 k8sclient.go:273] Replicas are not as expected : updating replicas from 3 to 2
めでたしめでたし。
Discussion