Ubuntu 服务器上部署 Kubernetes 集群
Kubernetes 很难。从头到尾,你会发现路上有很多障碍,有时,你可能会想放弃。
实际上,有一种非常简单的方法来部署 Kubernetes 集群,它可以用于开发目的甚至生产——这种方法归功于 Microk8s。
Microk8s 由 Canonical 创建,作为将 Kubernetes 环境部署到商品硬件或第三方云主机(如 AWS、Azure、Rackspace 和 Linode)的简化方法。Microk8s 是最简单的工具,可以轻松地与 Kubernetes 保持同步。
因为它非常简单,你可能会认为 Microk8s 仅限于单节点开发环境。这错了。Microk8s 的开发人员实际上使将实例集群在一起成为可能。举个例子,只需要三个 Microk8s 节点就可以将故障切换添加到组合中。
这正是笔者要展示的如何在 Microk8s 的帮助下部署 Kubernetes 集群。
要求
笔者将在 Ubuntu Server 22.04 上演示这个过程,但这个过程将在任何支持快照包的操作系统上运行。你需要三个位于同一网络上的 Ubuntu Server 实例和一个具有 sudo 权限的用户。
安装 Microk8s
你要做的第一件事是在每个节点上安装 Microk8s。因此,登录到第一个节点并发出以下命令:
sudo snap install microk8s --classic
对每个节点执行相同的操作。此外,你还需要使用以下命令将用户添加到 microk8s 组:
sudo usermod -aG microk8s $USER
注销并重新登录,以便更改生效。在每个节点上执行此操作。
使用以下命令创建新目录:
mkdir ~/.kube
使用以下命令为新目录授予适当的权限:
sudo chown -f -R $USER ~/.kube
配置主机名和主机
接着,需要在每个节点上配置主机名和主机文件。要设置主机名,你可以发出如下命令:
sudo hostnamectl set-hostname microk8scontroller
你可以将系统命名为任何喜欢的名称(如 microk8scontroller、microk8snode1、microk8 snode2 等)。
然后,你需要在每台机器上配置主机文件。使用以下命令打开该文件进行编辑:
sudo nano /etc/hosts
在该文件的底部,添加以下行(使用主机名和 IP 地址):
192.168.1.100 microk8scontroller
192.168.1.101 microk8snode1
192.168.1.102 microk8snode2
你需要将上述内容添加到每个节点的主机文件中。保存并关闭文件。
此时,如果你可以通过在控制器节点上运行命令来验证到目前为止一切都正常运行:
microk8s kubectl describe node
你应该看到控制器节点的详细描述。
如何连接节点
与标准 Kubernetes 不同,这个过程要简单得多。从控制器节点发出以下命令:
microk8s add-node
上面的输出将包括 join 命令,该命令如下所示:
microk8s join 192.168.1.137:25000/d6c656de35d466889c92cebcaca0d843/30b781bb3e78
转到第一个节点并运行 join 命令。完成后,转到下一个节点并运行相同的命令。继续执行此操作,直到将所有节点加入集群。
然后检查以确保所有节点都已使用命令连接:
microk8s kubectl get nodes
你应该看到类似的输出:
microk8scontroller Ready <none> 23d v1.24.3-2+63243a96d1c393
microk8snode1 Ready <none> 23d v1.24.3-2+63243a96d1c393
microk8snode2 Ready <none> 23d v1.24.3-2+63243a96d1c393
你还可以使用以下命令验证集群的状态:
microk8s status
上述命令的输出应该如下所示:
microk8s is running
high-availability: yes
datastore master nodes: 192.168.1.100:19001
datastore standby nodes: none
要注意,只有当有 3 个或更多节点时,你才会看到高可用性列为“是”。如果节点少于三个,则高可用性将被列为“否”。如果你仅将其用作开发集群(并且不需要立即使用 HA),则可以仅使用两个节点。否则,请确保添加更多以享受该功能。
将 Hello World 部署到集群
作为一个快速测试,让我们将 Hello World 应用程序部署到集群。在控制器上,运行以下命令:
microk8s kubectl create deployment hello-world --image=tutum/hello-world:latest
microk8s kubectl expose deployment hello-world --type=NodePort --port=80 --name=hello-world-service
microk8s kubectl port-forward -n default service/hello-world-service 8080:80
最后一个命令不会将终端返回,但会显示端口转发正在运行,输出如下:
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80
Handling connection for 8080
从第二个终端登录控制器节点并发出以下命令:
curl localhost:8080
你将看到包含<h1>Hello world</h1>的输出。当然,如果在桌面上工作,你可以打开浏览器并将其指向此页面,看到打印的 Hello World 页面。
Kube 新朋友们,这就是如何在 Microk8s 的帮助下快速部署 Kubernetes 集群。这是一种很好的快速启动和运行集群的方法,你可以有更多的时间开发和花更少的时间管理。
版权声明: 本文为 InfoQ 作者【CTO技术共享】的原创文章。
原文链接:【http://xie.infoq.cn/article/a26739a90b304ef6f63521fc7】。未经作者许可,禁止转载。
评论