如何在 Ubuntu 22.04 上设置 K3s Kubernetes 集群
如何在 Ubuntu 22.04 上设置 K3s Kubernetes 集群

如何在 Ubuntu 22.04 上设置 K3s Kubernetes 集群

0 股票
0
0
0
0

如何在 Ubuntu 22.04 上设置 K3s Kubernetes 集群

介绍

Kubernetes 是业界最常用的容器编排工具之一。然而,从零开始搭建 Kubernetes 集群可能是一项艰巨的任务,需要大量的配置。此外,搭建 Kubernetes 集群的方法有很多,但除非你想创建生产集群,否则很多方法都很耗时。.

为了简化 Kubernetes 集群的搭建,并使其能够部署在资源受限的远程位置(从而使其成为边缘计算的理想选择),Rancher Labs 开发了 K3s。K3s 是一个轻量级的 Kubernetes 发行版,只需一个小型二进制文件,即可在几分钟内安装 Kubernetes 集群。.

在本教程中,您将学习如何在 Ubuntu 上安装 K3s 以及 K3s 中可用的其他配置选项。.

先决条件

要完成本教程,您需要:

按照 Ubuntu 22.04 服务器初始设置指南,已设置好一台至少配备 1 GB 内存的 Ubuntu 22.04 服务器。.

步骤 1 - 安装 K3s

在此步骤中,您将在 Ubuntu 机器上安装最新版本的 K3s。.

如果您使用的是基于密码的登录方式,请使用以下命令以 sudo 用户身份(在本教程中为 sammy)登录到您的服务器:

$ ssh sammy@your_server_ip

سپس با استفاده از دستور زیر K3 را نصب کنید.

$ curl -sfL https://get.k3s.io | sh -

系统会提示您输入用户密码以运行脚本。.

此命令使用 curl 下载位于 https://get.k3s.io 的脚本,并通过管道将其传递给 `--sh` 参数来运行该脚本。脚本运行后,K3s 集群安装将开始,并使用默认配置选项创建一个单节点 Kubernetes 集群。.

您将得到类似这样的输出:

[secondary_label Output]

[INFO] Finding release for channel stable

[INFO] Using v1.27.7+k3s2 as release

[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.27.7+k3s2/sha256sum-amd64.txt

[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.27.7+k3s2/k3s

[INFO] Verifying binary download

[INFO] Installing k3s to /usr/local/bin/k3s

[INFO] Skipping installation of SELinux RPM

[INFO] Creating /usr/local/bin/kubectl symlink to k3s

[INFO] Creating /usr/local/bin/crictl symlink to k3s

[INFO] Creating /usr/local/bin/ctr symlink to k3s

[INFO] Creating killall script /usr/local/bin/k3s-killall.sh

[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh

[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env

[INFO] systemd: Creating service file /etc/systemd/system/k3s.service

[INFO] systemd: Enabling k3s unit

Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.

[INFO] systemd: Starting k3s

...

脚本输出显示了安装脚本安装和启动集群的步骤。接下来,您将使用 systemctl 命令检查 K3s 服务的状态,以确定它是否正在运行。.

$ systemctl status k3s

此命令显示状态为活动(正在运行):

[secondary_label Output]

● k3s.service - Lightweight Kubernetes

Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: enabled)

Active: active (running) since Mon 2023-11-27 16:52:01 UTC; 19s ago

Docs: https://k3s.io

Process: 8396 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exi>

Process: 8398 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)

Process: 8399 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)

Main PID: 8400 (k3s-server)

Tasks: 20

Memory: 467.3M

CPU: 12.952s

CGroup: /system.slice/k3s.service

├─8400 "/usr/local/bin/k3s server"

└─8421 "containerd " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >

...

至此,您已在 Ubuntu 上安装了 K3s,创建了一个单节点 Kubernetes 集群。接下来,您将查看集群上部署的默认 Kubernetes 对象。.

步骤 2 – 查看 Kubernetes 默认对象

在此步骤中,您将查看安装 K3s 后部署的默认 Kubernetes 对象。.

运行以下命令即可查看集群中 kube 命名空间下部署的所有 Kubernetes 对象。kubectl 会在 K3s 安装过程中自动安装,因此无需单独安装。.

$ sudo kubectl get all -n kube-system

您将得到类似这样的输出:

[secondary_label Output]

NAME                                         READY   STATUS      RESTARTS   AGE

pod/local-path-provisioner-957fdf8bc-t8vpx   1/1     Running     0          4m34s

pod/coredns-77ccd57875-4hrd9                 1/1     Running     0          4m34s

pod/helm-install-traefik-crd-j2sqs           0/1     Completed   0          4m34s

pod/helm-install-traefik-mvxhw               0/1     Completed   1          4m34s

pod/metrics-server-648b5df564-gqxcz          1/1     Running     0          4m34s

pod/svclb-traefik-18597fcd-2cf68             2/2     Running     0          4m6s

pod/traefik-768bdcdcdd-srb8d                 1/1     Running     0          4m7s



NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)                      AGE

