なんかハマったので一応書いておく。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がアップグレードされたから焦った。