使用k3d创建集群
目标
- 了解什么是 Kubernetes 集群。
- 了解什么是 K3d。
- 在您的计算机上启动一个 Kubernetes 集群
官方文档使用Minikube来做为学习环境,但Minikube在系统重启后,集群就会宕机,不利于长期使用。我们将使用k3d来替代Minikube。
Kubernetes Clusters
Kubernetes 协调一个高可用的计算机集群,这些计算机连接在一起作为一个整体工作。Kubernetes 中的抽象概念允许您将容器化应用程序部署到集群中,而无需将它们特定地绑定到单个机器上。为了利用这种新的部署模型,应用程序需要以一种将它们与单个主机解耦的方式进行打包:它们需要被容器化。与过去将应用程序作为深度集成到主机中的软件包直接安装到特定机器上的部署模型相比,容器化应用程序更加灵活和可用。Kubernetes 以更高效的方式自动在集群中对应用程序容器进行分配和调度。Kubernetes 是一个开源平台,并且已做好生产准备。
一个 Kubernetes 集群由两种类型的资源组成:
- 控制平面协调集群。
- 节点是运行应用程序的工作节点。
Cluster Diagram

控制平面负责管理集群。控制平面协调集群中的所有活动,例如调度应用程序、维持应用程序的期望状态、扩展应用程序以及推出新的更新。
节点是在 Kubernetes 集群中作为工作机器的虚拟机或物理计算机。每个节点都有一个 Kubelet,它是用于管理节点并与 Kubernetes 控制平面进行通信的代理。节点还应该具有处理容器操作的工具,例如 containerd 或 CRI-O。处理生产流量的 Kubernetes 集群应该至少有三个节点,因为如果一个节点出现故障,那么一个 etcd 成员和一个控制平面实例都会丢失,从而影响冗余性。您可以通过添加更多控制平面节点来降低此风险。
控制平面管理集群以及用于托管正在运行的应用程序的节点。
当您在 Kubernetes 上部署应用程序时,您告知控制平面启动应用程序容器。控制平面将容器调度到集群的节点上运行。诸如 Kubelet 之类的节点级组件使用控制平面公开的 Kubernetes API 与控制平面进行通信。最终用户也可以直接使用 Kubernetes API 与集群进行交互。
Kubernetes 集群可以部署在物理机或虚拟机上。为了开始进行 Kubernetes 开发,您可以使用 Minikube。Minikube 是一种轻量级的 Kubernetes 实现,它在您的本地机器上创建一个虚拟机,并部署一个仅包含一个节点的简单集群。Minikube 可用于 Linux、macOS 和 Windows 系统。Minikube CLI 为处理您的集群提供了基本的引导操作,包括启动、停止、状态和删除。
既然您对 Kubernetes 有了更多了解,那么请访问 Hello Minikube,在您的计算机上进行尝试。
创建k3d环境
点击Create My Playground 开始创建新环境,这通常需要1~2分钟。
当WebTerminal就绪后,你可以复制命令行到终端上执行,或直接点击最右侧的>按钮自动发送命令到当前的终端上执行。
先切换到root帐号:
sudo -i创建一个两个节点的k8s集群:
k3d cluster create kubernetes-basics --agents 2 --registry-config /root/k3d-registries.yaml查看节点:
kubectl get node看到以下输出后代表学习集群创建成功,可以进入下节开始学习。
NAME STATUS ROLES AGE VERSION
k3d-kubernetes-basics-agent-0 Ready <none> 24s v1.31.5+k3s1
k3d-kubernetes-basics-agent-1 Ready <none> 25s v1.31.5+k3s1
k3d-kubernetes-basics-server-0 Ready control-plane,master 31s v1.31.5+k3s1