離線(或本地)環境中的 Kubespray

離線(或本地)環境中的 Kubespray

我是 k8s 和 kubespray 的新手。

我的目的是在本地環境中建置 k8s 叢集。使用具有公共 IP 和互聯網訪問權限的 EC2,一切都很好。但由於更複雜的限制,我陷入了困境。以下是我的限制。

  • 1 個具有公共 IP 和網路存取權限的堡壘
  • n 個沒有公用 IP 和 Internet 存取權限的節點

根據kubespray 文件,它需要很多設定。但我的觀點是,由於 bastion 具有完整的網路存取權限,因此可以透過簡單的方法使用 kubespray 建立 k8s 叢集。

有沒有部落格或逐步操作可以做到這一點?

答案1

據我了解,如果您的堡壘可以存取公共註冊表和儲存庫,那麼您可以安裝一些 Squid 伺服器,代表您的 Kubernetes 節點代理程式查詢。

在這種情況下,這不再是斷開連接的部署,我們可以在 中設定http_proxy https_proxy和變量,使用該代理將資產從其原始位置拉出。no_proxygroup_vars/all.yml

嘗試使用類似apt-get install squid或 的內容dnf install squid。基本的 squid.conf 可能如下所示:

http_port 3128
cache_log /var/log/squid/cache.log
cache_mem 256 MB
cache_dir aufs /var/spool/squid 10240 16 256
maximum_object_size 1024 MB
cache_effective_group proxy
hosts_file /etc/hosts
logfile_rotate 4
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /var/log/squid/access.log combined
coredump_dir /var/spool/squid
error_directory /usr/share/squid/errors/en
http_access allow all
http_reply_access allow all
cache allow all
icp_access allow all

從您的 Kubernetes 節點之一測試連線:

# curl -vvv --proxy http://10.42.44.100:3128/ https://perdu.com
...
* Connected to 10.42.44.100 (10.42.44.100) port 3128 (#0)
...
* Establish HTTP proxy tunnel to perdu.com:443
...

現在,請確保您的 Kubespray 庫存確實使用該代理程式設定了正確的變數。容器運行時和作業系統包管理器配置都將使用它們。


如果由於某種原因不適合設定該代理,那麼您將需要鏡像該offline-environment.md文件中提到的所有圖像和文件。

也許為 kubectl / etcd / ... 二進位檔案和檔案設定一個 Nginx 伺服器,並運行 docker-registry 容器,鏡像這些映像。但請記住,您的容器在運行時應該正確配置,忽略不安全的註冊表錯誤(要設定的其他 Kubespray 變數),或者您的作業系統應該信任簽署您的註冊表伺服器憑證的 CA。

相關內容