目錄
- Rancher Server + Kubernets搭建云原生集群平臺
- 一、環境準備
- 1、軟件準備
- 2、環境規劃
- 3、掛載數據盤
- 二、虛擬機初始化基礎配置(所有節點都需要操作)
- 1、執行時間服務器腳本(包括配置hostName主機名)
- 2、配置hosts文件
- 3、配置各節點免密登錄
- 三、在每個節點安裝docker
- 1、配置docker-ce國內yum源(阿里云)
- 2、安裝docker依賴包
- 3、安裝docker-ce
- 4、啟動docker服務并設置開機自啟
- 5、查看docker運行狀態
- 6、查看docker版本信息
- 7、開啟包轉發功能和修改內核參數
- 8、加載并應用 /etc/sysctl.d/docker.conf 文件中的配置
- 9、配置阿里云鏡像
- 10、重啟docker
- 四、部署rancher
- 1、在rancher節點下載rancher鏡像
- 2、通過docker運行rancher服務器的容器
- 五、登錄Rancher平臺
- 1、再瀏覽器訪問Rancher節點IP ,由于未使用授信證書,會有報警,忽略即可
- 2、設置密碼
- 3、至此Rancher安裝完成
- 4、登錄后可點擊右下角語言選項選擇中文
- 5、設置Rancher默認鏡像倉庫
- 六、創建集群
- 1、點擊全局選擇添加集群
- 2、填寫集群名稱,選擇kubernetes版本點擊保存
- 3、勾選Etcd、control,復制此命令,在每個master節點執行命令
- 4、勾選worker復制此命令在每個worker節點執行命令
- 5、等待服務安裝完成
- 七、部署nginx服務
- 1、配置nginx點擊進入集群tyzwkj-cloud選擇Default
- 2、配置負載均衡
- 八、kubectl 命令行工具設置
- 1 、使用rancher安裝的k8s集群,服務器里面的kubectl 工具不能正常使用,如果需要在服務器執行kubectl命令的話,需要配置一下上下文
- 2、從rancher頁面獲取Kubectl工具連接k8s集群所需的配置文件kubeconfig,如下圖所示
- 九、監控配置
- 1、進入監控配置畫面
- 2、啟用監控
- 3、部署監控服務
- 4、驗證
- 十、重新安裝
Rancher Server + Kubernets搭建云原生集群平臺
Rancher 是一款開源的企業級容器管理平臺,專注于簡化 Kubernetes 集群的部署、運維及多環境管理,助力企業在混合云、多云及邊緣計算場景中實現高效容器化應用交付。
Rancher 憑借圖形化界面、跨平臺兼容性及開箱即用的監控/日志功能,大幅降低了 Kubernetes 的使用門檻。其開源特性允許企業深度定制,而活躍的社區生態則持續提供功能迭代與問題支持。對于需要統一管理復雜容器環境的企業,Rancher 是實現高效運維與數字化轉型的理想選擇。
【Rancher官方文檔】
一、環境準備
1、軟件準備
序號 | 環境名稱 | 說明 | 版本號 |
---|---|---|---|
1 | Rancher Server | k8s運維平臺 | v2.5.7 |
2、環境規劃
序號 | IP | HostName | 操作系統 | K8s角色 | 說明 |
---|---|---|---|---|---|
1 | 192.168.255.141 | rancher | Anolis OS 8.9 x86 64位 | Rancher服務 | Kubernetes 管理平臺 |
2 | 192.168.255.142 | master | Anolis OS 8.9 x86 64位 | 控制節點 | Kubernetes Master |
3 | 192.168.255.143 | worker01 | Anolis OS 8.9 x86 64位 | 工作節點 | Kubernetes Master高可用節點,如果不需要高可用,可不部署此服務器 |
4 | 192.168.255.144 | worker02 | Anolis OS 8.9 x86 64位 | 工作節點 | Kubernetes Worker |
3、掛載數據盤
** 注意: **
- 1、該步驟不是必須的,如果需要將【系統盤】與【數據盤】進行分離,并且【數據盤】是獨立的一塊磁盤的話,是需要執行該步驟進行掛載到系統中的;(非必要執行)
- 2、下面的命令需要在 [192.168.255.141]、 [192.168.255.142]、 [192.168.255.143] 和 [192.168.255.144] 4臺服務器上都執行
(1)、分區
對新磁盤【/dev/sdb】(根據lsblk命令輸出得知新磁盤目錄的)進行執行分區
[root@localhost ~]# lsblk
[root@localhost ~]# df -h
[root@localhost ~]# fdisk /dev/sdb
輸入命令符
n # 創建新分區
p # 選擇主分區
# 選擇分區號(如果提示)
# 指定起始位置
# 指定分區大小
w # 保存并退出fdisk
(2)、格式化
對新磁盤【/dev/sdb1】(根據lsblk命令輸出得知新磁盤目錄的)進行執行格式化
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkdir /data
(3)、掛載
臨時掛載,立即生效,但是系統重啟后會失效,重啟系統后需要重新執行命令或【永久掛載】方式修改配置文件
[root@localhost ~]# mount /dev/sdb1 /data
永久掛載,系統每次重啟后會讀取配置文件/etc/fstab中的配置
[root@localhost ~]# vim /etc/fstab/dev/sdb1 /data ext4 defaults 0 2
二、虛擬機初始化基礎配置(所有節點都需要操作)
1、執行時間服務器腳本(包括配置hostName主機名)
(1)、創建init文件夾
[root@rancher ~]# mkdir init
[root@rancher ~]# cd init
(2)、創建文件傳輸,上傳后,為文件添加執行權限后執行
[root@rancher init]# vim init.sh
init.sh文件內容
#配置主機名和host文件echo "正在配置你的主機名..."echoread -p "請輸入你的主機名:" host hostname(){hostnamectl set-hostname $host}hostname host && echo -e "主機名設置成功!!"#echo "正在配置你的hosts文件..."
# ip=$(ip a | grep ens33 |grep inet |awk '{print $2}' | awk -F"/" '{print $1}')
# echo "$ip $host" >> /etc/hosts
# echo "hosts配置完成!!!"# 防火墻設置echo "關閉防火墻和selinux中...."echosystemctl stop firewalld && systemctl disable firewalld &> /dev/null && setenforce 0 && sed -i '/^SELINUX/s/enforcing/disabled/' /etc/selinux/configif [ $? -eq 0 ];thenecho "防火墻和selinux已經成功關閉....."elseecho "防火墻和selnux關閉失敗,請手動關閉!!!"fi
echo#外網檢測
echo "正在檢測網絡是否能上外網......"echoping -c 2 www.baidu.com &> /dev/nullif [ $? -eq 0 ];thenecho "網絡正常"elseecho "網絡不可達!"fi
echo# 配置yum源-這里選用阿里源
#echo
# echo "修改為國內yum源"
# mkdir /etc/yum.repos.d/bak
# mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# yum clean all && yum makecache # 修改時區echo "修改時區中......"timedatectl set-timezone Asia/Shanghailn -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeecho "修改時區成功......"# 時間同步
echoecho "時間同步中……"yum install -y ntpdate &> /dev/nullntpdate 172.26.251.1 &> /dev/nullfile=$(who | head -1 | cut -d" " -f1)echo "* */1 * * * /usr/sbin/ntpdate 172.26.251.1" > /var/spool/cron/$fileif [ $? -eq 0 ];thenecho "時間同步成功!!!"echo "unset MAILCHECK" >> /etc/profilesource /etc/profile &> /dev/nullelseecho "時間同步失敗!!!"fi
# 修改字符編碼
echoecho "修改字符編碼中……"echo 'LANG="en_US.UTF-8"' > /etc/locale.confecho "修改字符成功......"echo "----配置ssh禁用反向解析----"echo 'UseDNS=no' >> /etc/ssh/sshd_configecho "----允許通過密碼ssh遠程登錄----"echo 'PermitRootLogin yes' >> /etc/ssh/sshd_configsystemctl restart sshdecho "----設置ssh,20分鐘登錄無操作自動退出,服務器每120秒心跳包測試客戶端,三次不成功斷開----"echo 'export TMOUT=1200' >> /etc/profilesource /etc/profileecho "----查看歷史操作記錄,并加時間戳----"echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profilesource /etc/profile#內核優化
echo "----內核優化----"
grep 'net.ipv6.conf.all.disable_ipv6' /etc/sysctl.conf > /dev/null 2>&1
if [ $? -ne 0 ];then
# 關閉ipv6echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.confecho 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf#允許系統打開的端口范圍,不建議從1024開始,因為某些端口會存在10000以內。一般情況下已夠用。echo 'net.ipv4.ip_local_port_range = 10000 65000' >> /etc/sysctl.confecho 'net.core.somaxconn = 32768 >> /etc/sysctl.conf'
fi
(3)、執行初始化
#為文件添加執行權限
[root@rancher init]# chmod +x ./init.sh
[root@rancher init]# ./init.sh 正在配置你的主機名...請輸入你的主機名:
(4)、執行完后重啟系統
[root@rancher init]# reboot
2、配置hosts文件
[root@rancher ~]# vim /etc/hosts
打開hosts文件點擊鍵盤i進行插入,下面配置copy到hosts
192.168.255.141 rancher
192.168.255.142 master
192.168.255.143 worker01
192.168.255.144 worker02
3、配置各節點免密登錄
#rancher
#生成ssh密鑰
[root@rancher init]# ssh-keygen
輸入后 敲擊3下enter鍵盤 即可生成成功
訪問連接各節點ssh
#復制密鑰到其他節點(每個節點都要執行)
[root@rancher]# ssh-copy-id root@rancher
[root@rancher]# ssh-copy-id root@master
[root@rancher]# ssh-copy-id root@worker01
[root@rancher]# ssh-copy-id root@worker02
三、在每個節點安裝docker
1、配置docker-ce國內yum源(阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2、安裝docker依賴包
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安裝docker-ce
yum install docker-ce -y
** 備注:**
- 如果出現 【try to add ‘–allowerasing’ to command line to replace conflicting packages or ‘–skip-broken’ to skip uninstallable packages or ‘–nobest’ to use not only best candidate packages】,則執行下面命令
yum install docker-ce -y --allowerasing
4、啟動docker服務并設置開機自啟
systemctl start docker && systemctl enable docker
5、查看docker運行狀態
systemctl status docker
6、查看docker版本信息
docker version
7、開啟包轉發功能和修改內核參數
modprobe br_netfilter
cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
8、加載并應用 /etc/sysctl.d/docker.conf 文件中的配置
sysctl -p /etc/sysctl.d/docker.conf
9、配置阿里云鏡像
創建 /etc/docker 目錄
sudo mkdir -p /etc/docker
創建docker鏡像配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://ox288s4f.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","https://docker.hpcloud.cloud","https://docker.m.daocloud.io","https://docker.unsee.tech","https://docker.1panel.live","http://mirrors.ustc.edu.cn","https://docker.chenby.cn","http://mirror.azure.cn","https://dockerpu11.org","https://dockerhub.icu","https://hub.rat.dev","https://proxy.1panel.live","https://docker.1panel.top","https://docker.m.daocloud.io","https://docker.1ms.run","https://docker.ketches.cn"]
}
EOF
10、重啟docker
立即生效
sudo systemctl daemon-reload
重啟docker
sudo systemctl restart docker
四、部署rancher
1、在rancher節點下載rancher鏡像
[root@rancher ~]# docker pull rancher/rancher:v2.5.7
2、通過docker運行rancher服務器的容器
命令描述
-d: 在后臺(detached mode)運行容器,即使終端關閉也保持運行。--restart=unless-stopped: 容器退出時,除非明確停止,否則會自動重啟。這個選項確保 Rancher 服務在意外關閉后能夠自動恢復運行。-p 80:80 -p 443:443: 將容器內部的端口映射到宿主機上,使得宿主機的 80 端口和 443 端口可以訪問 Rancher 服務器提供的服務。例如,可以通過 `http://宿主機IP` 和 `https://宿主機IP` 訪問 Rancher Web UI。--privileged: 賦予容器全部的 Linux capabilities,這在某些情況下可能是必要的,例如需要訪問設備或執行特權操作時。--name rancher: 指定容器的名稱為 `rancher`,這樣可以通過該名稱管理和操作這個容器。rancher/rancher:v2.5.7: 指定要運行的 Docker 鏡像,這里是 Rancher 服務器的鏡像版本為 `v2.5.7`。
(1)、創建rancher數據掛載文件夾
mkdir -p /data/d/rancher/data
(2)、啟動rancher容器
[root@rancher ~]# docker run -d --restart=always -p 80:80 -p 443:443 -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone -v /data/d/rancher/data:/var/lib/rancher --privileged=true --user=root --name rancher rancher/rancher:v2.5.7
(3)、查看rancher容器信息
docker ps -a|grep rancher
五、登錄Rancher平臺
1、再瀏覽器訪問Rancher節點IP ,由于未使用授信證書,會有報警,忽略即可
2、設置密碼
3、至此Rancher安裝完成
4、登錄后可點擊右下角語言選項選擇中文
5、設置Rancher默認鏡像倉庫
把系統設置里面的 ”system-default-registry” value設置為
registry.cn-hangzhou.aliyuncs.com
六、創建集群
1、點擊全局選擇添加集群
2、填寫集群名稱,選擇kubernetes版本點擊保存
3、勾選Etcd、control,復制此命令,在每個master節點執行命令
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.5.7 --server https://192.168.255.141 --token ndkzstpnht7z5lvftkhmbc7wvgsgrxlq6s2r64ttqk9gxjgrnmjp75 --ca-checksum b5cb4d97b8be287df94db3736d7b7b58f8b2cfcb2758d91fb06c78afbf7b5bcd --etcd --controlplane
4、勾選worker復制此命令在每個worker節點執行命令
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.5.7 --server https://192.168.255.141 --token ndkzstpnht7z5lvftkhmbc7wvgsgrxlq6s2r64ttqk9gxjgrnmjp75 --ca-checksum b5cb4d97b8be287df94db3736d7b7b58f8b2cfcb2758d91fb06c78afbf7b5bcd --worker
備注:
- worker命令在主機worker01和worker02上執行
5、等待服務安裝完成
此過程將耗時較長時間(拉取鏡像時間較長),本文3臺節點初始化完成用了近3個小時
點擊主機查看監控
七、部署nginx服務
1、配置nginx點擊進入集群tyzwkj-cloud選擇Default
(1)、點擊部署服務
(2)、拉取nginx鏡像,填寫配置;點擊啟動
(3)、等待nginx啟動
2、配置負載均衡
(1)、進入【負載均衡】畫面
(2)、新增ingress映射,點擊保存
(3)、設置完成后會生成一個域名
(4)、驗證nginx服務
點擊nginx-ingress地址(上圖中80/http)
備注:
如果點擊nginx-ingress地址無法解析域名時,需要修改一下本地hosts文件,將xip.io域名解析到master節點ip
- 本例中master節點的ip是192.168.255.142,下面是在hosts文件中添加的配置
192.168.255.142 xip.io
(5)、驗證負載均衡
點擊上圖nginx進入點擊pods查看日志
【第一步】進入第一個nginx容器,查看第一個nginx容器的日志
【第二步】進入第二個nginx容器畫面,查看第一個nginx容器的日志
【第三步】每訪問一次
八、kubectl 命令行工具設置
1 、使用rancher安裝的k8s集群,服務器里面的kubectl 工具不能正常使用,如果需要在服務器執行kubectl命令的話,需要配置一下上下文
(1)、 kubectl 配置命令自動補全
yum install -y bash-completion
echo 'source /usr/share/bash-completion/bash_completion' >> ~/.bashrc
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc
(2)、搜索根目錄文件名為 kubectl 的文件或目錄是否存在,不存在則自己創建
find / -name kubectl
mkdir kubectl
(3)、查看/var/lib/rancher/下的文件獲取要創建鏈接的源文件或目錄
cd /var/lib/rancher/
執行下面命令查看是否可以獲取到pod列表
v1.25.12-rke2r1-15557ace5a8f/bin/kubectl get pod -A
(4)、然后替換掉v1.25.12-rke2r1-15557ace5a8f/bin/kubectl換成自己的版本;執行然后執行下面軟鏈接的命令
/usr/bin/kubectl為目標路徑,來訪問實際的 kubectl 可執行文件
ln -s /var/lib/rancher/rke/data/v1.25.12-rke2r1-15557ace5a8f/bin/kubectl /usr/bin/kubectl
2、從rancher頁面獲取Kubectl工具連接k8s集群所需的配置文件kubeconfig,如下圖所示
(1)、創建目錄
mkdir ${HOME}/.kube/
(2)、把下載的kubeConfig上傳到服務器.重命名為config放到 ${HOME}/.kube/目錄下
查看安裝的版本
kubectl version
九、監控配置
1、進入監控配置畫面
2、啟用監控
點擊【啟用監控】按鈕
3、部署監控服務
進入【集群】->System畫面后,會發現新增了加【cattle-prometheus】命名空間及相關服務,這就是監控服務,只需等待一段時間就會自動部署好
4、驗證
待上一步【cattle-prometheus】命名空間下的所有服務全部部署完成并狀態為【Active】后,即可進入【集群】畫面后,會看到下圖所示的監控面板
點擊上圖Grafana按鈕就會進入對應監控畫面,如下圖所示
十、重新安裝
說明:
執行重復安裝,需要清除所有記錄再執行安裝
docker stop $(docker ps -aq)docker system prune -fdocker volume rm $(docker volume ls -q)docker image rm $(docker image ls -q)rm -rf /etc/ceph \/etc/cni \/etc/kubernetes \/opt/cni \/opt/rke \/run/secrets/kubernetes.io \/run/calico \/run/flannel \/var/lib/calico \/var/lib/etcd \/var/lib/cni \/var/lib/kubelet \/var/lib/rancher/rke/log \/var/log/containers \/var/log/pods \/var/run/calico
結束,以上就是通過RancherServer搭建k8s的全部內容。