service/kube-dns         ClusterIP      10.43.0.10      <none>           53/UDP,53/TCP,9153/TCP       4m44s

service/metrics-server   ClusterIP      10.43.69.115    <none>           443/TCP                      4m43s

service/traefik          LoadBalancer   10.43.149.125   159.65.159.115   80:32266/TCP,443:32628/TCP   4m7s



NAME                                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE

daemonset.apps/svclb-traefik-18597fcd   1         1         1       1            1           <none>          4m7s



NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE

deployment.apps/local-path-provisioner   1/1     1            1           4m44s

deployment.apps/coredns                  1/1     1            1           4m44s

deployment.apps/metrics-server           1/1     1            1           4m44s

deployment.apps/traefik                  1/1     1            1           4m7s



NAME                                               DESIRED   CURRENT   READY   AGE

replicaset.apps/local-path-provisioner-957fdf8bc   1         1         1       4m34s

replicaset.apps/coredns-77ccd57875                 1         1         1       4m34s

replicaset.apps/metrics-server-648b5df564          1         1         1       4m34s

replicaset.apps/traefik-768bdcdcdd                 1         1         1       4m7s



NAME                                 COMPLETIONS   DURATION   AGE

job.batch/helm-install-traefik-crd   1/1           28s        4m41s

job.batch/helm-install-traefik       1/1           31s        4m41s



...
 

上面的输出显示了 Kubernetes 集群中部署的各种对象。例如,有 4 个部署正在运行,分别用于 coredns、local-path-provisioner、metrics-server 和 traefik。.

如果在不使用 sudo 的情况下运行该命令,可能会遇到以下错误。.

Output
WARN[0000] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions

error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied

...

为避免在运行 kubectl 命令时需要 sudo,请使用 chmod 更改配置文件的权限,如下所示。.

$ sudo chmod 644 /etc/rancher/k3s/k3s.yaml

至此,您已验证了默认部署在 K3s 集群中的 Kubernetes 对象的状态。接下来,您将了解并修改 K3s 安装过程中的配置选项。.

步骤 3 – 了解并修改 K3S 中的配置选项

您已使用默认设置安装了 K3s,但您可以调整配置以实现特定集群的自定义行为。在本步骤中,您将学习如何在 K3s 中使用环境变量来设置安装脚本中的配置。.

例如,traefik 入口控制器安装时会附带默认设置,在某些情况下,您可能需要在安装过程中禁用入口控制器。.

环境变量 INSTALL_K3S_EXEC 可用于向 K3s 服务传递标志。以下命令可用于在 K3 安装期间禁用 Traefik。.

$ curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik" sh -

检查 Kubernetes 对象以进行验证。这次控制器资源将不存在。.

$ sudo kubectl get all -n kube-system

除了使用环境变量修改配置选项外,还可以在 K3s 配置文件中进行修改。只需在配置文件中指定必要的选项,然后重启 K3s 服务器即可使更改生效。.

K3s 使用位于 etc/rancher/k3s/config.yaml/ 的配置文件。.

运行以下命令创建并写入配置文件。.

$ sudo nano /etc/rancher/k3s/config.yaml

请在配置文件中写入以下内容。.

$ disable: traefik

按 Ctrl+X 写入并退出文件。禁用行:traefik 指示 K3s 服务移除与 traefik 安装相关的资源。.

然后使用以下命令重启 K3s 服务以应用更改。.

$ sudo systemctl restart k3s

现在,您可以通过列出 kube 系统命名空间中的所有 Kubernetes 对象来验证这一点。此时应该没有任何资源与 traefik 安装相关联。.

$ sudo kubectl get all -n kube-system

在本步骤中,您学习了如何在安装期间和安装后更改 K3s 配置。接下来,您将删除 K3s 集群以清理虚拟机。.

步骤 4 – 卸载 K3s

要卸载 K3S,您需要运行名为‘usr/local/bin/k3s-uninstall.sh/’的 shell 脚本。该脚本在 K3s 安装后自动生成,可用于执行彻底的清理工作。卸载过程中,所有在 K3s 安装期间创建或安装的 K3s 配置和集群工具都将被删除。.

要移除 K3,请运行以下命令:

$ /usr/local/bin/k3s-uninstall.sh

使用以下命令检查 K3s 服务的状态,以确认卸载是否成功:

$ systemctl status k3s

您将得到类似这样的输出:

[secondary_label Output]

Unit k3s.service could not be found.

结果

本文介绍了如何在 Ubuntu 上安装 K3s 集群,并了解 K3s 的配置选项及其使用机制。现在您已经设置好了 Kubernetes 集群,接下来应该探索 Kubernetes 中不同类型的对象及其功能。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