从Minikube到Kind的有趣踩坑经历 (frankel)

21-03-20 banq

自从我开始学习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
kind: Cluster
nodes:
  - role: control-plane
    extraPortMappings:
      - containerPort: 30002  
        hostPort: 30002       
  - role: worker

将容器的端口映射30002到主机的端口30002

 

需要在创建时通过配置:

kind create cluster --config kind.yml

群集配置无法更改。唯一的解决方法是删除群集,然后使用新配置创建另一个群集。

 

当调度pod的镜像是本地的,即在注册表中不可用时,另一个重要的区别变得可见。使用minikube,可以配置环境,以便在构建镜像时将其直接加载到集群的Docker守护程序中。对于kind,需要将镜像从Docker加载到kind集群。

kind load docker-image hazelcast/hzshop:1.0

 

1
猜你喜欢