1. 程式人生 > 實用技巧 >Rancher 2.1平臺搭建及使用

Rancher 2.1平臺搭建及使用

目錄

一、概述

1.1、什麼是Rancher

Rancher是一套容器管理平臺,它可以幫助組織在生產環境中輕鬆快捷的部署和管理容器。 Rancher可以輕鬆地管理各種環境的Kubernetes,滿足IT需求併為DevOps團隊提供支援。

Kubernetes不僅已經成為的容器編排標準,它也正在迅速成為各類雲和虛擬化廠商提供的標準基礎架構。Rancher使用者可以選擇使用Rancher Kubernetes Engine(RKE)建立Kubernetes叢集,也可以使用GKE,AKS和EKS等雲Kubernetes服務。 Rancher使用者還可以匯入和管理現有的Kubernetes叢集。

Rancher支援各類集中式身份驗證系統來管理Kubernetes叢集。例如,大型企業的員工可以使用其公司Active Directory憑證訪問GKE中的Kubernetes叢集。IT管​​理員可以在使用者,組,專案,叢集和雲中設定訪問控制和安全策略。 IT管​​理員可以在單個頁面對所有Kubernetes叢集的健康狀況和容量進行監控。

Rancher為DevOps工程師提供了一個直觀的使用者介面來管理他們的服務容器,使用者不需要深入瞭解Kubernetes概念就可以開始使用Rancher。 Rancher包含應用商店,支援一鍵式部署Helm和Compose模板。Rancher通過各種雲、本地生態系統產品認證,其中包括安全工具,監控系統,容器倉庫以及儲存和網路驅動程式。下圖說明了Rancher在IT和DevOps組織中扮演的角色。每個團隊都會在他們選擇的公共雲或私有云上部署應用程式。

1.2、Rancher架構

1.2.1、Docker簡述

Docker是容器打包和runtime標準。開發人員從Dockerfiles構建容器映象,並從Docker映象倉庫中分發容器映象。Docker Hub是最受歡迎的公共映象倉庫,許多組織還設定私有Docker映象倉庫。Docker主要用於管理各個節點上的容器。

【注意】:雖然Rancher 1.6支援Docker Swarm叢集技術,但由於Rancher2.0基於Kubernetes排程引擎,
所以Rancher2.0不再支援Docker Swarm。

1.2.2、Kubernetes簡述

Kubernetes已成為容器叢集管理標準,通過YAML檔案來管理配置應用程式容器和其他資源。Kubernetes執行諸如排程,擴充套件,服務發現,健康檢查,密文管理和配置管理等功能。

一個Kubernetes叢集由多個節點組成:

  • etcd database
    通常在一個節點上執行一個etcd例項服務,但生產環境上,建議通過3個或5個(奇數)以上的節點來建立ETCD HA配置。

  • Master nodes
    主節點是無狀態的,用於執行API Server,排程服務和控制器服務。

  • Worker nodes
    工作負載在工作節點上執行。

預設情況下Master節點也會有工作負載排程上去, 可通過命令設定其不加入排程

1.2.3、Rancher架構

大多數Rancher2.0軟體執行在Rancher Server節點上,Rancher Server包括用於管理整個Rancher部署的所有元件。

下圖說明了Rancher2.0的執行架構。該圖描繪了管理兩個Kubernetes叢集的Rancher server安裝:一個由RKE建立,另一個由GKE建立。

1.2.3.1、Rancher API伺服器

Rancher API server建立在嵌入式Kubernetes API伺服器和etcd資料庫之上。它實現了以下功能:

  • Rancher API伺服器
    Rancher API server管理與外部身份驗證提供程式(如Active Directory或GitHub)對應的使用者身份

  • 認證授權
    Rancher API server管理訪問控制和安全策略

  • 專案
    專案是叢集中的一組多個名稱空間和訪問控制策略的集合

  • 節點
    Rancher API server跟蹤所有叢集中所有節點的標識。

1.2.3.2、叢集控制和Agent

叢集控制器和叢集代理實現管理Kubernetes叢集所需的業務邏輯:

  • 叢集控制器實現Rancher安裝所需的全域性邏輯。它執行以下操作:

    • 為叢集和專案配置訪問控制策略

    • 通過呼叫以下方式配置叢集:

      • 所需的Docker machine驅動程式
      • 像RKE和GKE這樣的Kubernetes引擎
  • 單獨的叢集代理例項實現相應叢集所需的邏輯。它執行以下活動:

    • 工作負載管理,例如每個叢集中的pod建立和部署

    • 繫結並應用每個叢集全域性策略中定義的角色

    • 叢集與Rancher Server之間的通訊:事件,統計資訊,節點資訊和執行狀況

1.2.3.3、認證代理

該認證代理轉發所有Kubernetes API呼叫。它集成了身份驗證服務,如本地身份驗證,Active Directory和GitHub。在每個Kubernetes API呼叫中,身份驗證代理會對呼叫方進行身份驗證,並在將呼叫轉發給Kubernetes主伺服器之前設定正確的Kubernetes模擬標頭。Rancher使用服務帳戶與Kubernetes叢集通訊。

二、相關術語

【注意】:主要說明的內容和Rancher 2.1平臺頁面內容相關。

2.1、全域性層

全域性層主要對Rancher server自身的基礎配置,比如Rancher Server URL、登入認證等。

1. 叢集

全域性層的叢集選單,用於列出叢集中所有的K8S叢集。

2. 主機驅動

用於與三方雲平臺API對接的中介軟體程式。

3. 應用商店-全域性

全域性層的應用商店,負責應用商店的開關與新增。

4. 使用者

新增或者刪除使用者,或者修改使用者的許可權。

5. 系統設定

全域性下系統的基礎配置,比如系統預設映象倉庫。

6. 安全

  • 角色
    一組許可權的集合

  • Pod安全策略
    Pod安全設定

  • 登入認證
    使用者的登入訪問認證

2.2、叢集層

1. 叢集
叢集儀表盤,顯示當前叢集的資源狀態

