(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

DockerDesktopをUpgrade時にWSL2を求められる事象

スポンサーリンク

事象

DockerDesktopのアップデート時に以下メッセージが出る。

WSL 2 installation is incomplete
The WSL 2 Linux kernel is now installed using a separate MSI update package.
Please click the link and follow the instructions to install the kernel update
環境情報
  • Docker Desktop 2.4(DE 19.03, K8s 1.18)
  • Windows 10

原因と対応策

Linux カーネル更新パッケージのインストールが必要。

下記から更新用のMSIデータを取得し、展開する。

インストール後はDockerDesktopがWSL上で動いていることが下記で確認可能。

$ wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  docker-desktop-data    Running         2
$ wsl
LAPTOP-XX:~# uname -a
Linux LAPTOP-XX 4.19.128-microsoft-standard #1 SMP XX x86_64 Linux

補足

Windows Subsystem for Linux、略してWSLですが同ツールのおかげでGNU/Linux環境をWindows上で直接実行できます。

DockerDesktopは旧バージョンは以下記事であるように

Hyper-V上で起動していますが、新バージョンではWSL上で動きます。

今回とあるyamlを起動した際に以下エラーが出たため同ツールのアップデートを行いました。

unable to recognize ...: no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1"

解決策に記載のある更新イメージを起動すると、Dockerはすぐに正常起動しましたが、Kubernetesは起動に時間がかかりました。

f:id:mtiit:20201009161604p:plain
K8sの起動には時間がかかる模様

注意点として、Kubernetesのクラスター接続用の情報が新しくなっているのでCygwin等を利用している方でホームディレクトリ直下のconfigを指定していない場合は認証でエラーとなります。

$ kubectl get node
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")

サーバ情報のURLに変化はありませんが鍵情報は変化しているのでご注意ください。a
鍵情報をコピペすれば問題なくアップデートされていました。

$ kubectl get node
NAME             STATUS   ROLES    AGE   VERSION
docker-desktop   Ready    master   xm   v1.18.8

以上、ご参考になれば幸いです。