Containerdのレジストリ設定

投稿者: | 3月 15, 2022

なんかハマったので一応書いておく。Kubernetesでこの設定をちゃんと書いておかないとワーカーノードでプライベートレジストリからイメージをダウンロードしてくれない。

Containerd 1.4系の場合

プライベートレジストリの設定(httpで認証なし)
デフォルトのconfig.tomlに以下を追記。

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.17.2:5000"]
endpoint = ["http://192.168.17.2:5000"]

しかし、1.4.13のデフォルト設定にも

[plugins."io.containerd.grpc.v1.cri".registry]
config_path = ""

があるから、1.5の設定も受け入れてくれそうなんだが。。。(試したが動かず。素直に1.4系の設定に従ったほうがいい。)

Containerd 1.5系の場合

デフォルトのconfig.tomlに以下を追記。(/etc/containerd/certs.d)

[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"

/etc/containerd/certs.dに以下の構造でファイルを作成

tree /etc/containerd/certs.d/
/etc/containerd/certs.d/
├── 192.168.16.2:5000
│   └── hosts.toml
└── docker.io
└── hosts.toml

2 directories, 2 files

dockerの設定
cat /etc/containerd/certs.d/docker.io/hosts.toml

server = "https://docker.io"

[host."https://registry-1.docker.io"]
capabilities = ["pull", "resolve"]

プライベートレジストリの設定(httpで認証なし)
cat /etc/containerd/certs.d/192.168.16.2\:5000/hosts.toml

server = "http://192.168.16.2:5000"

[host."http://192.168.16.2:5000"]
capabilities = ["pull", "resolve", "push"]
skip_verify = true

となる。。。いきなりdocker.comのcontainerdがアップグレードされたから焦った。

コメントを残す