2. 主機
當前叢集中新增的所有主機

3. 儲存

  • 儲存類
  • 持久卷

4. 專案與名稱空間
此叢集擁有的專案和名稱空間

5. 叢集成員

6. 工具

  • 告警
  • 通知
  • 日誌
  • CI/CD

2.3、專案層

1. 工作負載

  • 工作負載服務

  • 負載均衡

  • 服務發現

  • 資料卷

  • CI/CD

2. 應用商店-專案

3. 資源

  • 告警

  • 證書

  • 配置對映

  • 日誌收集

  • 映象庫

  • 密文

4. 名稱空間

5. 專案成員

2.4、其他 (右上角登入選單)

1. API Keys
2. 主機模板
3. 喜好設定

三、Rancher v2.1.0功能列表

3.1、K8S叢集管理

功能
描述
多叢集管理 容器平臺能同時對多個Kubernetes叢集進行管理,包括建立叢集、刪除叢集、叢集搜尋、為叢集新增主機等。每個叢集有自己獨立的管理檢視,包括控制面板、主機檢視、容器檢視、應用檢視,可圖形化顯示其所包含的節點狀態和容器執行狀態,並可以對節點和容器操作。每個叢集上執行的應用和其他叢集隔離。
叢集基礎設施管理和部署 容器雲平臺能夠指定Kubernetes叢集的部署角色,包括etcd資料節點、API Server、Controller Manager控制節點、worker計算節點等。不同叢集能夠指定不同的容器網路模式,靈活支援目前社群主流的容器網路解決方案,包括flannel、Calico、Canal等。平臺能夠提供自動化部署工具,快速靈活的部署kubernetes叢集。
叢集管理許可權設定 可設定每個叢集的使用者角色和許可權,除預設內建角色外,支援在圖形介面進行細粒度的RBAC許可權自定義和角色建立。管理員可以建立自定義角色,指定對平臺內各種資源物件(包括但不限於Cluster、Pod、Deployment、ConfigMap等)的建立、刪除、編輯、列舉等各種細粒度的操作許可權。
匯入外部Kubernetes叢集管理 容器雲平臺必須能夠匯入外部Kubernetes叢集並進行管理的功能,以滿足對各種Kubernetes叢集統一納管的需求。匯入的Kubernetes叢集能夠通過容器雲平臺介面進行統一的角色管理,應用部署等各種操作。
Kubernetes多版本支援 支援Kubernetes目前的主要穩定開源版本,包括1.9、1.10、1.11、1.12。使用者在部署Kubernetes叢集時可以根據需要選擇相應的版本進行部署。
叢集升級 通過平臺建立的Kubernetes叢集,叢集的系統軟體,如Kubernetes版本、網路等系統服務軟體,可通過圖形介面線上升級或回退,不影響叢集環境中業務的使用。
Windows 叢集支援 可管理 Windows Kubernetes 叢集主機。

3.2、多租戶功能

功能
描述
基於獨立叢集的多租戶支援 容器雲平臺支援基於獨立叢集的多租戶隔離,可以為不同租戶建立並使用獨立的Kubernetes叢集。各叢集可以按需配置獨立的管理員、使用者及自定義角色,彼此之間完全隔離。
基於共享叢集的多租戶支援 容器雲平臺應支援叢集內部的多租戶隔離,叢集內租戶支援設定管理員、使用者及自定義RBAC角色,以滿足許可權管理需求。當基於單個叢集實現多租戶隔離時,同一個叢集內部的租戶應用彼此隔離,單個租戶內部的使用者僅能檢視和管理自己租戶內部的應用,且不同租戶應用容器之間需要實現網路隔離。
租戶許可權管理 支援租戶內使用者角色的管理和設定,支援RBAC自定義建立租戶內使用者角色和許可權,以實現靈活的許可權管理。

3.3、容器主機管理

功能
描述
納管虛擬機器 支援以圖形介面線上新增虛擬機器主機,新的主機被新增成功後將會顯示活動狀態,並可在圖形界檢視主機的具體配置資訊,包括但不限於主機名,IP地址,docker引擎版本號,作業系統版本,CPU/記憶體/磁碟配置資訊等。
納管物理機 支援以圖形介面線上新增物理機主機,新的主機被新增成功後將會顯示活動狀態,並可在圖形介面看到主機的具體配置資訊,包括但不限於主機名,IP地址,docker引擎版本號,作業系統版本,CPU/記憶體/磁碟配置資訊等。
內建Docker Machine驅動管理 內建Docker Machine驅動,可以對各類Docker的machine drivers進行配置和管理,方便使用者對接各類雲平臺、vSphere環境、OpenStack環境等。
主機分組管理 支援對不同的主機進行分組管理,可以使用標籤(或類似方式)標識,如按物理區域、安全區域、組織架構、專案、應用劃分打標籤邏輯分組,支援多標籤。
檢視主機效能狀態資訊 系統提供便捷的圖形化介面,以實現對容器主機相關效能和狀態資訊的監控和檢視。可以檢視的主機效能資訊包括,CPU、記憶體、網路和磁碟,容器分配情況、埠使用情況、標籤、儲存等關鍵資訊。
驅散容器功能 在對主機進行維護時,例如升級核心,硬體維護等,這個功能首先會禁止新的容器排程到這個節點,然後會對該節點上的容器有規則的進行驅散。完成主機維護後,可以恢復節點功能。
容器主機故障自動檢測和自動應用漂移 當某個主機故障時,無法和管理節點時間正常通訊時,則該主機將被表示為不可用狀態,並在圖形介面顯示。該狀態下管理節點將檢視重連該主機,同時會將該主機上執行的容器自動漂移到其他正常主機節點,以保證該情況下相關容器的服務訪問正常。

3.4、容器排程與管理

