自从我开始学习Kubernetes以来,我一直在使用minikube作为本地集群。但是我决定使用 kind。
几周前,我发表了关于Kubernetes上的“零停机时间”的演讲。与我的大多数演讲一样,演示中也包含一个演示。在早上排练时,该演示虽然缓慢但仍有效。在此之前的两天,我还有另一个使用Kubernetes的演示,它已经很慢了。但是我没有暗示。
在演示过程中,一切都很缓慢:当然,调度Pod的时间以及Pod的运行和删除。该演示失败了。我甚至都没有设法完全停止minikube,因此不得不停止VM。
说我很失望很轻描淡写。那是我在这个演示中的第一枪。我讨厌演示出错。
演讲结束后,我删除了集群并再次从头开始创建它。就像删除的群集一样,我使用了virtualbox驱动程序。我还使用了与以前相同的配置:4核和16 Gb。然而,调度又慢了......
我已经有了一定的兴趣寻找替代minikube。这次失败给了我正确的动力。我选择的是kind,因为有些评论很好地提及了它。
kind的名称实际上是“ k * ubernetes * in * d * ocker”的首字母缩写。因此,Docker必须在任何与Kind相关的操作之前运行。
结果,没有专用的群集IP,所有内容都直接存在localhost。但是,需要将群集显式配置为映射端口。
kind.yml
apiVersion: kind.x-k8s.io/v1alpha4 |
将容器的端口映射30002到主机的端口30002
需要在创建时通过配置:
kind create cluster --config kind.yml |
群集配置无法更改。唯一的解决方法是删除群集,然后使用新配置创建另一个群集。
当调度pod的镜像是本地的,即在注册表中不可用时,另一个重要的区别变得可见。使用minikube,可以配置环境,以便在构建镜像时将其直接加载到集群的Docker守护程序中。对于kind,需要将镜像从Docker加载到kind集群。
kind load docker-image hazelcast/hzshop:1.0 |