K3s kubernets集群搭建
- 架构介绍
- 集群数据存储选项
- 嵌入式DB的高可用
- 前提条件
- 准备工作
- 安装Kubernetes
架构介绍
- K3s 架构的一个主要优点是,它允许使用外部数据库保存集群数据,从而可以将 K3s 服务器节点视为无状态的。
- K3s 易于安装,仅需要 Kubernetes 一半的内存,而且所有组件都在一个不超过 100 MB 的二进制文件中。
- 一个 K3s HA 集群可以由两个或多个server 节点,将为 Kubernetes API 提供服务并运行其他 control-plane 服务。
- 外部数据库支持多种类型(嵌入式 SQLite、MySQL 、MariaDB、 PostgreSQL、etcd、 嵌入式 etcd 高可用)
集群数据存储选项
k3s可以使用 etcd 以外的数据存储运行 Kubernetes ,这是使得K3s区别于其他 Kubernetes 发行版。该功能为 Kubernetes 操作者提供了灵活性。我们可以选择一个最适合自己的数据存储。例如:
- 如果你的团队没有操作 etcd 的专业知识,可以选择 MySQL 或 PostgreSQL 等企业级 SQL 数据库。
- 如果您需要在 CI/CD 环境中运行一个简单的、短暂的集群,您可以使用嵌入式 SQLite 数据库。
- 如果你希望在边缘部署 Kubernetes,并需要一个高可用的解决方案,但又无法承担在边缘管理数据库的操作开销,你可以使用 K3s 建立在嵌入式 etcd 之上的嵌入式 HA 数据存储。
K3s 支持以下数据存储选项:
- 嵌入式 SQLite
- PostgreSQL (经过认证的版本:10.7 和 11.5)
- MySQL (经过认证的版本:5.7)
- MariaDB (经过认证的版本:10.3.20)
- etcd (经过认证的版本:3.3.15)
- 嵌入式 etcd 高可用
嵌入式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 已经安装成功。
然后测试集群 pods 的健康状况。
结果: 您已经成功建立了一个 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