1. 程式人生 > >如何hack一下Rancher Kubernetes_Kubernetes中文社群

如何hack一下Rancher Kubernetes_Kubernetes中文社群

在Rancher中,由於Kubernetes是基於Cattle引擎來部署,所以在Kubernetes部署完成之後,我們可以通過Link Graph來很清晰地看到整體的部署情況。

20161008175728

既然基於Cattle引擎部署,也就是說需要兩個compose檔案,k8s引擎的compose檔案放在https://github.com/rancher/rancher-catalog/tree/master/templates 下面,這裡面有兩個相關目錄kubernetes與k8s,k8s是Rancher1.2開始使用的,而kubernetes則是Rancher1.2之後開始使用的。

20161008175742

為了我們可以自己hack一下rancher k8s的部署,我們可以在github上fork一下rancher-catalog,同時還需要修改一下Rancher中預設的catalog的repo地址,這個可以在 http://<rancher-server>/v1/settings 頁面下,尋找名為 catalog.url 的配置項,然後進入編輯修改。比如我這裡將library庫的地址換成了自己的 https://github.com/niusmallnan/rancher-catalog.git 。

20161008175750

此時,我們就可以修改了,找一個比較實用的場景。我們都知道k8s的pod都會依賴一個基礎映象,這個映象預設的地址是被GFW擋在牆外了,一般我們會把kubelet的啟動引數調整一下,以便重新指定這個映象地址,比如指定到國內的映象源上 –pod-infra-container-image=index.tenxcloud.com/google_containers/pause:2.0 。如果我們要讓rancher k8s部署時自動加上該引數,可以直接修改私有rancher-catalog中的k8s compose檔案。

20161008175757

修改之後稍等片刻(主要是為了讓rancher-server更新到新的catalog compose檔案),新增一個k8s env並在其中新增host,k8s引擎就開始自動部署,部署完畢後,我們可以看到Kubernetes Stack的compose檔案,已經有了–pod-infra-container-image這個啟動引數。

20161008175803

如此我們在新增pod時再也不用手動匯入pod基礎映象了。

在compose file中,部署k8s的基礎映象是rancher/k8s,這個映象的Dockerfile在rancher維護的k8s分支中,如在rancher-k8s 1.2.4分支中可以看到:

20161008175810

這樣如果想對rancher-k8s發行版進行深度定製,就可以重新build相關映象,通過rancher-compose來部署自己的發行版。

總結

本文寫於Rancher1.2行將釋出之際,1.2版本是非常重大的更新,Rancher會支援部署原生的K8s版本,同時CNI網路和Cloud Provider等都會以外掛方式,使用者可以自己定義,並且在UI上都會有很好的體現。只要瞭解Rancher部署K8s的原理和過程,我們就可以定製非常適合自身使用的k8s,通過Rancher來部署自定義的k8s,我們就可以很容易的擴充套件了k8s不擅長的UI、Catalog、使用者管理、審計日誌維護等功能,這也是本文的目的。