天天看點

容器雲之K8s自動化安裝方式的選擇

目前kubernetes 已經發展到1.5的時代,但在這之前學習和使用kubernetes還是走了不少彎路,第一個問題就是安裝,也許你會說安裝很簡單。照着官網或網上抄一篇就可以裝上了……   

而我們使用kubernetes是1.1和1.2版本的時候,那時候最權威的文檔應該就是kubernetes.io官網文檔……,然而我們在官網進行問題檢索的時候會出現(這張圖來源網絡)

容器雲之K8s自動化安裝方式的選擇

這張圖已經很明說明問題了……由于安裝過程中的存在的問題,造成之後在使用過程中的一系列問題……

随着kubernetes的發展(目前已經到達1.5 beta版),和之前相比官方文檔也已經更加完善。同時也出現了多種安裝kuberntets的方法,在這麼多種的安裝法我們該如何選擇呢?

今天為大家介紹5種安裝方法

容器雲之K8s自動化安裝方式的選擇

minikube

容器雲之K8s自動化安裝方式的選擇

minikube 由 CoreOS 提供在單機上構件 kubernetes 叢集。minikube指令可以運作在windows/linux/macos等平台,使用minikube搭建本地叢集是非常友善的,同時minikube提供了完整的kubernetes叢集的功能。對于初識者minikube是一種很好的安裝方式,而且上手也非常快。但問題在于minikube安裝的時候需要連接配接網際網路,而且網絡需要足夠好……道理很簡單。

容器雲之K8s自動化安裝方式的選擇

這是官網使用minikube來啟動kubernetes叢集。有興趣的可以檢視github關于minikube的資訊。

kubeadm

容器雲之K8s自動化安裝方式的選擇

kubeadm 可以運作在實體機、虛拟機以及雲主機,并且可以與chef或puppet配合可以完成自動化部署安裝。kubeadm與minikube一樣,你的網絡要好,原因也很簡單……

kubeadm 是 kubernetes 在1.4版推出安裝 kubernetes 叢集。目前還處于alpha,不建議在生産環境使用。本人在centos系統上安裝測試時會出現無法連接配接到kubeadm所需要的yum源。即使按照官網配置了源也行出現無法下載下傳源,最後是找到三方源才能順利安裝完成。在安裝過程中可選的配置參數太少,是以基本都需要在使用過程中自行修改。

容器雲之K8s自動化安裝方式的選擇
容器雲之K8s自動化安裝方式的選擇

如圖就是官方說明添加yum源,ubuntu沒測試過。

hyperkube image

容器雲之K8s自動化安裝方式的選擇

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。

容器雲之K8s自動化安裝方式的選擇
容器雲之K8s自動化安裝方式的選擇

通過設定kubelet 的–config目錄。kubelet 會自動運作此目錄中所添加的元件。在這裡需要注意是,在kubernetes V1.3的版本,需要手動建立kube-system的namespace 而V1.4版本不需要配置。

docker

容器雲之K8s自動化安裝方式的選擇

docker images 由 kubernetes 在發行版本中提供 docker images,并通過 docker images 運作 kubernetes 元件。所需要的鏡像包在kubernetes-server-linux-amd64.tar.gz裡。

SystemD

第五種方法通過SystemD來實作,這也是我們在生産和測試環境使用的方法。

容器雲之K8s自動化安裝方式的選擇

Like it or not, systemd is here to stay.

看完上圖也許我會明白systemd在系統中的重要做用。

在這之前,我們在Linux下使用容器你會發現,不能挑核心,不能加載核心子產品,不能挂載檔案系統,不能調整核心參數,不能改網絡配置。如果你在運作容器時使用了 docker run –privileged 那我隻能說祝你好運。

如果容器就是通過cgroups堆出來,那麼容器本身的/sys /dev 和 /proc 存在隔離性的問題。

是以通systemd+selinux 來進行管理,而kubernetes隻需要調用systemd就完成對于容器的管理。

容器雲之K8s自動化安裝方式的選擇

是以我在基于systemdd在自的環境編寫了安裝kubernetes各元件的腳本。

容器雲之K8s自動化安裝方式的選擇

安裝腳本主要完成上圖的安裝和配置。

本文轉移開源中國-

容器雲之K8s自動化安裝方式的選擇

繼續閱讀