天天看點

如何hack一下Rancher Kubernetes

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

如何hack一下Rancher Kubernetes
既然基于Cattle引擎部署,也就是說需要兩個compose檔案,k8s引擎的compose檔案放在 https://github.com/rancher/ra... 下面,這裡面有兩個相關目錄kubernetes與k8s,k8s是Rancher1.2開始使用的,而kubernetes則是Rancher1.2之後開始使用的。
如何hack一下Rancher Kubernetes
為了我們可以自己hack一下rancher k8s的部署,我們可以在github上fork一下rancher-catalog,同時還需要修改一下Rancher中預設的catalog的repo位址,這個可以在 http://<rancher-server>... 頁面下,尋找名為 catalog.url 的配置項,然後進入編輯修改。比如我這裡将library庫的位址換成了自己的 https://github.com/niusmallna...
如何hack一下Rancher Kubernetes
此時,我們就可以修改了,找一個比較實用的場景。我們都知道k8s的pod都會依賴一個基礎鏡像,這個鏡像預設的位址是被GFW擋在牆外了,一般我們會把kubelet的啟動參數調整一下,以便重新指定這個鏡像位址,比如指定到國内的鏡像源上 --pod-infra-container-image=index.tenxcloud.com/google_containers/pause:2.0 。如果我們要讓rancher k8s部署時自動加上該參數,可以直接修改私有rancher-catalog中的k8s compose檔案。
如何hack一下Rancher Kubernetes
修改之後稍等片刻(主要是為了讓rancher-server更新到新的catalog compose檔案),添加一個k8s env并在其中添加host,k8s引擎就開始自動部署,部署完畢後,我們可以看到Kubernetes Stack的compose檔案,已經有了--pod-infra-container-image這個啟動參數。
如何hack一下Rancher Kubernetes

如此我們在添加pod時再也不用手動導入pod基礎鏡像了。

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

如何hack一下Rancher Kubernetes
這樣如果想對rancher-k8s發行版進行深度定制,就可以重新build相關鏡像,通過rancher-compose來部署自己的發行版。

總結

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

本文轉自中文社群-

如何hack一下Rancher Kubernetes

繼續閱讀