microk8s挺好用
對于想要上k8s大船的同學們來說,一路上有幾個大坑是避不掉的
鏡像拉取困難
各種k8s以外的第三方組件誰是誰,要不要安裝,怎么安裝,怎么配置?
各種工具平臺,都號稱能管好k8s,選哪個?
這些坑,在我的k8s之路上都遇到過,解決過,在我看來,microk8s解決得最好。
最為簡便的用上k8s的辦法,應該是docker desktop,直接安裝了啟用k8s就行,但是很耗內(nèi)存,應該也是走的虛擬機的實現(xiàn)方式。但是canonical的實現(xiàn)方式不一樣,基于snap構建的microk8s,封裝了kubelite
和kubectl
,容器引擎用的是containerd。containerd好呀,好就好在它支持tag操作,使用起來和docker差別幾乎沒有,便于曲線救國拉鏡像。
安裝
安裝很簡單,只要使用如下命令即可
然后在安裝命令后面加上--channel參數(shù)即可,像下面這樣
snap現(xiàn)在號稱支持了其他linux系統(tǒng),但是對于microk8s來說,非ubuntu系統(tǒng)上snap安裝的版本啟動會出問題,粗看下來應該是python版本的差異導致,所以還是要統(tǒng)一使用ubuntu的版本。
snap默認是自動更新應用的,每次更新后所需的鏡像不一定保證相同,所以需要禁用其對于microk8s的自動更新,這是長期使用最值得注意的事,具體做就是將microk8s從snap自動更新中標記出來:
如果對于已經(jīng)安裝的版本不滿意,想要換個版本,同樣也是使用refresh子命令
啟動
安裝完成之后不用急著啟動,因為要拉取鏡像。microk8s已經(jīng)體會到了中國區(qū)用戶拉取鏡像的痛苦,所以它對于k8s的鏡像要求不多,完整的鏡像列表在github中可以看到:https://github.com/canonical/microk8s/blob/1.22/build-scripts/images.txt
根據(jù)這個列表,可以在docker hub中找到對應的替代,我找到的替代如下
docker.io/calico/cni:v3.19.1
docker.io/calico/kube-controllers:v3.17.3
docker.io/calico/node:v3.19.1
docker.io/calico/pod2daemon-flexvol:v3.19.1
docker.io/cdkbot/hostpath-provisioner:1.1.0
docker.io/coredns/coredns:1.8.0
無需替代
k8s.gcr.io/ingress-nginx/controller:v1.2.0
=> docker.io/giantswarm/ingress-nginx-controller:v1.2.0
k8s.gcr.io/metrics-server/metrics-server:v0.5.0
=> docker.io/bitnami/metrics-server:0.5.0
k8s.gcr.io/pause:3.1
=> docker.io/rancher/pause:3.1
只需要3個鏡像需要替換,使用microk8s.ctr i pull
命令拉取下來之后,再使用microk8s.ctr i tag
改頭換面就行了。之后再啟動microk8s就基本沒什么問題了。
如果你在一臺機器上把鏡像下載完成了,啟動起來了,其他機器上不需要再逐一操作了,使用microk8s.images export-local
和microk8s.images import
就可以把本機的鏡像導出為tar文件并復制到其他機器上去導入。
最后,使用microk8s.dashboard-proxy
就可以部署并代理k8s的dashboard出來。
感言
并不是說不需要理解k8s本身和其他組件原理了,microk8s只是將門臉做得簡潔了,登堂入室還是靠繼續(xù)努力。
如果出了問題,記得到官方文檔里去翻翻,https://microk8s.io/docs