Amazon EKSがKubernetesバージョン1.18に対応しました!

2020.10.14

「みんな大好き1.18がEKSに対応したよ!」

というわけで、EKSによるKubernetesのバージョン1.18への対応がアナウンスされました。すでにEKSのクラスターバージョン指定で、1.18が利用できるようになっています。

Amazon EKS now supports Kubernetes version 1.18

同時に既存のEKSクラスタバージョン1.14の、強制アップデートもアナウンスされています。もし手元に1.14がある方は、自動アップデートの前に対応必須ですので、気をつけましょう!

あの…噂の1.18が遂にきたか…!!

  ( ゚д゚) ガタッ
  /   ヾ
__L| / ̄ ̄ ̄/_
  \/   /

なんか知ったふうやな。

Kubernetes version 1.18で変わったこと

最新公式情報はこちら。

Amazon EKS Kubernetes versions - Amazon EKS

ここでは、主にEKSクラスターでサポートされている機能について紹介します。

その他、Kubernetes 1.18の公式アップデート情報はこちらを参照。

Kubernetes 1.18: Fit & Finish | Kubernetes

1.14のサポート終了に関する注意点

Amazon EKSのサポートは、最新の4バージョンに対して提供されます。1.18のサポートが提供開始されたことにより、サポートバージョンの一覧(2020年10月12日時点。)は以下となります。

参考:Amazon EKS Kubernetes versions - Amazon EKS

  • 1.18.8
  • 1.17.9
  • 1.16.13
  • 1.15.11
  • 1.14.9

1.18のサポート開始に伴い、1.14は2020年12月8日にサポートが終了されます。この日以降は、新規で1.14のEKSクラスターを起動できなくなり、さらに既存の1.14クラスターは強制的に1.15にアップデートされます。古いクラスター稼働させている方は要チェックですぜ!

eksctlでバージョン1.18をデプロイしてみる

というわけで、新規でEKS上で1.18のクラスターを起動してみます。ここでは、みんな大好きeksctlを使います。

クライアント環境はこちら。

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.6
BuildVersion:   19G2021

eksctlの1.18対応バージョンのインストール

2020年10月12日現在、eksctlは、version1.18のクラスターに対応していないためRC版をダウンロードしてインストールします。

$ curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/0.30.0-rc.1/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
$ sudo mv /tmp/eksctl /usr/local/bin

バージョンを確認します。

$ eksctl version
0.30.0-rc.1

EKSクラスターの作成

パラメータは最小限にします。リージョンは東京、バージョンに1.18を指定。

$ eksctl create cluster --region ap-northeast-1 --version 1.18
[ℹ]  eksctl version 0.30.0-rc.1
[ℹ]  using region ap-northeast-1
[ℹ]  setting availability zones to [ap-northeast-1a ap-northeast-1c ap-northeast-1d]
[ℹ]  subnets for ap-northeast-1a - public:192.168.0.0/19 private:192.168.96.0/19
[ℹ]  subnets for ap-northeast-1c - public:192.168.32.0/19 private:192.168.128.0/19
[ℹ]  subnets for ap-northeast-1d - public:192.168.64.0/19 private:192.168.160.0/19
[ℹ]  nodegroup "ng-6282565b" will use "ami-0e9f5606a6d10ffb1" [AmazonLinux2/1.18]
[ℹ]  using Kubernetes version 1.18
[ℹ]  creating EKS cluster "fabulous-party-1602659703" in "ap-northeast-1" region with un-managed nodes

〜〜省略〜〜


[✔]  EKS cluster "fabulous-party-1602659703" in "ap-northeast-1" region is ready

だいたい15分ほどかかりますが、これにてクラスターの作成完了です。

クラスターバージョンの確認

kubectlで、クラスターのバージョンを確認します。

$ kubectl version --short
Client Version: v1.17.2
Server Version: v1.18.8-eks-7c9bda

AWS CLIからも確認。

$ aws eks describe-cluster --name=fabulous-party-1602659703 | jq .cluster.version
"1.18"

コンソール上でも、Kubernetes バージョンはこのように表示されます。

その他関連リソースについて

既存EKSクラスターのKubernetesバージョンの更新については、以下の公式ドキュメントにまとまっています。

Updating an Amazon EKS cluster Kubernetes version - Amazon EKS

各クラスターバージョンでサポートされているVPC CNI plug-inや、DNS(CoreDNS)、KubeProxyの情報なども全て網羅されているので、実際のアップグレードの際は、必ずこの公式ドキュメントを参照し、方針をたててから実行してみましょう。

KubernetesバージョンのアップグレードはEKS運用におけるキモ

以上、簡単に、EKSにおけるKubernetesバージョン1.18の対応について、その内容とアップグレード方法をまとめてみました。実際のアップグレード作業では、サービス中断を許容するか、クラスターによるB/Gデプロイで実施させるかなど、事前の検討必須事項は多々ありますが、バージョンアップによる新機能ももろもろ提供されているので、これを機会に手元のクラスターのアップグレード、実施いただければと思います。

それでは、今日はこのへんで。濱田(@hamako9999)でした。