功能
描述
容器生命週期管理 平臺提供便捷操作容器服務圖形化介面,可以編輯容器資訊,可以啟動、重啟、停止、刪除、克隆容器。
並可在圖形介面上展示容器的資訊和執行狀態,包括健康狀態,容器名、IP地址、所在主機、映象和命令等
檢視容器狀態和效能 管理平臺可以通過圖形介面檢視容器關鍵效能和配置資訊,可以檢視標籤、儲存卷、埠對映、實時監控信等關鍵資訊,包括但不限於: CPU、記憶體、網路和磁碟、容器IP、Image、所使用主機等情況。
容器控制檯 圖形化介面可以直接調出該容器控制檯,管理介面可以操作容器的CLI,方便後臺控制人員執行命令列操作容器。
檢視容器日誌 管理平臺圖形化介面可以直接展示容器日誌資訊,並實時重新整理。
指定容器執行的主機 支援標籤或其它方式唯一限定容器執行主機。系統提供圖形化介面,設定容器編排排程規則。支援親和性/反親和性容器排程設定,系統提供圖形化介面,設定容器編排排程規則,支援基於標籤的親和性/反親和性排程,支援全部滿足/部分等過濾條件。

3.5、容器應用管理

功能
描述
容器應用堆疊管理 支援使用應用模板一鍵建立容器應用棧。可以從應用集合,服務集合的角度對容器進行集中的管理和配置。
應用管理檢視 支援以不同方式檢視、展現應用容器。至少支援根據命令空間Namespace、應用分類、容器執行節點、列表等方式展示容器列表。
通過上傳編排檔案直接部署應用 支援通過上yaml編排 檔案,一鍵部署和啟動應用。極大提高部署效率,降低部署難度和時間。
檢視、下載編排配置檔案 支援實時檢視kubernetes編排檔案配置內容。支援下載和儲存kubernetes編排檔案,方便配置編輯、儲存、重新部署和故障恢復。
統一呼叫非容器化服務或系統 管理平臺可方便的實現容器訪問外部的應用和服務,容器可以訪問如不適合進行容器化的大型應用(如MySQL/Oracle資料庫)。支援通過圖形介面建立相應的服務發現記錄,包括外部IP地址、外部主機名、DNS別名等多種方

3.6、容器管理

功能
描述
專案管理功能 專案是一個或多個 namespace 集合,叢集管理員和專案管理員可以從專案層級設定配額。可以配置該專案的CPU,記憶體,儲存,Pod數量等等的配額。同時,在每個專案裡,管理員也可以對每個namespace的配額進行控制。
容器服務健康檢查 系統內建對容器服務的健康檢查功能,支援在圖形介面進行以下健康檢查設定,包括:
• 可以設定基於HTTP的健康檢查。
• 可以設定基於TCP的健康檢查。
• 可以設定基於命令列命令的健康檢查。
• 可以設定健康檢查的顆粒度,如檢查次數、間隔、超時時間等。
支援通過圖形介面對容器設定不同的Liveness Check和Readniess check規則。
容器服務伸縮 提供圖形介面,可以便捷手動進行容器擴容和收縮。還提供容器基於CPU、記憶體等資源使用率狀態數值觸發的自動擴容縮容。
容器升級和回滾功能 提供圖形介面,可以便捷實現容器的升級和回滾操作。部署應用時可以設定應用的升級策略,包括新舊容器啟停順序、批量大小、最小就緒時間等等。
支援灰度釋出 可以實現灰度升級,升級過程中服務不中斷。升級後,圖形介面提供UI回滾到之前版本。當部署之前包括多個版本時,可提供多個版本進行回滾選擇。
伴隨容器服務 可以為主容器提供伴隨容器服務,在進行復雜應用部署時,可以提供支援。支援通過圖形介面建立伴隨容器。
1.可以為主容器建立伴隨容器。
2.伴隨容器可以和主容器同時啟動和同時關閉。
3.伴隨容器可以和主容器共享容器資料卷和容器網路。
容器可用性保障機制 可以設定服務容器的需要保證的有效數量,當系統故障時,平臺可保證有效的的容器數量。可以保證應用服務維持一定的容器數量,用來保證服務正常。服務故障時可以重新建立容器,保證服務正常。

3.7、容器網路管理

功能
描述
容器網路訪問策略控制 容器網路支援多租戶隔離和策略控制,同叢集內部的不同租戶可以實現網路的隔離和限制。
支援容器基本網路模式 支援容器共享主機網路方式,可以在管理介面上設定容器網路為主機共享網路模式,容器共享主機網路namespace,使用主機網絡卡進行容器內外部通訊。
支援高階網路模式 支援多種網路模式,容器平臺提供網路外掛,實現對容器IP和容器網路的管理,支援容器網路IP的自定義和跨主機容器網路互訪。至少同時支援Flannel/Calico、Canal主流網路技術。

3.8、負載均衡服務

功能
描述
內建負載均衡服務 內建容器負載均衡服務。通過圖形介面建立負載均衡,可以進行埠指定、服務指定、SSL證書、會話保持、自定義負載均衡配置、標籤及排程等各項功能。
可定義負載均衡會話保持策略 內建負載均衡服務可以配置可以配置並使用基於cookie的會話保持功能。
支援SSL終結功能 內建負載均衡服務可以配置可以配置並使用基於HTTPS的SSL終結功能。
負載均衡後端支援 提供圖形介面,負載均衡後端同時支援Kubernetes Service物件和Pod直連,以支援話保持設定。
支援高階訪問路由功能 提供圖形介面,可以配置負載均衡高階路由功能,實現根據URL頭資訊、Domain name、訪問路徑等不同實現七層資訊的轉發。

3.9、容器儲存服務

