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
に上げました
- datadogはhelmの
- ハマったポイント
- Podのイメージタグが変更されない
- 症状:チャートのバージョンを変更したにも関わらず、起動しているPodのイメージのタグが変更されませんでした
- 原因:jmx用のイメージを利用するためvaluesで直接タグが指定されていることに気づかなかったことです(valuesの中身をしっかりみるべきでした)
- 対応:valuesでイメージのタグを
6.13.0-jmx
に変更
- Podのイメージタグが変更されない
cluster-autoscaler
- 大まか作業内容
- cluster-autoscalerはhelmの
stable/cluster-autoscaler
というチャートで管理しています - もともとデプロイされていたバージョンは
0.12.4
でしたが、これを7.0.0
に上げました
- cluster-autoscalerはhelmの
- ハマったポイント
- autoDiscovery機能が働かない
- 症状:cluster-autoscalerが起動するも、AutoDiscovery機能によってAutoScalingGroupを発見したというログが流れない
- 原因:chartのバージョンが大きく上がったことでvaluesに新しく
tags
という項目が追加されており、そこのデフォルトの値が期待するものと異なっていた - 対応:下記内容を追加した
- autoDiscovery機能が働かない
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