天天看點

快速建構生産級高可用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叢集

遠端連接配接

繼續閱讀