功能
描述
儲存型別支援 容器雲平臺應支援Kubernetes社群版本內建支援的所有儲存型別,包括FC、iSCSI、Ceph、Cinder、GlusterFS、AzureDisk、AWS EBS、ScaleIO等等。
方案提供方應該能夠提供自主產權且開源的分散式塊儲存方案,以滿足業務上對持久化儲存的要求
Persistent Volume支援 支援通過圖形介面建立Persistent Volume,支援的型別包括上述所列Kubernetes標準版本內建的儲存型別。使用者可以通過圖形介面方便的設定相關儲存引數。PV建立後可以在應用部署時通過圖形介面建立PVC使用。
Storage Class支援 支援通過圖形介面建立Storage Class以滿足儲存動態自動建立需求,支援的型別包括上述所列Kubernetes標準版本內建的儲存型別。使用者可以通過圖形介面方便的設定相關儲存引數。Storage Class建立後可以在應用部署時通過圖形介面使用。
超融合儲存支援 提供超融合儲存解決方案,支援基於容器叢集宿主機本地磁碟構建儲存池並與容器叢集進行整合。容器可利用本叢集內部的儲存池實現資料的持久化和高可用。

3.10、系統監控及日誌

功能
描述
系統監控 支援叢集和叢集內部租戶不同層級的監控設定,監控內容至少應包括:
• 系統元件健康狀態,如etcd、API Server等
• 系統部署事件,如建立Deployment、Service物件等。
• 主機資源利用率,如CPU、記憶體等
• 應用可用狀態,如Deployment中可用容器低於一定比例等。
系統告警 • 需要提供系統內建的告警系統
• 告警系統支援通過圖形介面設定告警目標,不同告警規則可按需設定告警目標。告警目標應支援多種企業級整合,至少要同時支援對電子郵件、Slack、PageDuty系統的支援。同時需要提供 Webhook擴充套件方式,實現對其他告警方式的支援和擴充套件。
• 告警規則支援臨時暫停、恢復,初始傳送延遲、傳送間隔等高階設定,以按需控制告警資訊的傳送。
系統日誌 平臺提供日誌收集代理,支援自動收集容器和應用程式日誌。
• 日誌系統能夠在叢集層面、專案層面分別對應不同的日誌平臺,以滿足使用者部門對日誌功能使用的靈活性,以滿足不同應用場景需求。
日誌平臺整合 • 日誌代理應支援業內主流日誌平臺整合,可以同時支援對ElasticSearch、Kafka、Splunk和Syslog的對接,使用者在圖形介面即可設定與上述平臺的自動化整合對接。
• 日誌系統能夠在叢集層面、專案層面分別對應不同的日誌平臺,以滿足使用者部門對日誌功能使用的靈活性

3.11、應用商店管理

功能
描述
容器應用商店 容器平臺支援容器化應用商店,實現容器應用的模板化展示和快速部署。應用商店應支援Kubernetes社群的Helm Charts模板。
企業級應用商店展示、組織及管理 提供圖形介面,可以檢視應用商店、實現應用模板的組織和管理。支援搜尋和分類選擇展示。
支援使用者互動的引數配置 在應用商店配置頁面中可配置模板版本和自定義引數,在配置過程中可以通過介面進行自定義配置。在啟動應用過程中,進行互動的引數可以自定義。同時不同的應用可以定義不同的引數。支援在應用商店模板中定義引數的型別、提示資訊、預設值等相關設定,應用部署展示UI可根據引數定義動態生成並展示相關頁面。
支援應用釋出版本管理 可以在應用商店中選擇應用的不同釋出版本,並啟動執行。應用商店出現該應用的新版本時,可自動提示正在執行的應用例項有新版本可以升級。
支援部署私有隔離的應用商店 管理平臺可以設定不同的應用商店路徑。每個路徑都可以指向一個獨立的應用商店,可以設定多個應用商店,應用可以放在不同的應用商店中進行隔離管理。

3.12、系統管理及安全

功能
描述
認證方式 容器雲平臺支援多種認證整合方式,除本地認證外,需支援主流的認證系統如微軟活動目錄、OpenLDAP、Github、Keycloak等,支援自定義認證外掛實現整合認證。
容器安全策略 容器雲平臺支援設定容器安全策略,對建立的容器進行安全管控,例如限制啟動特權容器、限制容器使用主機IPC模式、主機網路模式,限制容器可以對映的主機資料卷路徑等。容器安全策略應當支援繫結到特定叢集和叢集內部的多租戶隔離實現。
API祕鑰管理 容器雲平臺支援為不同使用者建立獨立的API祕鑰,API祕鑰僅當首次建立時可檢視。且支援進行API祕鑰自動過期設定,以確保系統安全。
配置對映(configmap) 提供圖形化介面,配置configmap以供服務呼叫。
密文管理(secret) 提供圖形化介面,配置secret以供服務呼叫。
證書管理 平臺提供圖形介面,可以對SSL證書進行管理。包括匯入證書、刪除證書等。證書可用於應用訪問SSL加密。

3.13、映象庫功能

功能
描述
對接外部私有映象倉庫 提供圖形介面,設定連線外部的映象倉庫,可設定外部倉庫的認證資訊實現認證整合。可以設定預設映象庫,設定映象庫白名單等。
專案管理 支援公有和私有專案型別:
• 公有: 公有專案中的映象所有使用者均有下載許可權;
• 私有: 私有專案中的映象只有專案內的成員有相應的操作許可權;
新建專案: 每當新建一個使用者時,系統都會預設建立一個以該使用者的使用者名稱為專案名稱的私有專案;系統管理員可以建立新的專案,專案詳情頁,可檢視映象和訪問控制列表。
搜尋專案: 支援輸入關鍵字進行專案搜尋;
映象生命週期管理 映象生命生命週期主要功能如下所示:
映象下載: 若映象為私有映象,使用者至少要獲得對應專案的下載許可權才能成功下載映象;
映象上傳: 使用者首先要擁有對應專案的提交許可權才能在該專案下上傳映象;
映象修改: 使用者可以修改映象的描述資訊,以及dockerfile;
映象複製: 實現映象在不同專案間的複製,使用者至少必須同時擁有源專案與目標專案的提交許可權;
映象刪除: 在映象列表可以選擇刪除映象的某個版本,也可以直接刪除整個映象。
異地映象倉庫同步 支援設定好同步關係,並且多映象倉庫之間映象自動同步。映象同步的最小顆粒度是容器專案。

