RKE/RKE2 使用代理获取镜像
由于国内网络访问受限,从 Docker Hub 等海外镜像仓库拉取镜像时可能会非常缓慢,甚至出现拉取失败的情况。
如果环境中已有可用代理,可以为 RKE Docker 或 RKE2 Containerd 配置代理,从而通过代理拉取镜像。
准备代理服务器
本文使用 Clash 作为代理服务器。
准备 Clash 配置文件,将 Clash 的 .yaml 配置文件放到 /root/clash 目录下:
1 | mkdir -pv /root/clash |
例如:
1 | /root/clash/config.yaml |
启动 Clash 容器:
1 | docker run -d \ |
验证代理是否可用:
1 | curl -x http://localhost:7890 https://www.google.com -I |
如果能够正常返回 HTTP 响应头,则说明代理可用。
为 RKE Docker 配置代理
对于 RKE 集群,容器运行时为 Docker,可以通过 systemd drop-in 文件为 Docker 配置代理。
创建 Docker systemd 代理配置:
1 | mkdir -pv /etc/systemd/system/docker.service.d |
重启 Docker:
1 | systemctl daemon-reload |
确认 Docker 代理配置:
1 | systemctl show --property Environment docker |
验证镜像拉取:
1 | docker pull nginx:mainline |
为 RKE2 Containerd 配置代理
RKE2 使用内置 Containerd 作为容器运行时。可以通过 /etc/default/rke2-server 或 /etc/default/rke2-agent 为 RKE2 内置 Containerd 配置代理。
Server 节点配置代理
在 RKE2 Server 节点上创建或修改 /etc/default/rke2-server:
1 | cat <<EOF > /etc/default/rke2-server |
重新加载 systemd 并重启 RKE2 Server:
1 | systemctl daemon-reload |
Agent 节点配置代理
在 RKE2 Agent 节点上创建或修改 /etc/default/rke2-agent:
1 | cat <<EOF > /etc/default/rke2-agent |
重新加载 systemd 并重启 RKE2 Agent:
1 | systemctl daemon-reload |
验证 RKE2 Containerd 镜像拉取
RKE2 内置 Containerd 可通过 crictl 或 ctr 验证镜像拉取:
1 | ctr -n k8s.io images pull docker.io/library/nginx:mainline |
如果镜像能够正常拉取,则说明代理配置已生效。
RKE/RKE2 使用代理获取镜像
install_url to use ShareThis. Please set it in _config.yml.