強大多雲混合多K8S叢集管理平臺Rancher入門實戰

2022-09-01 06:19:08

@

概述

定義

Rancher 官網 https://rancher.com/

Rancher 官網檔案 https://rancher.com/docs/

Rancher 最新版本2.6官網檔案 https://rancher.com/docs/

Rancher GitHub原始碼地址 https://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叢集,還有OpenshiftKubespheresealos,本篇主要實戰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 http://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,存取http://hadoop2/ 跳轉到https://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=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://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)(http://www.itxiaoshen.com:3001/assets/1661943335968kbERCAW1.png)]

通過其中一個pod部署節點ckserver1也即是192.168.5.52的IP去存取nginx ,http://ckserver1:35000/ ,成功返回資訊(host對應ip設定hosts檔案裡)

可以很方便調整擴容和縮容的數量

通過kubectl也可以檢視對應的資訊

偏好設定

比如通過偏好設定可以設定深色主題

**本人部落格網站 **IT小神 www.itxiaoshen.com