保姆级教程!使用k3d实现K3s高可用! (3)


了解命令:

基础命令:k3d node create

选项:

extraCPnode:k3d用于创建最终节点名称的基本名称。

role=server:设置节点的角色为控制平面。

image rancher/k3s:v1.19.3-k3s2:指定要使用的K3s镜像。

从这里可以看出,我们从不同的角度进行检查以确保新的控制平面节点正常运行。

增加了这个额外的节点之后,我们就可以进行最后的测试了:降低node0!

HA:重型装甲防撞车

node0通常是我们的KUBECONFIG所指的节点(用IP或主机名表示),因此我们的kubectl应用程序试图连接到它来运行不同的命令。

由于我们正在使用容器,所以“破坏“一个节点的最好方法是直接停止容器。

docker stop k3d-k3s-default-server-0

16.png

请注意:Docker和k3d命令会立即显示状态变化。然而,Kubernetes集群需要很短的时间才能看到状态变化为NotReady。

此外,我们的集群仍然使用Kubectl响应我们的命令。

现在是时候再次参考负载均衡器k3d所用的时间,以及它对于让我们继续访问K3s集群的重要性。

从外部连接的角度来看,虽然负载均衡器内部切换到了下一个可用节点,但我们仍使用相同的IP/主机。这种抽象为我们节省了很多经理,并且这是k3d最有用的功能之一。

让我们看一下集群的状态:

kubectl get all --all-namespaces


一切看起来正常。如果我们再具体看一下Pods,那么我们会发现,K3s通过在其他节点上重新创建运行在故障节点上的pods来自动自愈:

kubectl get pods --all-namespaces --output wide

18.png


最终,为了展示HA的强大以及k3s如何管理它,让我们重启node0,然后我们会看到它被重新纳入集群,好像什么都没有发生。

docker start k3d-k3s-default-server-0


我们的集群是稳定的并且所有节点都再次正常运行。

再次清理资源

现在我们可以删除本地HA集群,因为它已经完成了它的使命。此外,我们知道我们可以轻松创建一个新的集群。

使用以下命令即可清理我们的HA集群:

k3d cluster delete

20.png

总 结

虽然我们在本地、容器中创建了单节点和HA集群,我们仍然可以看到K3s在新的etcd嵌入式DB下的表现,如果我们在裸机或虚拟机上部署K3s,其作用方式相同。

也就是说,k3d在管理方面帮助很大。它默认创建了一个负载均衡器,允许永久连接到K3s集群,同时抽象了所有的任务。如果它部署在容器外,我们需要手动完成这一步骤。

在本文中,我们已经看到了使用k3d设置高可用性K3s集群是多么容易。如果你尚未尝试,强烈推荐你根据本教程进行实践,它们都是开源且易用的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfpsg.html