前言
在某些 air gap 場景中,往往需要離線或使用代理 (Proxy), 例如:
- 需要通過 Proxy pull 容器鏡像:
- Docker Hub:
docker.io - Quay:
quay.io - GCR:
gcr.io - GitHub 鏡像庫:
ghcr.io
- Docker Hub:
- 在某些企業環境中,需要通過代理訪問外部服務
Docker 如何配置代理想必大家都很清楚,但是自從 Kubernetes 1.20 版本以后開始棄用 Docker, containerd 逐漸成為主流 CRI.
所以我們下面介紹一下如何配置 contaienrd 的 Proxy.
??Notes:
還有一種場景需要 containerd 配置 proxy, 就是將 Dragonfly 和 containerd 結合使用 的時候,
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 配置:
- 本地地址和網段:
localhost和127.0.0.1或127.0.0.0/8 - Kubernetes 的默認域名后綴:
.svc和.cluster.local - Kubernetes Node 的網段甚至所有應該不用 proxy 訪問的 node 網段:
<nodeCIDR> - APIServer 的內部 URL:
<APIServerInternalURL> - Service Network:
<serviceNetworkCIDRs> - (如有)etcd 的 Discovery Domain:
<etcdDiscoveryDomain> - Cluster Network:
<clusterNetworkCIDRs> - 其他特定平臺相關網段(如 DevOps, Git/制品倉庫,..):
<platformSpecific> - 其他特定
NO_PROXY網段:<REST_OF_CUSTOM_EXCEPTIONS> - 常用內網網段:
10.0.0.0/8172.16.0.0/12192.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 的最佳實踐,
本文由東風微鳴技術博客 EWhisper.cn 撰寫!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/536023.html
標籤:其他
上一篇:新悅網路SIP2700V SIP網路音頻模塊,可應用于高質量音樂流媒體播放
下一篇:二維碼的秘密(生成原理)
