7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2023

Day 9

EKS CoreDNSアドオンのバージョンアップでPDBが競合した

Last updated at Posted at 2023-12-08

EKS CoreDNSアドオンを v1.9.3-eksbuild.5 から v1.9.3-eksbuild.9にバージョンアップする際に自前でマニフェスト管理しているPDBと競合するということが起きました。
本記事ではその解決方法を記載します。

調査

自前でマニフェスト管理しているPDBでは、minAvailable: 1として設定しています。

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: coredns
  namespace: kube-system
spec:
  minAvailable: 1
  selector:
    matchLabels:
      k8s-app: kube-dns

エラー内容を見ると、minAvailableとmaxUnavailableは同時に設定することはできないという競合エラーが出ていることがわかります。

エラー内容
$ kustomize build k8s/dev/ | kubectl diff -f -
The PodDisruptionBudget "coredns" is invalid: spec: Invalid value: policy.PodDisruptionBudgetSpec{MinAvailable:(*intstr.IntOrString)(0xc02431df60), Selector:(*v1.LabelSelector)(0xc02431df80), MaxUnavailable:(*intstr.IntOrString)(0xc02431dfa0)}: minAvailable and maxUnavailable cannot be both set

公式ドキュメントを確認すると、v1.9.3-eksbuild.5以降およびv1.10.1-eksbuild.2ではPDBがデプロイされるようになり、
v1.9.3-eksbuild.7以降およびv1.10.1-eksbuild.4以降のPDBのデフォルト値は maxUnavailable: 1 になっているようです。

{
    "podDisruptionBudget": {
        "enabled": true,
        "maxUnavailable": 1
        }
}

v1.9.3-eksbuild.5の時はアドオン側がminAvailable: 1だったので競合していませんでしたが、v1.9.3-eksbuild.9ではPDBのデフォルト値がmaxUnavailable: 1になっているために競合が発生していたとわかりました。

解決方法

v1.9.3-eksbuild.7以降およびv1.10.1-eksbuild.4以降では、PodDisruptionBudgetを変更できるようです。

CloudFormationで管理しているアドオンのConfigurationValuesにPDB(minAvailable: 1)設定を追加します。
こうすることでアドオン側でデプロイされているPDB設定のデフォルト値(maxUnavailable: 1)を上書きすることができます。

  CoreDNS:
    Type: AWS::EKS::Addon
    Properties:
      AddonName: coredns
      AddonVersion: !Ref CoreDNSVersion
      ClusterName: !Ref EKSCluster
      ResolveConflicts: OVERWRITE
      ConfigurationValues: |
        {
          "podDisruptionBudget": {
            "enabled": true,
            "minAvailable": 1
          }
        }

マニフェストで用意していたPDBは不要になるため削除可能です。

まとめ

EKS CoreDNSアドオンを v1.9.3-eksbuild.5 から v1.9.3-eksbuild.9にバージョンアップする際に自前でマニフェスト管理しているPDBと競合したときの解決方法をまとめました。
バージョンアップの際はドキュメントをよく読むことが大切です。

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?