天天看点

快速构建生产级高可用k8s集群:轻量级k3s集群

作者:爱科学的卫斯理

k3s是轻量级的kubernetes,它是为物联网和边缘计算专门构建,也是经过认证的Kubernetes发行版。

快速构建生产级高可用k8s集群:轻量级k3s集群

k3s

虽然说k3s对于边缘计算来说是特别完美的解决方案,但是我们也完全可以使用k3s集群来替代k8s集群。

k3s和k8s是完全兼容的,我们完全可以无感的使用k3s。

部署一个单节点的k3s是很简单的,你只需要在机器上执行下面的指令即可:

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

安装完成后,在机器上通过下面的指令查看安装情况

kubectl get nodes           

今天我们需要安装一个高可用的集群,k3s可以通过内嵌的SQLite、内嵌的etcd或外部数据库(etcd、MySQL、MariaDB、PostgreSQL )来作为高可用集群的存储。

1、准备

  • 准备三台机器,操作系统为CentOS 7.9,将mysql安装在第1台设备上,如果你有更多的设备。

2、安装MySQL

在第1台服务器上安装MySQL

curl -sSLO https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
sudo yum localinstall mysql80-community-release-el7-7.noarch.rpm
sudo yum install mysql-server
sudo systemctl start mysqld
sudo grep 'temporary password' /var/log/mysqld.log  #查看root临时密码
sudo mysql_secure_installation #初始化设置,密码Ab.123456

mysql -u root -p # 连接MYSQL
CREATE DATABASE k3s; # 创建数据库k3s
CREATE USER 'k3s'@'%' IDENTIFIED BY 'Ab.123456'; # 创建用户k3s
GRANT ALL PRIVILEGES ON k3s.* TO 'k3s'@'%'; #将k3s数据库的所有权限赋给k3s用户           

3、为MYSQL的地址设置hosts

在三台机器的/etc/hosts 上配置mysql的名字和ip,这一步不是必须的,我做这一步的目的是,在安装k3s集群的时候,需要指定mysql的地址,我们用了名字之后,就不需要制定ip地址了。这样的话,如果我们MySQL机器的ip变了,只需要修改hosts文件即可。

三台设备都需要做如下操作:

sudo vi /etc/hosts           

添加下面到尾部(172.16.148.89是我们第1台机器的地址,我们把mysql安装在第1台):

172.16.148.89 mysql           

4、 第一台设备安装k3s

  • 切换到root用户
sudo -i           
  • 安装k3s
curl -sfL https://get.k3s.io |  INSTALL_K3S_VERSION=v1.27.2+k3s1 sh -s - server \
  --datastore-endpoint="mysql://k3s:Ab.123456@tcp(mysql:3306)/k3s"           

--datastore-endpoints设置指定mysql的地址。

  • 通过下面命令检查是否安装成功:
kubectl get nodes           
  • 查看token,token在后面两台服务器安装时需要。
sudo cat /var/lib/rancher/k3s/server/token           
K10608b6c57112cc212ed139d766b4667271c25cd4b916d50fcf6d39e7b77629efd::server:dc6fb51e57a553de1c53903a1c901ab0           

5、其他两台机器

在其他两台机器上都是用下面的命令

curl -sfL https://get.k3s.io |  INSTALL_K3S_VERSION=v1.27.2+k3s1 sh -s - server \
--token=K10608b6c57112cc212ed139d766b4667271c25cd4b916d50fcf6d39e7b77629efd::server:dc6fb51e57a553de1c53903a1c901ab0 \
--datastore-endpoint="mysql://k3s:Ab.123456@tcp(mysql:3306)/k3s"           

6、检查集群是否安装成功

在第一台机器上执行:

kubectl get nodes           
快速构建生产级高可用k8s集群:轻量级k3s集群

kubectl get nodes

7、远程访问

  • 机器的/etc/rancher/k3s/k3s.yaml 文件是可以远程访问k3s的config文件,可以复制到本地。
快速构建生产级高可用k8s集群:轻量级k3s集群

k3s config文件

  • 修改127.0.0.1为机器的ip地址。新建config文件,将文件放在用户目录下下的.kube下:
快速构建生产级高可用k8s集群:轻量级k3s集群

本地k3s文件

  • 远程连接
快速构建生产级高可用k8s集群:轻量级k3s集群

远程连接

继续阅读