公众号关注 「奇妙的 Linux 世界」
设为「星标」,每天带你玩转 Linux !
前言
在某些 air gap 场景中,往往需要离线或使用代理 (Proxy), 例如:
1.需要通过 Proxy pull 容器镜像:1.Docker Hub: docker.io
2.Quay: quay.io
3.GCR: gcr.io
4.GitHub 镜像库:ghcr.io
2.在某些企业环境中,需要通过代理访问外部服务
Docker 如何配置代理想必大家都很清楚,但是自从 Kubernetes 1.20 版本以后开始弃用 Docker[1], containerd 逐渐成为主流 CRI. 所以我们下面介绍一下如何配置 contaienrd 的 Proxy.
📝Notes:
还有一种场景需要 containerd 配置 proxy, 就是将 Dragonfly 和 containerd 结合使用[2] 的时候。
Containerd 配置 Proxy 步骤
这里以通过 systemd 安装的 containerd 为例。
containerd 的配置一般位于 /etc/containerd/config.toml
下,service 文件位于:/etc/systemd/system/containerd.service
配置 Proxy 可以通过 service 环境变量方式配置,具体如下:
创建或编辑文件:/etc/systemd/system/containerd.service.d/http-proxy.conf
内容如下:
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost"
配置后保存重启即可:
systemctl restart containerd.service
最佳实践:Proxy 中 NO_PROXY
的推荐配置
在配置 Proxy 时要特别注意,哪些要走 Proxy, 哪些不走 Proxy 要非常明确,避免出现网络访问异常甚至业务异常。
这里有个推荐 NO_PROXY
配置:
1.本地地址和网段:localhost
和 127.0.0.1
或 127.0.0.0/8
2.Kubernetes 的默认域名后缀:.svc
和 .cluster.local
3.Kubernetes Node 的网段甚至所有应该不用 proxy 访问的 node 网段:<nodeCIDR>
4.APIServer 的内部 URL: <APIServerInternalURL>
5.Service Network: <serviceNetworkCIDRs>
6.(如有)etcd 的 Discovery Domain: <etcdDiscoveryDomain>
7.Cluster Network: <clusterNetworkCIDRs>
8.其他特定平台相关网段(如 DevOps, Git/制品仓库。..): <platformSpecific>
9.其他特定 NO_PROXY
网段:<REST_OF_CUSTOM_EXCEPTIONS>
10.常用内网网段:1.10.0.0.0/8
2.172.16.0.0/12
3.192.168.0.0/16
最终配置如下:
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local,.ewhisper.cn,<nodeCIDR>,<APIServerInternalURL>,<serviceNetworkCIDRs>,<etcdDiscoveryDomain>,<clusterNetworkCIDRs>,<platformSpecific>,<REST_OF_CUSTOM_EXCEPTIONS>"
🎉🎉🎉
总结
Kubernetes 1.20 以上,企业 air gap 场景下可能会需要用到 containerd 配置 Proxy. 本文介绍了其配置方法,以及配置过程中 NO_PROXY
的最佳实践。
References
[1]
Kubernetes 1.20 版本以后开始弃用 Docker: https://ewhisper.cn/posts/36509/[2]
Dragonfly 和 containerd 结合使用: https://d7y.io/docs/setup/runtime/containerd/proxy/
本文转载自:「东风微鸣技术博客」,原文:https://url.hi-linux.com/2xDJ8,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。
最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。
你可能还喜欢
点击下方图片即可阅读
Phantun: 一款突破运营商 QoS 封锁的高性能 UDP 流量伪装工具,支持 WireGuard 协议
点击上方图片,『美团|饿了么』外卖红包天天免费领
更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!