3.14、系統整合支援

功能
描述
支援通過純命令列方式進行配置和管理 容器平臺提供命令列管理工具,可以通過命令列對容器管理平臺進行配置和管理。 方便運維人員開發自動化運維指令碼。
提供API介面 容器雲平臺應支援Restful API呼叫,以方便的與內部系統進行整合。API介面需求如下:
*支援頁面直接展現API呼叫內容
*所有頁面上的操作都能通過API支援
支援基於多租戶API呼叫的訪問授權。
針對不同的使用者,都可以生成Access key和Secret key祕鑰對,在獲取正確的祕鑰對後方能對API介面進行訪問。
容器作業系統 容器雲廠商在提供容器平臺的同時,還擁有知名的自主品牌的容器化作業系統平臺,以實現容器宿主機的快速建立和部署,降低系統資源消耗和受攻擊面。

3.15、CI/C功能

功能
描述
同時支援多原始碼管理 CI/CD支援公有Github、Gitlab和私有Gitlab程式碼庫的對接。
自動部署映象 打通了從程式碼提交,自動測試,自動構建映象,自動部署映象的全流程。
與應用商店整合 打通與應用商店的整合,可根據CI/CD的產物動態更新應用商店中的配置檔案,應用商店提示有更新可用。
靈活的流程控制 可以在最初的設定階段配置符合某既定要求的表示式或標籤,而系統會在執行階段根據執行情況自動跳過不符合該表示式或標籤的階段或步驟。如此一來,不同的程式碼分支可以自動匹配不同的CI流程,從而支援較為複雜的流程控制。

四、快速入門

【注意】:
本入門指南的目的是讓你快速的執行一個Rancher2.0環境,它不適用於生產。有關更全面的說明,請查閱Rancher安裝.


本章節將指導完成:

  • 安裝Rancher v2.0 ;
  • 建立第一個叢集;
  • 部署一個應用程式,如Nginx;

4.1、入門須知

  • 熟悉Linux基礎命令;
  • 瞭解SSH使用方法,瞭解公鑰/私鑰工作原理;
  • 熟悉Docker基本使用方法及基礎命令,比如:容器日誌檢視;
  • 瞭解SSL證書使用方法;
  • 瞭解負載均衡工作原理(L4/L7);
  • 瞭解域名解析原理;
  • 瞭解K8S基本概念

4.2、配置Linux主機

4.2.1、系統需求:

  • Ubuntu 16.04 +(64位)
  • Centos/RedHat Linux 7.5+(64位)
  • RancherOS 1.3.0+(64位)

4.2.2、硬體需求:

  • CPU: 2C
  • 記憶體: 4GB > 注意: 此配置僅為滿足小規模測試環境的最低配置。如用於生產,請參考基礎配置要求。

4.2.3、軟體需求:

  • 軟體: Docker
  • 支援的Docker版本:
    • 1.12.6
    • 1.13.1
    • 17.03.2

4.3、安裝Rancher

  1. 要想在主機上安裝Rancher,需要先登入到主機上,接著進行以下步驟:
  2. 通過shell工具(例如PuTTy或遠端終端連線)登入到主機

在shell中執行以下命令:

sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

4.4、登入Rancher

登入並開始使用Rancher。登入後,你將進行一些一次性配置。

  1. 開啟瀏覽器,輸入https://<server_ip>,server_ip替換為執行Rancher容器主機的ip;
  2. 因為是自動使用的自簽名證書,在第一次登入會提示安全授信問題,信任即可;
  3. 設定管理員密碼
    第一次登入會要求設定管理員密碼,預設管理員賬號為: admin
  4. 設定Rancher Server URL
    這個Rancher Server URL是agent節點註冊的地址,需要保證這個地址能夠被其他主機訪問

4.5、建立K8S叢集

現在建立第一個Kubernetes叢集,可以使用自定義選項。你可以新增雲主機、內部虛擬機器或物理主機作為叢集節點,節點可以執行任何一種或多種主流Linux發行版:

  1. 頁面右下角可以切換語言;
  2. 在全域性檢視下,點選選單中的叢集 , 並點選新增叢集;
  3. 選擇Custom,並設定叢集名稱,其他引數可不用修改,點選下一步;
  4. 選擇節點執行的角色
    預設會勾選Worker角色,根據需要可以一次勾選多種角色。比如,假設我只有一個節點,那就需要把所有角色都選擇上,選擇後上面的命令列會自動新增相應的命令引數;
  5. 如果是雲主機,需要新增主機的內網地址和對應的公網地址,如果是沒有公網的雲主機,可以跳過這步;
  6. 其他引數保持預設,點選命令列右側的複製按鈕,複製命令引數
    如果是多臺主機,根據角色的不同,需要複製多次
  7. 登入預新增叢集的主機,執行以上覆制的命令;
  8. 在主機上執行完命令後,最後點選完成;
  9. 回到全域性檢視,可以檢視叢集的部署狀態;
  10. 點選叢集名稱,進入叢集檢視

  11. 點選選單欄主機按鈕
  12. 叢集建立完成
  13. 叢集建立完成後,預設會生成Default專案,點選Default切換到專案檢視;

4.6、部署工作負載

工作負載是一個物件,包括pod以及部署應用程式所需的其他檔案和資訊。我們以nginx作為例如:

  1. 在Default檢視下,點選工作負載—部署服務
  2. 在部署工作負載頁面,設定工作負載名稱、副本數量、映象名稱、名稱空間、埠對映,其他引數保持預設,最後點選啟動;
  3. 部署完成
  4. 通過31174埠去訪問nginx服務。

五、安裝

5.1、基礎環境配置

5.1.1、主機配置

5.1.1.1、配置要求

硬體需求根據Rancher部署的規模進行擴充套件。根據需求配置每個節點。

部署大小叢集(個)節點(個)vCPU記憶體
不超過5 最多50 4C 16GB
不超過100 最多500 8C 32GB

