目前kubernetes 已經發展到1.5的時代,但在這之前學習和使用kubernetes還是走了不少彎路,第一個問題就是安裝,也許你會說安裝很簡單。照着官網或網上抄一篇就可以裝上了……
而我們使用kubernetes是1.1和1.2版本的時候,那時候最權威的文檔應該就是kubernetes.io官網文檔……,然而我們在官網進行問題檢索的時候會出現(這張圖來源網絡)

這張圖已經很明說明問題了……由于安裝過程中的存在的問題,造成之後在使用過程中的一系列問題……
随着kubernetes的發展(目前已經到達1.5 beta版),和之前相比官方文檔也已經更加完善。同時也出現了多種安裝kuberntets的方法,在這麼多種的安裝法我們該如何選擇呢?
今天為大家介紹5種安裝方法
minikube
minikube 由 CoreOS 提供在單機上構件 kubernetes 叢集。minikube指令可以運作在windows/linux/macos等平台,使用minikube搭建本地叢集是非常友善的,同時minikube提供了完整的kubernetes叢集的功能。對于初識者minikube是一種很好的安裝方式,而且上手也非常快。但問題在于minikube安裝的時候需要連接配接網際網路,而且網絡需要足夠好……道理很簡單。
這是官網使用minikube來啟動kubernetes叢集。有興趣的可以檢視github關于minikube的資訊。
kubeadm
kubeadm 可以運作在實體機、虛拟機以及雲主機,并且可以與chef或puppet配合可以完成自動化部署安裝。kubeadm與minikube一樣,你的網絡要好,原因也很簡單……
kubeadm 是 kubernetes 在1.4版推出安裝 kubernetes 叢集。目前還處于alpha,不建議在生産環境使用。本人在centos系統上安裝測試時會出現無法連接配接到kubeadm所需要的yum源。即使按照官網配置了源也行出現無法下載下傳源,最後是找到三方源才能順利安裝完成。在安裝過程中可選的配置參數太少,是以基本都需要在使用過程中自行修改。
如圖就是官方說明添加yum源,ubuntu沒測試過。
hyperkube image
hyperkube images 由 Google 推出将 kubernetes 各元件以容器方式運作。容器可以有(docker/rkt等)。使用 hyperkube images 需要提前配置 kubelet 元件。最終通過kubelet将kubenetes部署各元件。這種安裝方法的好處是:隻要系統可運作容器,就可以通過hyperkube images 來運作kubernetes元件。
通過 hyperkube images 部署kubernetes元件,首先你的網絡要好,原因很簡單……或者你提前在本地準備好 hyperkube images 。
前面說過使用 hyperkube images 需要使用 kubelet 元件。運作kubelet元件可以有兩種方法:docker和systemd。
通過設定kubelet 的–config目錄。kubelet 會自動運作此目錄中所添加的元件。在這裡需要注意是,在kubernetes V1.3的版本,需要手動建立kube-system的namespace 而V1.4版本不需要配置。
docker
docker images 由 kubernetes 在發行版本中提供 docker images,并通過 docker images 運作 kubernetes 元件。所需要的鏡像包在kubernetes-server-linux-amd64.tar.gz裡。
SystemD
第五種方法通過SystemD來實作,這也是我們在生産和測試環境使用的方法。
Like it or not, systemd is here to stay.
看完上圖也許我會明白systemd在系統中的重要做用。
在這之前,我們在Linux下使用容器你會發現,不能挑核心,不能加載核心子產品,不能挂載檔案系統,不能調整核心參數,不能改網絡配置。如果你在運作容器時使用了 docker run –privileged 那我隻能說祝你好運。
如果容器就是通過cgroups堆出來,那麼容器本身的/sys /dev 和 /proc 存在隔離性的問題。
是以通systemd+selinux 來進行管理,而kubernetes隻需要調用systemd就完成對于容器的管理。
是以我在基于systemdd在自的環境編寫了安裝kubernetes各元件的腳本。
安裝腳本主要完成上圖的安裝和配置。
本文轉移開源中國-
容器雲之K8s自動化安裝方式的選擇