Rancher 是一個多 Kubernetes 集群管理工具,可以創建節點並安装自定義 Kubernetes,或者導入在任何地方運行的現有 Kubernetes 集群,該公司 Rancher Labs 由華人梁勝作為聯合創始人,所以相關的中文技術文件非常豐富、易於學習,Rancher Labs 最終於2020年12月1日被 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節點機器上執行
0 Comments:
張貼留言