2023年5月4日 星期四

CentOS 7.9上安裝Rancher和自訂Kubernetes Cluster

Rancher 是一個多 Kubernetes 集群管理工具,可以創建節點並安装自定義 Kubernetes,或者導入在任何地方運行的現有 Kubernetes 集群,該公司 Rancher Labs 由華人梁勝作為聯合創始人,所以相關的中文技術文件非常豐富、易於學習,Rancher Labs 最終於2020121日被 SUSE 收購

 

本例使用的作業系統為 CentOS7.9 

docker版本為19.03.9,rancher版本為2.5.1,RKE版本為1.19.15 

本例旨在快速建立測試環境,參照的是下圖左的架構,rancher server僅有單一節點,下圖右則是適用於生產環境的架構、將rancher server放置於Rancher Server Kubernetes Cluster中以避免單點失效,其中本次測試環境僅會於rancher server底下創建(管理)一個User Kubernetes Cluster做為示範,做法是透過rancher創建自定義集群節點,預設被創建出來的是系出同門的RKE Kubernetes。


Rancher Kubernetes Engine(RKE)是一款輕量級Kubernetes安裝工具,支持在裸機和虛擬機上安裝。RKE解決了Kubernettes安裝的複雜步驟



安裝rancher管理中心

1. 安裝docker

[vagrant@rancher ~]$ sudo yum install -y nano
[vagrant@rancher ~]$ sudo yum install -y yum-utils
[vagrant@rancher ~]$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[vagrant@rancher ~]$ sudo yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 --nogpgcheck
[vagrant@rancher ~]$ sudo systemctl start docker
[vagrant@rancher ~]$ sudo systemctl enable docker

2. 將所需要使用docker的操作用戶加入docker群組,本例用戶名稱為vagrant

[vagrant@rancher ~]$ sudo usermod -aG docker vagrant

3. 快速安裝rancher

[vagrant@rancher ~]$ docker run -d --privileged --restart=unless-stopped \
-p 80:80 -p 443:443 \
rancher/rancher:v2.5.1

4. 或是透過docker-compose安裝rancher

[vagrant@rancher ~]$ sudo yum install -y epel-release
[vagrant@rancher ~]$ sudo yum install -y docker-compose
[vagrant@rancher ~]$ pwd
/home/vagrant
[vagrant@rancher ~]$ mkdir rancher
[vagrant@rancher ~]$ nano ./rancher/docker-compose.yml
version: '3'
services:

  rancher:
    image: rancher/rancher:v2.5.1
    container_name: rancher
    hostname: rancher
    environment:
      - TZ=Aisa/Taipei
    privileged: true
    ports:
      - 80:80/tcp
      - 443:443/tcp
    restart: unless-stopped
[vagrant@rancher ~]$ cd rancher
[vagrant@rancher ~]$ docker-compose up -d

5. 確認rancher已經運作中

[vagrant@rancher ~]$ docker ps
CONTAINER ID   IMAGE                    COMMAND           CREATED         STATUS         PORTS
                   NAMES
427a5903974e   rancher/rancher:v2.5.1   "entrypoint.sh"   6 minutes ago   Up 6 minutes   0.0.0.0:80->80/tcp, 0.0.
0.0:443->443/tcp   confident_shamir

6. 前往WEBUI介面、設定admin帳戶的密碼,並在最下面I agree to the Terms and Conditions  for using Rancher需要打勾後按下Continue


7. 設定rancher server的網址,不論是設定為ip或是domain name、都需要讓集群中的每個節點可以連接到


8. 登入後可以看到目前rancher所管理的叢集只有rancher本身所存在的k3s


Rancher Labs推出的Kubernetes開源專案K3s,是一個輕量級大小只有40MB、且易於安裝的Kubernetes發布版本,專為資源有限和低互動的系統而設計,適用於邊緣應用、物聯網、持續整合以及ARM等使用情境。




透過rancher創建RKE Kubernetes集群


等待被創建的集群都是基於數個實體機器或虛擬機器所組成,其中這些機器最低的硬件要求是1cores/1GB,並且需要事先安裝好docker服務、作業系統部分須符合RKE的安裝要求

生產環境無論在哪種情況下,都不應該把 worker角色,添加到具有 etcd 或 controlplane 角色的節點中


以下1~8步驟套用於預備創建RKE Cluster中的每一台實體機器或虛擬機器中,本例為rke-master與rke-node01兩台機器:

1. 安裝相關套件

sudo yum install -y nano wget git epel-release
sudo yum install -y jq
sudo yum install -y nfs-utils
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum clean all && yum repolist
sudo yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 --nogpgcheck
sudo systemctl enable docker

2. 將非root的操作用戶加入docker群組,本例用戶名稱為vagrant

sudo usermod -aG docker vagrant

3. 因應kubelet需求,禁用swap

sudo sed -i '/swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a

4. 內核相關設定

sudo modprobe br_netfilter
sudo echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf
sudo echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sudo sysctl -p

5. 允許TCP轉發

sudo sed -i 's/#AllowTcpForwarding/AllowTcpForwarding/g' /etc/ssh/sshd_config
sudo systemctl reload sshd

6. 關閉selinux與firewalld以避免cluster中各node間發生通訊問題

sudo systemctl disable firewalld
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo setenforce 0
sudo reboot

7. 設定主機名稱並更新時區時間

sudo timedatectl set-timezone Asia/Taipei
sudo yum install -y chrony
sudo systemctl start chronyd && sudo systemctl enable chronyd
sudo hostnamectl set-hostname rke-master

8. 重啟機器讓selinux生效

sudo reboot

9. 回到rancher WEBGUI中添加欲被管理的K8S Cluster


10. 選擇自定義集群來創建RKE Cluster


11. 集群名稱填上後其它按照default值即可,然後下一步


12. Master管理節點機器的部分保持單純、排除Worker,僅選取Etcd與Control角色


13. 高級選項中依照機器配給的IP不同填上不同的公網或內網地址


14. 將生成的快速安裝指令貼到Master節點機器上執行


15. Worker節點機器部分依照步驟12~14、主機選項角色僅選取Worker,並將生成的快速安裝指令貼到Worker節點機器上執行,約等待10分鐘後,自定義RKE Cluster生成!


Previous Post
Next Post

0 comments: