分享--Rancher 2.1平臺搭建及使用

本文背景:

分享--Rancher 2.1平臺搭建及使用

注意:

          Rancher 官方 中文文檔    https://docs.rancher.cn/


以下內容來源於下方這個鏈接:

https://www.cnblogs.com/hzw97/p/11608098.html


 

一、概述

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. 點擊集羣名稱,進入集羣視圖

    13.pnguploading.4e448015.gif轉存失敗重新上傳取消13.pnguploading.4e448015.gif轉存失敗重新上傳取消13.pnguploading.4e448015.gif轉存失敗重新上傳取消
  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

    系統源也可以看這篇   

               centos阿里雲更新源

               https://blog.csdn.net/frdevolcqzyxynjds/article/details/105086203

 

  • 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.srl docker-1.13.1.tgz kubectl shipyard var 模板 圖片 下載 桌面
192.168.0.2.csr anaconda3 ca.key docker extfile.cnf mapd-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/

 

 

 

 

 

— —

待續……

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章