home lab with talos and esxi
之前介绍esxi已经准备好了,打算创建一个k8s cluster,大概有3个working nodes和1个control panel。本来考虑尝试k3s,毕竟从名字上看就会比k8s简单一些,而且他们也说是home lab适合的场景,我在找用什么os的时候,看到有人又提到了talos,于是去看了看。是k8s的os,就比其他general purpose os要好那么一点,于是就考虑用这个了。
有针对esxi的部署文档:https://docs.siderolabs.com/talos/v1.11/platform-specific-installations/virtualized-platforms/vmware#manual-approach
需要准备好govc (vmware cli),talosctl (talos cli,类似kubectl作用),govc其实有些操作是针对vCenter的,有一些是Hypervisor(也就是esxi),我没有部署vCenter,部署时用的vmware.sh用到了,就需要改一下脚本或者手动部署。
talos提供的部署过程大概是:用vmware.sh先上传ova到vCenter,再从部署到esxi,镜像来自vCenter,所以如果没有vCenter的话,就需要直接部署到esxi,可以使用govc import.ova命令,但是,esxi的license如果限制某些api使用的话,会报错。。。我用的free license就正好限制了,不得不网上找了个paid license,部署后又换回去了。。。
用脚本部署好后,可能需要解决一下无法访问gcr.io的问题,我看到有些地方使用了从gcr.io下载镜像,以后部署一些应用可能也无法避免,于是我又开了一个ubuntu 24.04虚拟机并安装了dae做透明代理,在路由器上把talos的4个vm的gateway改到了透明代理,但我做完这些的时候从console看这4个vm都已经显示healthy了,只是control panel显示了stage是booting状态。
按照talos getting started文档 走了一边流程,发现还没执行bootstrap,执行后就好了。
我的control panel一开始设置了静态ip和gateway,以至于我无法通过路由器自动设置它们,而且我还不知道怎么登到control panel(via ssh),似乎这也挺好,只能通过代码改动,类似terraform那样变更。talos提供了几种方式,但我也不太想写json patch语法。最后通过执行talosctl apply-config(类似kubectl apply)完成了改动。
talosctl apply-config -f controlplane.yaml -e <your endpoint ip>
-n <node ip> -m reboot要先把controlplane.yaml改成你想要的样子,-e endpoint ip通常是control plane的ip,这里node ip也是control plane,因为我就是要改control plane,默认不reboot,我这个应该是需要的吧,所以加了mode reboot,就看到重启后,ip和gw来自dhcp了。