一、概述
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主要用於管理各個節點上的容器。
所以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集群通信。
二、相關術語
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
- 要想在主機上安裝Rancher,需要先登錄到主機上,接着進行以下步驟:
- 通過shell工具(例如PuTTy或遠程終端連接)登錄到主機
在shell中執行以下命令:
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
4.4、登錄Rancher
登錄並開始使用Rancher。登錄后,你將進行一些一次性配置。
- 打開瀏覽器,輸入https://<server_ip>,server_ip替換為運行Rancher容器主機的ip;
- 因為是自動使用的自簽名證書,在第一次登錄會提示安全授信問題,信任即可;
- 設置管理員密碼
第一次登錄會要求設置管理員密碼,默認管理員賬號為: admin- 設置Rancher Server URL
這個Rancher Server URL是agent節點注冊的地址,需要保證這個地址能夠被其他主機訪問
4.5、創建K8S集群
現在創建第一個Kubernetes集群,可以使用自定義選項。你可以添加雲主機、內部虛擬機或物理主機作為集群節點,節點可以運行任何一種或多種主流Linux發行版:
- 頁面右下角可以切換語言;
- 在全局視圖下,點擊菜單中的集群 , 並點擊添加集群;
- 選擇 Custom,並設置集群名稱,其他參數可不用修改,點擊下一步;
- 選擇節點運行的角色
默認會勾選Worker角色,根據需要可以一次勾選多種角色。比如,假設我只有一個節點,那就需要把所有角色都選擇上,選擇后上面的命令行會自動添加相應的命令參數;- 如果是雲主機,需要添加主機的內網地址和對應的公網地址,如果是沒有公網的雲主機,可以跳過這步;
- 其他參數保持默認,點擊命令行右側的復制按鈕,復制命令參數
如果是多台主機,根據角色的不同,需要復制多次- 登錄預添加集群的主機,執行以上復制的命令;
- 在主機上執行完命令后,最后點擊完成;
- 回到全局視圖,可以查看集群的部署狀態;
- 點擊集群名稱,進入集群視圖
- 點擊菜單欄主機按鈕
- 集群創建完成
- 集群創建完成后,默認會生成Default項目,點擊Default切換到項目視圖;
4.6、部署工作負載
工作負載是一個對象,包括pod以及部署應用程序所需的其他文件和信息。我們以nginx作為例如:
- 在Default視圖下,點擊工作負載—部署服務
- 在部署工作負載頁面,設置工作負載名稱、副本數量、鏡像名稱、命名空間、端口映射,其他參數保持默認,最后點擊啟動;
- 部署完成
- 通過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、CentOSsystemctl stop firewalld.service && systemctl disable firewalld.service
2、Ubuntuufw 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 []:hzw97@126.com
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 []:hzw97@126.com 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/emailAddress=hzw97@126.com
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/emailAddress=hzw97@126.com
Getting CA Private Key
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