Cloud/Kubernetes
How to set the Containerd config.toml on k3s
Jacob_baek
2021. 7. 7. 20:33
Containerd를 사용하는 K3s 환경에서 dockerhub가 아닌 registry 추가를 해야할 경우가 있다.
이러한 경우 다음과 같은 설정을 통해 추가가 가능하다.
참고
/var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl 로 configm.toml 적용도 가능한데
실제 crictl info에서는 적용된 registry를 확인할수 없어 해당 기능은 사용을 권장하지 않는다.
registy 설정 추가
K3s에서는 registry 추가를 다음과 같이 할수 있다.
root@k3s-server:~# cat /etc/rancher/k3s/registries.yaml
mirrors:
"10.10.10.5:5000":
endpoint:
- "http://10.10.10.5:5000"
configs:
"10.10.10.5:5000":
auth:
username: jacobbaek
password: jacobbaek_password
위와 같이 registries.yaml 파일을 해당 경로에 생성한다.
(k3s-agent 인경우 /etc/rancher/k3s 디렉토리가 미존재할수도 있으니 이는 필요시 생성해준다.)
K3s 서버인 경우 다음과 같이 systemd k3s service를 재시작한다.
root@k3s-server:~# systemctl restart k3s
참고
k3s 서버나 k3s-agent 모두 동일하게 /etc/rancher/k3s/registries.yaml 파일 및 내용을 추가한후 서비스
K3s agent 인경우 다음과 같이 systemd k3s-agent service를 재시작한다.
root@k3s-agent1:~# systemctl restart k3s-agent
서비스 재시작후 다음과 같은 registry가 추가된것을 crictl info 로 확인할 수 있다.
root@k3s-server:~# crictl info | jq -r '.config.registry'
{
"mirrors": {
"10.10.10.5:5000": {
"endpoint": [
"http://10.10.10.5:5000"
],
"rewrite": null
},
"docker.io": {
"endpoint": [
"https://registry-1.docker.io"
],
"rewrite": null
}
},
"configs": {
"10.10.10.5:5000": {
"auth": {
"username": "jacobbaek",
"password": "jacobbaek_password",
"auth": "",
"identitytoken": ""
},
"tls": null
}
},
"auths": null,
"headers": null
}
http라고 별다른 설정이 있지는 않고 위와 같이 mirrors 및 configs에 추가되면 되고 인증정보가 필요한 경우 configs."mirror_addr".auth를 추가해주면 된다.