5.1.1.2、作業系統選擇

  • Ubuntu 16.04(64位)
  • Centos/RedHat Linux 7.5+(64位)
  • RancherOS 1.3.0+(64位)
  • Windows Server 1803(64位)

5.1.1.3、Docker版本選擇

支援的Docker版本

  • 1.12.6
  • 1.13.1
  • 17.03.2
  • 17.06 (for Windows)

5.1.1.4、主機名配置

因為K8S的規定,主機名只支援包含-.(中橫線和點)兩種特殊符號,並且主機名不能出現重複。

5.1.1.5、Hosts

配置每臺主機的hosts(/etc/hosts),新增host_ip $hostname/etc/hosts檔案中。

5.1.1.6、CentOS關閉selinux

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

5.1.1.7、關閉防火牆(可選)或者放行相應埠

對於剛剛接觸Rancher的使用者,建議在關閉防火牆的測試環境或桌面虛擬機器來執行rancher,以避免出現網路通訊問題。

  • 關閉防火牆
    1、CentOS
    systemctl stop firewalld.service && systemctl disable firewalld.service
    
    2、Ubuntu
    ufw disable
    
  • 埠放行
    埠放行請檢視埠需求

5.1.1.8、配置主機時間、時區、系統語言

  • 檢視時區
    date -R
    或者
    timedatectl
    
  • 修改時區
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
  • 修改系統語言環境
    sudo echo 'LANG="en_US.UTF-8"' >> /etc/profile;source /etc/profile
    
  • 配置主機NTP時間同步

5.1.1.9、Kernel效能調優

【注意】: 數值根據實際環境自行配置
cat >> /etc/sysctl.conf<<EOF
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.neigh.default.gc_thresh1=4096
net.ipv4.neigh.default.gc_thresh2=6144
net.ipv4.neigh.default.gc_thresh3=8192
EOF

最後執行儲存配置

sysctl -p

5.1.1.10、核心模組

載入以下模組

modprobe br_netfilter
modprobe ip6_udp_tunnel
modprobe ip_set
modprobe ip_set_hash_ip
modprobe ip_set_hash_net
modprobe iptable_filter
modprobe iptable_nat
modprobe iptable_mangle
modprobe iptable_raw
modprobe nf_conntrack_netlink
modprobe nf_conntrack
modprobe nf_conntrack_ipv4
modprobe nf_defrag_ipv4
modprobe nf_nat
modprobe nf_nat_ipv4
modprobe nf_nat_masquerade_ipv4
modprobe nfnetlink
modprobe udp_tunnel
modprobe VETH
modprobe VXLAN
modprobe x_tables
modprobe xt_addrtype
modprobe xt_conntrack
modprobe xt_comment
modprobe xt_mark
modprobe xt_multiport
modprobe xt_nat
modprobe xt_recent
modprobe xt_set
modprobe xt_statistic
modprobe xt_tcpudp

5.1.1.11、ETCD叢集容錯表

建議在ETCD叢集中使用奇數個成員,通過新增額外成員可以獲得更高的失敗容錯。

叢集大小MAJORITY失敗容錯
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2
6 4 2
7 4 3
8 5 3
9 5 4

5.1.2、Docker安裝與配置

如果需要詳細瞭解docker有他相關操作,請詳見《中興飛流研發與交付部--docker在Ubuntu14.0.4 安裝配置 v1.5》以下操作步驟均在root使用者下操作,2個版本任選其一

5.1.2.1、Ubuntu安裝Docker

5.1.2.1.1、獲取docker_17.03.2~ce的deb下載地址

1、進入https://download.docker.com/linux/ubuntu/dists/頁面
2、在頁面中會看到ubuntu不同版本的代號,選擇自己對應的版本進入,此次安裝的是ubuntu16.04,因此選擇xenial連線進入


3、然後一路選擇xenial/pool/stable/amd64/,stable是穩定版本,ubuntu需要的是amd64的軟體格式
4、在https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/頁面就能找打所需要的穩定版本docker


5、右鍵點選在所需要的版本上,選擇複製連線地址,即可得到下載地址路徑,如下:
https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb

5.1.2.1.2、下載安裝docker-ce_17.03.2~ce版本

1、檢查核心是否符合要求,Docker 要求 Ubuntu 系統的核心版本高於 3.10 ,建議在Ubuntu14.04版本

root@duke:/var/cache/apt/archives#uname -r
3.13.0-135-generic

2、安裝docker

root@jetflow2:~/docker# wget https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb
--2017-12-19 19:30:29--  https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb
正在解析主機 download.docker.com (download.docker.com)... 52.85.158.200, 52.85.158.223, 52.85.158.109, ...
正在連線 download.docker.com (download.docker.com)|52.85.158.200|:443... 已連線。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度: 19183424 (18M) [application/x-debian-package]
正在儲存至: “docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb”
docker-ce_17.03.2~ce-0~ubuntu-xenial_ 100%[======================================================================>]  18.29M  26.0KB/s    in 11m 35s 
2017-12-19 19:42:05 (27.0 KB/s) - 已儲存 “docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb” [19183424/19183424])
root@jetflow2:~/docker# dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb

3、啟動docker 後臺服務

root@duke:service docker start
start: Job is already running: docker

5.1.2.1.3、獲取docker-1.13.1的tgz包下載地址

1、進入https://github.com/moby/moby/releases頁面


2、點選按鈕,進入以頁面就可以根據選擇選取版本


3、當前要選擇docker-ce_17.03.2~ce或者docker-1.13.1,因此經過翻頁後,找到對應版本,點選進入頁面,找到downloads資訊後,就可以找ubuntu系統上進行下載


4、Docker的tgz包加壓後,並不能載入到系統服務中,所以不太推薦此種方式安裝,建議還是採用deb包安裝方式,可以省去不必要的麻煩

5.1.2.1.4、下載docker-1.13.1.tgz版本

1、檢查核心是否符合要求,Docker 要求 Ubuntu 系統的核心版本高於 3.10 ,建議在Ubuntu14.04版本

