EKSを1.16にバージョンアップするの大変だった
EKSを1.16にバージョンアップする際に詰まったことと解決方法をまとめます

はじめに

  • この記事は、私が仕事でEKS(Elastic Kubernetes Service)のバージョンアップを行った際に、とても苦労したので備忘録も兼ねてやったこと・ハマったことをまとめた記事になります
  • 私達のチームで運用しているEKSのバージョンが1.15だったのですが、EKSのリリースカレンダーをみると5月3日でサポートが終了してしまうという状況でした
    • これに気づいたのが4月20日頃で、猶予が2週間しかないので大慌てで更新作業を行いました

やるべきこと

APIバージョンの変更

  • 1.16の変更点として影響が大きかったのは一部のAPIバージョンが非対応になったことです
  • 例えば、DaemonSetsとDeploymentsとReplicaSetsにおいて、extensions/v1beta1ではなくapps/v1を利用することが推奨になりました

変更対象のアプリケーション

  • 私達のクラスタ上には、実際に非推奨のAPIバージョンで稼働しているDaemonSets・Deploymentsが存在していたので、それらのAPIバージョンを更新する必要がありました
  • 対象となるアプリケーションは下記です(一部抜粋)
    • datadog
    • cluster-autoscaler
    • kiam
    • external-dns

作業内容

作業内容は大きく以下の2つです。それぞれについて詳しく記述します。

  • アプリケーションのAPIバージョン変更
  • ノードのバージョン変更

アプリケーションのAPIバージョン変更

  • 基本的にアプリケーションはhelmfileで管理していたので、helmfileの変更作業の内容を記述します
  • ちなみにhelmのバージョンは2系です

datadog

  • 大まか作業内容
    • datadogはhelmのstable/datadogというチャートで管理しています
    • もともとデプロイされていたバージョンは1.30.8でしたが、これを1.35.1に上げました
  • ハマったポイント
    • Podのイメージタグが変更されない
      • 症状:チャートのバージョンを変更したにも関わらず、起動しているPodのイメージのタグが変更されませんでした
      • 原因:jmx用のイメージを利用するためvaluesで直接タグが指定されていることに気づかなかったことです(valuesの中身をしっかりみるべきでした)
      • 対応:valuesでイメージのタグを6.13.0-jmxに変更

cluster-autoscaler

  • 大まか作業内容
    • cluster-autoscalerはhelmのstable/cluster-autoscalerというチャートで管理しています
    • もともとデプロイされていたバージョンは0.12.4でしたが、これを7.0.0に上げました
  • ハマったポイント
    1. autoDiscovery機能が働かない
      • 症状:cluster-autoscalerが起動するも、AutoDiscovery機能によってAutoScalingGroupを発見したというログが流れない
      • 原因:chartのバージョンが大きく上がったことでvaluesに新しくtagsという項目が追加されており、そこのデフォルトの値が期待するものと異なっていた
      • 対応:下記内容を追加した
autoDiscovery:
    clusterName: {クラスタの名前}
    tags:
        - k8s.io/cluster-autoscaler/enabled
        - kubernetes.io/cluster/{クラスタの名前}
1. スケールアウトしない
   - 症状:PendingになっているPodがあるにも関わらず新しいNodeが起動しない
   - 原因:valuesで、cluster-autoscalerイメージのタグに`1.16.0`を指定していたのですが`1.16.0`に[バグ](https://github.com/kubernetes/autoscaler/issues/2345)があった
   - 対応:イメージのタグを`1.16.1`に変更した

おわりに

力尽きてしまったので今日はここまで。 kiam、external-dns、ノードのバージョン変更についてはまた別の機会に…


Last modified on 2021-05-11