K3s kubernets集群搭建

  • 架构介绍
  • 集群数据存储选项
  • 嵌入式DB的高可用
  • 前提条件
  • 准备工作
  • 安装Kubernetes


架构介绍

  • K3s 架构的一个主要优点是,它允许使用外部数据库保存集群数据,从而可以将 K3s 服务器节点视为无状态的。
  • K3s 易于安装,仅需要 Kubernetes 一半的内存,而且所有组件都在一个不超过 100 MB 的二进制文件中。
  • 一个 K3s HA 集群可以由两个或多个server 节点,将为 Kubernetes API 提供服务并运行其他 control-plane 服务。
  • 外部数据库支持多种类型(嵌入式 SQLite、MySQL 、MariaDB、 PostgreSQL、etcd、 嵌入式 etcd 高可用)

通过etcd去删除kubernetes的资源对象 etcd kubernetes_嵌入式

集群数据存储选项

k3s可以使用 etcd 以外的数据存储运行 Kubernetes ,这是使得K3s区别于其他 Kubernetes 发行版。该功能为 Kubernetes 操作者提供了灵活性。我们可以选择一个最适合自己的数据存储。例如:

  • 如果你的团队没有操作 etcd 的专业知识,可以选择 MySQL 或 PostgreSQL 等企业级 SQL 数据库。
  • 如果您需要在 CI/CD 环境中运行一个简单的、短暂的集群,您可以使用嵌入式 SQLite 数据库。
  • 如果你希望在边缘部署 Kubernetes,并需要一个高可用的解决方案,但又无法承担在边缘管理数据库的操作开销,你可以使用 K3s 建立在嵌入式 etcd 之上的嵌入式 HA 数据存储。

K3s 支持以下数据存储选项:

嵌入式DB的高可用

前提条件

  • 如果选用嵌入式DB的高可用 K3s 集群,Server 节点至少3台,并且Server节点数是奇数。请参考嵌入式DB的配置
  • 各Linux节点主机名不能相同可以访问外网
  • 需要下载对应版本的CentOS镜像repo文件,参考CentOS镜像使用帮助

准备工作

//关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

//关闭Selinux
setenforce 0
sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config

//禁用swap
swapoff -a
# 找到fstab中,swap defaults那一行,行首加一个注释
sed -i ‘s/.*swap.defaults./#&/g’ /etc/fstab

//修改主机名,并修改hosts
hostnamectl set-hostname k3s-01(节点2为k3s-02,节点3为k3s-03)

安装Kubernetes

步骤 1:安装 Kubernetes并设置 K3s 服务器
1.连接到你准备运行 Rancher 服务器的一个 Linux 节点。
2.在 第一个Linux 节点上,运行此命令来启动 K3s 服务器

// 提示:国内用户,可以使用以下方法加速安装:
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
K3S_TOKEN=SECRET k3s server --cluster-init
//检查节点状态
$ k3s kubectl get nodes
//检查pod状态
$ k3s kubectl get pods -A

3.获取token
若将server或agent加入集群中需要指定共享secret,请参考K3s Server 配置参考

$ cat /var/lib/rancher/k3s/server/token
K1082549f1cf26ad55507ade150466b45bd86f3a2fe630e8562994835776d0ea32b::server:0984f7ad6a37e2f0e2acd626f1e84f4b

4.在你的第二、三个 K3s 服务器节点上重复同样的命令。

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
K3S_TOKEN=SECRET k3s server --server https://<ip or hostname of server1>:6443 \
--token=<secret of server1>
//示例:
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
K3S_TOKEN=SECRET k3s server --server https://172.16.10.203:6443 \
--token=K1082549f1cf26ad55507ade150466b45bd86f3a2fe630e8562994835776d0ea32b::server:0984f7ad6a37e2f0e2acd626f1e84f4b

步骤 2:确认 K3s 集群正常

请在 K3s 服务器任一节点上运行以下命令,确认 K3s 已经安装成功。

通过etcd去删除kubernetes的资源对象 etcd kubernetes_嵌入式_02


然后测试集群 pods 的健康状况。

通过etcd去删除kubernetes的资源对象 etcd kubernetes_嵌入式_03


结果: 您已经成功建立了一个 K3s Kubernetes 集群。

步骤 3:保存并开始使用 kubeconfig 文件
在每个server节点上安装 K3s 时,会在节点上创建了一个/etc/rancher/k3s/k3s.yaml的kubeconfig文件。这个文件包含了完全访问集群的凭证,接下来复制/etc/rancher/k3s/k3s.yaml文件,到本地机器上的~/.kube/config。

mkdir -p ~/.kube
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config