📚

coredns-autoscaler の ConfigMap を触ってみる

2022/04/29に公開

適当なアプリ作って試すのもいいけど、せっかくなら 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

めでたしめでたし。

Microsoft (有志)

Discussion