root@duke:/var/cache/apt/archives#uname -r
3.13.0-135-generic

2、安裝docker

root@jetflow2:~/docker# wget https://get.docker.com/builds/Linux/x86_64/docker-1.13.1.tgz
--2017-12-20 13:57:23--  https://get.docker.com/builds/Linux/x86_64/docker-1.13.1.tgz
正在解析主機 get.docker.com (get.docker.com)... 54.182.1.40, 54.182.1.36, 54.182.1.148, ...
正在連線 get.docker.com (get.docker.com)|54.182.1.40|:443... 已連線。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度: 27851024 (27M) [application/x-tar]
正在儲存至: “docker-1.13.1.tgz”
docker-1.13.1.tgz                     100%[======================================================================>]  26.56M  56.1KB/s    in 9m 35s  
2017-12-20 14:07:00 (47.3 KB/s) - 已儲存 “docker-1.13.1.tgz” [27851024/27851024])

5.1.2.2、Centos安裝Docker

  • 修改系統源
    sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
    cat > /etc/yum.repos.d/CentOS-Base.repo << EOF
    
    [base]
    name=CentOS-$releasever - Base - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
            http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
            http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
            http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
            http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
            http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    EOF
    
  • Docker-ce安裝
    因為CentOS的安全限制,通過RKE安裝K8S叢集時候無法使用root賬戶。所以,建議CentOS使用者使用非root使用者來執行docker,不管是RKE還是custom安裝k8s,詳情檢視無法為主機配置SSH隧道。
    # 新增使用者(可選)
    sudo adduser `<new_user>`
    # 為新使用者設定密碼
    sudo passwd `<new_user>`
    # 為新使用者新增sudo許可權
    sudo echo '<new_user> ALL=(ALL) ALL' >> /etc/sudoers
    # 解除安裝舊版本Docker軟體
    sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-selinux \
                docker-engine-selinux \
                docker-engine \
                container*
    # 定義安裝版本
    export docker_version=17.03.2
    # step 1: 安裝必要的一些系統工具
    sudo yum update -y
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2 bash-completion
    # Step 2: 新增軟體源資訊
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # Step 3: 更新並安裝 Docker-CE
    sudo yum makecache all
    version=$(yum list docker-ce.x86_64 --showduplicates | sort -r|grep ${docker_version}|awk '{print $2}')
    sudo yum -y install --setopt=obsoletes=0 docker-ce-${version} docker-ce-selinux-${version}
    # 如果已經安裝高版本Docker,可進行降級安裝(可選)
    yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version}
    # 把當前使用者加入docker組
    sudo usermod -aG docker `<new_user>`
    # 設定開機啟動
    sudo systemctl enable docker
    

5.1.2.3、Docker配置

對於通過systemd來管理服務的系統(比如CentOS7.X、Ubuntu16.X), Docker有兩處可以配置引數: 一個是docker.service服務配置檔案,一個是Docker daemon配置檔案daemon.json

  • docker.service
    對於CentOS系統,docker.service預設位於/usr/lib/systemd/system/docker.service;對於Ubuntu系統,docker.service預設位於/lib/systemd/system/docker.service

  • daemon.json
    daemon.json預設位於/etc/docker/daemon.json,如果沒有可手動建立,基於systemd管理的系統都是相同的路徑。通過修改daemon.json來改過Docker配置,也是Docker官方推薦的方法。

    【注意】: 以下說明均基於systemd,並通過/etc/docker/daemon.json來修改配置。
  • 配置映象下載和上傳併發數
    從Docker1.12開始,支援自定義下載和上傳映象的併發數,預設值上傳為3個併發,下載為5個併發。通過新增”max-concurrent-downloads”和”max-concurrent-uploads”引數對其修改:
    "max-concurrent-downloads": 3,
    "max-concurrent-uploads": 5
    
  • 配置映象加速地址
    Rancher從v1.6.15開始到v2.x.x,Rancher系統相關的所有映象(包括1.6.x上的K8S映象)都託管在Dockerhub倉庫。Dockerhub節點在國外,國內直接拉取映象會有些緩慢。為了加速映象的下載,可以給Docker配置國內的映象地址。
    編輯/etc/docker/daemon.json加入以下內容

    {
    "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com/","https://IP:PORT/"]
    }
    
    【注意】: 可以設定多個registry-mirrors地址,以陣列形式書寫,地址需要新增協議頭(https或者http)。
  • 配置insecure-registries私有倉庫
    Docker預設只信任TLS加密的倉庫地址(https),所有非https倉庫預設無法登陸也無法拉取映象。insecure-registries字面意思為不安全的倉庫,通過新增這個引數對非https倉庫進行授信。可以設定多個insecure-registries地址,以陣列形式書寫,地址不能新增協議頭(http)。
    編輯/etc/docker/daemon.json加入以下內容:

    {
    "insecure-registries": ["192.168.1.100","IP:PORT"]
    }
    
  • 配置Docker儲存驅動
    OverlayFS是一個新一代的聯合檔案系統,類似於AUFS,但速度更快,實現更簡單。Docker為OverlayFS提供了兩個儲存驅動程式:舊版的overlay,新版的overlay2(更穩定)。
    先決條件:

    • overlay2: Linux核心版本4.0或更高版本,或使用核心版本3.10.0-514+的RHEL或CentOS。
    • overlay: 主機Linux核心版本3.18+
    • 支援的磁碟檔案系統
      • ext4(僅限RHEL 7.1)
      • xfs(RHEL7.2及更高版本),需要啟用d_type=true。 >具體詳情參考 Docker Use the OverlayFS storage driver
        編輯/etc/docker/daemon.json加入以下內容
        {
        "storage-driver": "overlay2",
        "storage-opts": ["overlay2.override_kernel_check=true"]
        }
        
  • 配置日誌驅動
    容器在執行時會產生大量日誌檔案,很容易佔滿磁碟空間。通過配置日誌驅動來限制檔案大小與檔案的數量。限制單個日誌檔案為100M,最多產生3個日誌檔案

    {
    "log-driver": "json-file",
    "log-opts": {
      "max-size": "100m",
      "max-file": "3"
      }
    }
    

