爲了在內網上使用Kubernetes,有時候因爲網絡原因,需要離線進行部署。
裸機安裝
我這裏使用Ubuntu進行試驗,需要解決幾個問題:
- Ubuntu的離線安裝。下載,安裝時選擇不聯網可以正常完成,沒有問題。
-
Ubuntu的包更新,應用系統包必須更新到較新版本,否則有的軟件安裝不上。
- 這個可以通過建立本地內網的Archive鏡像來實現。
- 這個其實嘛,最好是全部抓源碼自己編譯,搞個分發版。不過難度和資源都比較大,還是吃現成的吧。
- 先鏡像下來整個最新的軟件包。參考:
- 創建Ubuntu安裝包服務鏡像的腳本,https://my.oschina.net/u/2306127/blog/1622218
-
建立Ubuntu apt的本地Mirror,https://my.oschina.net/u/2306127/blog/541895
-
使用容器技術搭建apt鏡像站,https://my.oschina.net/u/2306127/blog/1626991
-
使用IPFS搭建Ubuntu apt鏡像站點,https://my.oschina.net/u/2306127/blog/1626254
- 再把archive包目錄全部複製到內網(物理拷貝或通過網閘),然後建立mirror服務。
- 使用apt-mirror或者nginx、ipfs建立靜態網站服務即可。
- 修改/etc/apt/sources.list或該目錄下相關文件,指向到新建立的服務。
- 然後運行 sudo apt update && sudo apt upgrade -y即可更新安裝包了。
- 這個可以通過建立本地內網的Archive鏡像來實現。
-
Docker容器引擎的下載和離線安裝,這是Kubernetes運行的基礎了。
- 如果使用GPU,還需要下載Nvidia-Docker並進行安裝。
- kubeadm/kubectl/kubelet的安裝,這是Kubernetes運行的幾個基礎文件。其它的部分都已經容器化了,通過容器的離線下載進行部署。
-
Kubernetes系統容器的下載和安裝。需要幾個步驟來完成。
- 通過腳本下載(需要週轉的哈)到本地(參考 Ubuntu 18.04 LTS安裝Kubernetes 1.11)。
- 然後export到容器檔案格式。
- 複製到內部網絡環境。
- 對容器檔案解包,恢復爲Docker鏡像。
- 使用kubeadm或其它工具進行安裝。與在線安裝基本相同,需要指定安裝的版本,否則會去在線搜索。
更多方法
還有其它的辦法(滿足的需求和效果不同),包括:
- 在網絡環境下,做好虛擬機,然後整個放到內網上運行。但是,更新還需要單獨處理,而且需要注意軟件和數據的安全性。
- 使用DinD(Docker in Docker),跟虛擬機類似,不同的是整個Kubernetes集羣都運行在Docker中。
- 建立自己的操作系統分發版,把相關軟件打包進去。
其它參考
- 用kubeadm離線部署kubernetes v1.9.0,https://blog.csdn.net/u012286287/article/details/79716588
-
Kubernetes-基於Rancher進行Kubernetes的離線安裝,https://www.kubernetes.org.cn/4089.html
-
推薦,使用的centos:[K8s 1.9實踐]Kubeadm 1.9 HA 高可用 集羣 本地離線鏡像部署