containerd 配置代理服务器
背景
containerd 安装的环境在内网,无法拉取外网 dockerhub 的镜像,为了实现 拉取外网镜像,需要 containerd 服务配置正向代理,使 containerd 可以通过代理访问 外网。
搭建代理服务器
代理服务器选择
代理服务器可以选用 nginx 和 squid。squid 代理支持 https 代理但性能不如 nginx 代理好,nginx 默认不支持 https 正向代理,但可以通过安装 ngx_http_proxy_connect_module 模块支持。本次代理选用nginx搭建。
配置 nginx https代理
编译nginx源码集成 ngx_http_proxy_connect_module 模块
-
下载 ngx_http_proxy_connect_module 模块
# cd /root # git clone git@github.com:chobits/ngx_http_proxy_connect_module.git
-
下载 nginx 源码并编译
# wget http://nginx.org/download/nginx-1.9.2.tar.gz # tar -xzvf nginx-1.9.2.tar.gz # cd nginx-1.9.2/ # patch -p1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect.patch # ./configure --add-module=/path/to/ngx_http_proxy_connect_module # make && make install
nginx配置示例
server {
listen 3128;
# dns resolver used by forward proxying
resolver 8.8.8.8;
# forward proxy for CONNECT request
proxy_connect;
proxy_connect_allow 443 563;
# forward proxy for non-CONNECT request
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
}
}
配置成功后启动 nginx 服务
# /usr/local/nginx/sbin/nginx
nginx https代理容器版本地址:https://github.com/seamounts/...
设置 containerd 服务代理
代理服务器搭建成功后即可配置 containerd 服务使用该代理拉取镜像。配置如下:
# mkdir /etc/systemd/system/containerd.service.d
# cat > /etc/systemd/system/containerd.service.d/http_proxy.conf << EOF
> [Service]
> Environment="HTTP_PROXY=http://<proxy_ip>:<proxy_port>/"
> EOF
#
# # 配置 no_proxy 指定不走代理的域名或ip
# cat > /etc/systemd/system/containerd.service.d/no_proxy.conf << EOF
> [Service]
> Environment="NO_PROXY=http://<apiserver_ip>:<apiserver_port>/"
> EOF
重启 containerd 服务
# systemctl daemon-reload
# systemctl restart containerd
重启后测试拉取外网镜像
# crictl --debug pull nginx
DEBU[0000] PullImageRequest: &PullImageRequest{Image:&ImageSpec{Image:nginx,},Auth:nil,SandboxConfig:nil,}
DEBU[0004] PullImageResponse: &PullImageResponse{ImageRef:sha256:5a3221f0137beb960c34b9cf4455424b6210160fd618c5e79401a07d6e5a2ced,}
Image is up to date for sha256:5a3221f0137beb960c34b9cf4455424b6210160fd618c5e79401a07d6e5a2ced
#
到此,containerd 代理配置完成
推荐阅读
使用 sed 命令替换/删除 文本字符的 20 个例子
简述 在以下的文章中会介绍使用 linux sed 命令删除和替换文件中指定字符的 20 个例子。sed 替换字符的命令格式 如下: {代码...} 示例文件: {代码...} 1. 删除指定的字符,比如 'a' {代码...} 以上命令会删除每...
seamounts赞 9阅读 50.8k评论 2
如何选择适合你的微服务 API 网关:对比 Kong、APISIX、Tyk、Apigee 和其他网关
API 网关并非一个新兴的概念,在十几年前就已经存在了,它的作用主要是作为流量的入口,统一的处理和业务相关的请求,让请求更加安全、快速和准确的得到处理。它有以下传统的功能:
API7_技术团队赞 8阅读 8.7k评论 2
张晋涛:我的 2022 总结
大家好,我是张晋涛。2022 年已经结束,我每年都会惯例的做个小回顾,今年因为阳了在恢复身体,一直拖到了今天才写。生活在 2022 年初做回顾的时候,觉得 2021 是魔幻的一年,但现在看来 2022 年其实更加魔幻。一...
张晋涛赞 6阅读 1.1k评论 2
突破难关:Docker镜像和容器的区别以及构建的最佳实践
Docker 可谓是开启了容器化技术的新时代,现在无论大中小公司基本上都对容器化技术有不同程度的尝试,或是已经进行了大量容器化的改造。伴随着 Kubernetes 和 Cloud Native 等技术和理念的普及,也大大增加了业务...
张晋涛赞 4阅读 444
http 和 https 的通信过程及区别
🎈 两者的区别端口: http 端口号是80, https 端口号是443传输协议: http 是超文本传输协议,属于明文传输; https 是安全的超文本传输协议,是经过 SSL 加密后的传输协议安全性: https 使用了 TLS/SSL 加密,...
tiny极客赞 2阅读 2.8k评论 2
使用kubeasz部署高可用kubernetes集群
本实验采用kubeasz作为kubernetes环境部署工具,它是一个基于二进制方式部署和利用ansible-playbook实现自动化来快速部署高可用kubernetes集群的工具,详细介绍请查看kubeasz官方。本实验用到的所有虚拟机默认软...
李朝阳赞 4阅读 786
有了 NGINX 和 Kong,为什么还需要 Apache APISIX?
2021 年 5 月,云原生社区技术沙龙·广州站,API7.ai(支流科技)联合创始人 & CTO,Apache APISIX PMC 王院生在活动上做了《有了 NGINX 和 Kong,为什么还需要 Apache APISIX》的分享,以下是现场分享的文字版。...
API7_技术团队赞 1阅读 4.2k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。