5.1.2.4、Ubuntu\Debian系統 ,docker info提示WARNING: No swap limit support

Ubuntu\Debian系統下,預設cgroups未開啟swap account功能,這樣會導致設定容器記憶體或者swap資源限制不生效。可以通過以下命令解決:

sudo sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1  /g'  /etc/default/grub
sudo update-grub
【注意】:
通過以上命令可自動配置引數,如果/etc/default/grub非預設配置,需根據實際引數做調整。
【提示】:
以上配置完成後,建議重啟一次主機。

5.2、自簽名ssl證書

5.2.1、配置自定義CA認證

5.2.1.1、建立root CA私鑰

openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

執行步驟如下:

root@duke:~# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
Generating a 4096 bit RSA private key
.............................................++
.............................................++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:NanJing
Locality Name (eg, city) []:NanJing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:rancher
Organizational Unit Name (eg, section) []:info technology
Common Name (e.g. server FQDN or YOUR name) []:duke
Email Address []:[email protected]

5.2.1.2、為服務端(web)生成證書籤名請求檔案

如果你使用類似demo.rancher.com的FQDN域名訪問,則需要設定demo.rancher.com作為CN;如果你使用IP地址訪問,CN則為IP地址:

openssl req -newkey rsa:4096 -nodes -sha256 -keyout demo.rancher.com.key -out  demo.rancher.com.csr

或者

openssl req -newkey rsa:4096 -nodes -sha256 -keyout 192.168.0.2.key -out 192.168.0.2.csr

執行步驟如下:

【注意】:
Commone Name一定要是你要授予證書的FQDN域名或主機名,並且不能與生成root CA設定的Commone Name相同。
challenge password可以不填。
root@duke:~# openssl req -newkey rsa:4096 -nodes -sha256 -keyout 192.168.0.2.key -out 192.168.0.2.csr
Generating a 4096 bit RSA private key
....................................................................++
....................................................................++
writing new private key to '192.168.0.2.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:NanJing
Locality Name (eg, city) []:NanJing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:RANCHER
Organizational Unit Name (eg, section) []:info technology
Common Name (e.g. server FQDN or YOUR name) []:192.168.0.2
Email Address []:[email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:附屬屬性修改密碼,可以不填
An optional company name []:附屬屬性另一個公司名稱,可以不填

5.2.1.3、用1.1建立的CA證書給1.2生成的簽名請求進行簽名

openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out 192.168.0.2.crt

執行步驟如下:

root@duke:~#openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out 192.168.0.2.crt
Signature ok
subject=/C=CN/ST=NanJing/L=NanJing/O=RANCHER/OU=info technology/CN=192.168.0.2/[email protected]
Getting CA Private Key

5.2.1.4、使用IP進行簽名

如果你使用IP,例如192.168.0.2來連線,則可以改為執行以下命令

echo 'subjectAltName = IP:192.168.0.2' > extfile.cnf
openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out  192.168.0.2.crt

執行步驟如下:

root@duke:~#echo 'subjectAltName = IP:192.168.0.2' > extfile.cnf
root@duke:~#openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out 192.168.0.2.crt
Signature ok
subject=/C=CN/ST=NanJing/L=NanJing/O=RANCHER/OU=info technology/CN=192.168.0.2/[email protected]
Getting CA Private Key

【注意】:subjectAltName後的IP不需新增埠。

5.2.1.5、檢查檔案

經過上面步驟操作後,會生成ca.crt、ca.srl、ca.key、192.168.0.2.crt、192.168.0.2.key、192.168.0.2.csr、extfile.cnf這幾個檔案。

執行步驟如下:

root@duke:~#ls
192.168.0.2.crt 192.168.0.2.key ca.crt ca.srldocker-1.13.1.tgz kubectl shipyard var 模板 圖片 下載 桌面
192.168.0.2.csranaconda3ca.keydockerextfile.cnfmapd-docker-storage tigervncserver_1.6.80-4_amd64.deb 公共的 視訊 文件 音樂

5.2.3、配置Rancher的自定義CA認證

複製上面章節生成的金鑰到指定儲存路徑

cp 192.168.0.2.crt ca.crt 192.168.0.2.key /data/cert
cd /data/cert
cp 192.168.0.2.crt 192.168.0.2.pem
cp ca.crt ca.pem
cp 192.168.0.2.key 192.168.0.2_key.pem

5.3、安裝Rancher並配置SSL證書

Rancher安裝可以使用自己生成的自簽名證書。

先決條件:

  • 使用OpenSSL或其他方法建立自簽名證書。
  • 這裡的證書不需要進行base64加密。
  • 證書檔案必須是PEM格式。
  • 在你的證書檔案中,包含鏈中的所有中間證書。有關示例,請參考SSL常見問題/故障排除。

你的Rancher安裝可以使用你提供的自簽名證書來加密通訊。建立證書後,執行docker命令時把證書檔案對映到容器中。

docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -v /home/rancher/log:/var/log/auditlog \
  -e AUDIT_LEVEL=3 \
  -e AUDIT_LOG_PATH=/var/log/auditlog/rancher-api-audit.log \
  -e AUDIT_LOG_MAXAGE=20 \
  -e AUDIT_LOG_MAXBACKUP=20 \
  -e AUDIT_LOG_MAXSIZE=100 \
  -v /data/cert/pem/192.168.0.2.pem:/etc/rancher/ssl/cert.pem \
  -v /data/cert/pem/192.168.0.2_key.pem:/etc/rancher/ssl/key.pem \
  -v /data/cert/pem/ca.pem:/etc/rancher/ssl/cacerts.pem \
  rancher/rancher:latest

[參考文件]:

https://www.cnrancher.com/docs/rancher/v2.x/cn/overview/