2
1

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 3 years have passed since last update.

Kubernetesで使うimageをctrコマンドでロードする(containerd)

Posted at

背景

containerdをCNIとして動作させるKubernetesクラスタをオフラインで構築・使用する際、イメージをロードするところで少しハマったので共有します。

インターネット接続できる環境ならスムーズにいくと思うのですが、自分の場合はプロキシ経由のためイメージがpullできず、一旦別PCでローカルにイメージを落とし、それをロードすることにしています。

前提として、Kubernetesで使用するイメージ(kube-apiserverなど)は、

# crictl images

で見えるようになっている必要があります。
(crictlはkubeadmとかのインストール時に同時に入ってきます)

しかし、containerd付属の管理ツールであるctrでそのままロード(import)しても出てきません。

# ctr images import kube-apiserver.tar.gz
unpacking k8s.gcr.io/kube-apiserver:v1.22.1 (省略) ...done

# crictl images
IMAGE                                 TAG                 IMAGE ID            SIZE

対処法

namespaceにk8s.ioを指定してロードします。

# ctr -n k8s.io images import kube-apiserver.tar
...

# crictl images
IMAGE                                 TAG                 IMAGE ID            SIZE
k8s.gcr.io/kube-apiserver             v1.22.1             f30469a2491a5       130MB

ローカルでビルドしたイメージをロード(import)してk8sで使いたい場合も同様で、ネームスペースを指定してやればk8sで使えます。

crictlでイメージをロードできるようにしてくれれば使いやすいのですが、イメージロードはCRIが持つべき機能ではない、ということで実装されていないようです。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?