強大多雲混合多K8S集群管理平台Rancher入門實戰
@
概述
定義
Rancher 官網文檔 //rancher.com/docs/
Rancher 最新版本2.6官網文檔 //rancher.com/docs/
Rancher GitHub源碼地址 //github.com/apache/incubator-seatunnel
Rancher是一個為在生產中部署容器的組織構建的完備開源容器管理平台,Rancher使Kubernetes在任何地方都可以輕鬆運行,滿足it需求並授權給DevOps團隊,從數據中心到雲端再到邊緣,Rancher提供Kubernetes-as-a-Service服務。目前docker鏡像最新版本為v2.6.8
Rancher是一個全棧式管理各地的所有Kubernetes集群,同時可以管理多個K8S集群,將它們統一在集中式RBAC下,監控它們,並讓您輕鬆部署和管理。與Rancher同樣快速安裝和管理K8S集群,還有Openshift、Kubesphere、sealos,本篇主要實戰Rancher的使用。
為何使用
-
Rancher支援集中化認證、許可權控制、監控和管理所有的Kubernetes集群。
-
提供一個簡單直接的用戶介面給DevOps工程師管理應用程式。
-
解決企業痛點問題包括多機房跨區域的容器調度,
-
是規模化生產級Kubernetes的優秀實踐。
-
Rancher託管Kubernetes集群操作,部署Kubernetes集群——在本地、在雲端和在邊緣。
-
Rancher將這些集群統一起來,以確保一致的操作、工作量管理和企業級安全。是一個真正經過實戰錘鍊過的推薦生產使用Kubernetes集群管理工具。Rancher解決了DevOps團隊與Kubernetes部署應用程式和IT人員交付企業關鍵服務的需求。
-
對於本地工作負載,我們提供RKE。對於公有雲,我們支援所有主要的發行版,包括EKS、AKS和GKE。對於邊緣、分支和桌面工作負載,我們提供K3s,一個經過認證的Kubernetes輕量級分發版
-
簡化集群操作,Rancher提供簡單、一致的集群操作,包括供應、版本管理、可見性和診斷、監控和警報,以及集中審計。
-
安全、策略和用戶管理,Rancher自動化處理過程並為所有集群應用一組一致的用戶訪問和安全策略。
-
共享工具和服務,Rancher提供了豐富的服務目錄,用於構建、部署和擴展容器化應用程式,包括應用程式打包裝、CI/CD、日誌、監控和服務網格。
其他產品
- RKE:Rancher Kubernetes Engine (RKE)是一個cncf認證的Kubernetes發行版,完全運行在Docker容器中。它可以在裸機和虛擬化伺服器上工作。RKE解決了安裝複雜性的問題,這是Kubernetes社區的一個常見問題。通過RKE, Kubernetes的安裝和操作既簡化又易於自動化,它完全獨立於您正在運行的作業系統和平台。只要你能運行一個支援的Docker版本,你就可以用RKE部署和運行Kubernetes;只用幾分鐘就能從一個命令構建一個集群,它的聲明式配置使Kubernetes的升級是原子的、安全的。
- K3S:相信不少人對K8S已經了解很多,而Rancher官方還提供一個產品K3S,其為一個輕量級Kubernetes,安裝方便,資源消耗小隻占原來一半記憶體,所有二進位文件小於100mb。
- Rancher與K3s一起使用時配備了一個簡單而完整的解決方案來運行Kubernetes。
- K3s簡化了邊緣部署,能夠快速啟動數千個集群,Rancher通過Rancher Continuous Delivery幫助K3s用戶管理大量集群,為用戶提供了一個控制器,使他們能夠有效地管理邊緣的Kubernetes。
- 使用場景
- Edge
- IoT
- CI
- 開發和測試
- ARM
- 嵌入K8s
- Longhorn:是100%開源的,為Kubernetes構建的分散式塊存儲。雖然由Rancher Labs啟動,Longhorn現在是cncf管理的項目。當與Rancher一起使用時,Longhorn可以提高開發人員和ITOps的效率,通過使持久存儲易於部署,只需一次點擊,而且沒有專有替代方案的成本開銷。它還減少了管理數據和操作環境所需的資源,使團隊能夠專註於更快地交付程式碼,交付更好的應用程式。
安裝
簡述
- Rancher可以從託管提供商提供Kubernetes和計算節點,然後在其上安裝Kubernetes,或者導入運行在任何地方的現有Kubernetes集群。
- Rancher在Kubernetes之上增加了巨大的價值,首先通過為所有集群集中身份驗證和基於角色的訪問控制(RBAC),使全局管理員能夠從一個位置控制集群訪問。
- Rancher可以對集群及其資源進行詳細的監控和警報,將日誌發送給外部提供商,並通過應用目錄直接與Helm集成。如果有外部CI/CD系統,可以把它插入Rancher,但如果沒有Rancher甚至幫助自動部署和升級工作負載。
規劃
從Rancher開始只需2個簡單的步驟就可以看出其極簡單部署方式
- 安裝dokcer的主機
- 通過docker直接部署Rancher
使用四台伺服器,一台單獨安裝Rancher,然後通過Rancher部署一個K8S集群,其中一台安裝K8S的master和node,剩餘兩台安裝node。
基礎環境
- 設置主機名
# 設置主機名,可以根據規劃名稱部署如rancher,k8s-master01,k8s-node01,k8s-node02,我這裡就不配置了
hostnamectl set-hostname rancher
- 主機和IP的Host配置
- 主機安全配置
- 關閉防火牆
- SELINUX=disabled
- 配置時間同步
# 配置crond任務
0 */1 * * * ntpdate time1.aliyun.com
- 關閉swap(K8S集群節點)
# 默認開啟,注釋掉
vim /etc/fstab
# /dev/mapper/centos-swap swap swap defaults 0 0
# 臨時關閉
swapoff -a
- 配置路由轉發
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
# 修改完執行
sysctl -p
Docker安裝
- Rancher本身的安裝和基於Rancher安裝K8S集群都需要依賴底層容器引擎如Docker,關於Docker知識可以看前面的文章,四台伺服器都安裝好docker
#更新yum
sudo yum update
#安裝依賴包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#設置鏡像倉庫為中國的阿里雲倉庫
sudo yum-config-manager --add-repo //mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安裝docker
sudo yum install -y docker-ce
#啟動docker
sudo systemctl start docker
#設置開機啟動docker
sudo systemctl enable docker
Docker也提供下面簡化部署腳本
# 下載部署腳本
curl -fsSL get.docker.com -o get-docker.sh
# 部署docker
sh get-docker.sh
Rancher安裝
docker hub官網查找需要安裝版本,這裡使用最新的2.6.8
# dockcer拉取鏡像,通常選擇amd,也可以選擇docker pull rancher/rancher:v2.6.8-rc1
docker pull rancher/rancher:v2.6.8-rc1-linux-amd64
# 創建掛載目錄
mkdir -p /home/commons/rancher/data
# 運行rancher
docker run -d --privileged -p 80:80 -p 443:443 -v /home/commons/rancher/data:/var/lib/rancher/ --restart=always --name rancher-v.2.6.8 rancher/rancher:v2.6.8-rc1-linux-amd64
登錄Rancher的web UI,訪問//hadoop2/ 跳轉到//hadoop2
# 通過上面docker ps找到運行後的容器container-id 7eb2c11302a2的日誌找到啟動登錄的密碼,如果是docker run安裝運行
docker logs 7eb2c11302a2 2>&1 | grep "Bootstrap Password:"
# 如果是Helm安裝運行
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{"\n"}}'
進入後有一個默認local集群,這個集群就是是用K3S。創建集群可以點擊集群管理,create按鈕,左邊import存在支援對已存在集群的導入
創建用戶
點擊配置欄目,點擊用戶和授權,創建用戶,給開發使用可以勾選Standard Users,確認後提交
創建集群
選擇custom自定義
其他基本按照默認即可,還有高級選項里NodePort埠可以適當給大一點如30000-50000,進入下一步,先裝一台包含所有節點即master和node都有,全選3個
複製後在要安裝master的docker宿主機的命令行執行
返回Rancher的web UI的集群管理頁面,可以看到剛才創建的集群已經在安裝中
等待一段時間安裝,看網路情況這裡5-10分鐘左右,等待時間完畢後可以看下k8s-cluster1集群已經處於active即激活狀態
點擊左上角的菜單找EXPLORE CLUSTER即探索集群中的k8s-cluster1,或者點擊列表後面的EXPLORE,可以顯示當前集群的概況資訊
添加Node節點
在集群管理頁面Clusters的列表中找到name列的k8s-cluster1,點擊進入在註冊Tab框中只勾選worker節點
拷貝docker run語句後到所有需要安裝worker節點機器運行,查看容器節點rancher-agent
等待5-10分鐘後查看worker節點容器資訊如下
在Rancher的web UI的集群管理頁面的機器列表(node名稱用的原來hostname沒有修改,因此不以hostname為主,可以看下後面roles角色)就已經有剛才安裝好處於active激活狀態的2台Worker節點
也可以通過集群管理入口查看相關配置
配置kubectl
如果要操作kubectl命令可以直接通過Rancher管理頁面的Kubectl Shell來執行
另外如要要在節點主機上直接運行需要如下操作,用Rancher安裝好的k8s集群的master節點默認是沒有cubectl的命令
通過如下添加kubernetes yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=//mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=//mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg //mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
執行kubectl安裝
yum install -y kubectl
kubectl get nodes
安裝完直接執行kubectl使用連接被拒絕,通過rancher管理頁面下載剛創建k8s-cluster1的KubeConfig文件,或者點擊下面一個直接拷貝KubeConfig到剪貼板
粘貼配置資訊到kube配置路徑
# 創建目錄
mkdir ~/.kube
# 將k8s-cluster1.yaml裡面的內容粘貼到下面文件
vi ~/.kube/config
# 查詢所有節點資訊
kubectl get pods
創建項目和名稱空間
發布應用需要先創建項目和名稱空間,找到集群項目和名稱管理,創建項目,輸入項目名稱test,其它4項可以按需配置包括容器資源限制,點擊創建項目
在test項目記錄點擊創建命名空間
這裡命名空間是針對k8s的,沒有創建新的命名空間是查詢只有下面幾個默認的命名空間
輸入命名空間testns,其他2項可以按需配置包括容器資源限制,點擊創建
創建後頁面中也有testns這個命名空間,從k8s集群中也可以查找testns命名空間
發布應用
這裡以發布一個nginx的Deployments應用為主
選擇testns命名空間,發布Deployment的名稱testnginx,鏡像為nginx:latest,副本數為2
也設置Ports的配置,選擇Node Port類型,注意名稱不能超過15個字元,nginx容器內部埠80,35000為暴露埠
創建後返回頁面,過一會就下載完nginx並運行處理活躍狀態
點擊testnginx進入可以後可以查看部署的資訊,如Pods、Services、Ingresses等,目前有兩個副本
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vNGUoQAg-1661956704467)(//www.itxiaoshen.com:3001/assets/1661943335968kbERCAW1.png)]
通過其中一個pod部署節點ckserver1也即是192.168.5.52的IP去訪問nginx ,//ckserver1:35000/ ,成功返回資訊(host對應ip配置hosts文件里)
可以很方便調整擴容和縮容的數量
通過kubectl也可以查看對應的資訊
偏好設置
比如通過偏好設置可以設置深色主題
**本人部落格網站 **IT小神 www.itxiaoshen.com