Rancher是一套容器管理平臺,它能夠幫助組織在生產環境中輕鬆快捷的部署和管理容器。 Rancher能夠輕鬆地管理各類環境的Kubernetes,知足IT需求併爲DevOps團隊提供支持。html
Kubernetes不只已經成爲的容器編排標準,它也正在迅速成爲各種雲和虛擬化廠商提供的標準基礎架構。Rancher用戶能夠選擇使用Rancher Kubernetes Engine(RKE)建立Kubernetes集羣,也可使用GKE,AKS和EKS等雲Kubernetes服務。 Rancher用戶還能夠導入和管理現有的Kubernetes集羣。node
Rancher支持各種集中式身份驗證系統來管理Kubernetes集羣。例如,大型企業的員工可使用其公司Active Directory憑證訪問GKE中的Kubernetes集羣。IT管理員能夠在用戶,組,項目,集羣和雲中設置訪問控制和安全策略。 IT管理員能夠在單個頁面對全部Kubernetes集羣的健康情況和容量進行監控。linux
Rancher爲DevOps工程師提供了一個直觀的用戶界面來管理他們的服務容器,用戶不須要深刻了解Kubernetes概念就能夠開始使用Rancher。 Rancher包含應用商店,支持一鍵式部署Helm和Compose模板。Rancher經過各類雲、本地生態系統產品認證,其中包括安全工具,監控系統,容器倉庫以及存儲和網絡驅動程序。下圖說明了Rancher在IT和DevOps組織中扮演的角色。每一個團隊都會在他們選擇的公共雲或私有云上部署應用程序。nginx
Docker是容器打包和runtime標準。開發人員從Dockerfiles構建容器鏡像,並從Docker鏡像倉庫中分發容器鏡像。Docker Hub是最受歡迎的公共鏡像倉庫,許多組織還設置私有Docker鏡像倉庫。Docker主要用於管理各個節點上的容器。git
Kubernetes已成爲容器集羣管理標準,經過YAML文件來管理配置應用程序容器和其餘資源。Kubernetes執行諸如調度,擴展,服務發現,健康檢查,密文管理和配置管理等功能。github
一個Kubernetes集羣由多個節點組成:web
etcd database
一般在一個節點上運行一個etcd實例服務,但生產環境上,建議經過3個或5個(奇數)以上的節點來建立ETCD HA配置。docker
Master nodes
主節點是無狀態的,用於運行API Server,調度服務和控制器服務。shell
Worker nodes
工做負載在工做節點上運行。數據庫
默認狀況下Master節點也會有工做負載調度上去, 可經過命令設置其不加入調度
大多數Rancher2.0軟件運行在Rancher Server節點上,Rancher Server包括用於管理整個Rancher部署的全部組件。
下圖說明了Rancher2.0的運行架構。該圖描繪了管理兩個Kubernetes集羣的Rancher server安裝:一個由RKE建立,另外一個由GKE建立。
Rancher API server創建在嵌入式Kubernetes API服務器和etcd數據庫之上。它實現瞭如下功能:
Rancher API服務器
Rancher API server管理與外部身份驗證提供程序(如Active Directory或GitHub)對應的用戶身份
認證受權
Rancher API server管理訪問控制和安全策略
項目
項目是集羣中的一組多個命名空間和訪問控制策略的集合
節點
Rancher API server跟蹤全部集羣中全部節點的標識。
集羣控制器和集羣代理實現管理Kubernetes集羣所需的業務邏輯:
集羣控制器實現Rancher安裝所需的全局邏輯。它執行如下操做:
爲集羣和項目配置訪問控制策略
經過調用如下方式配置集羣:
單獨的集羣代理實例實現相應集羣所需的邏輯。它執行如下活動:
工做負載管理,例如每一個集羣中的pod建立和部署
綁定並應用每一個集羣全局策略中定義的角色
集羣與Rancher Server之間的通訊:事件,統計信息,節點信息和運行情況
該認證代理轉發全部Kubernetes API調用。它集成了身份驗證服務,如本地身份驗證,Active Directory和GitHub。在每一個Kubernetes API調用中,身份驗證代理會對調用方進行身份驗證,並在將調用轉發給Kubernetes主服務器以前設置正確的Kubernetes模擬標頭。Rancher使用服務賬戶與Kubernetes集羣通訊。
全局層主要對Rancher server自身的基礎配置,好比Rancher Server URL、登陸認證等。
1. 集羣
全局層的集羣菜單,用於列出集羣中全部的K8S集羣。
2. 主機驅動
用於與三方雲平臺API對接的中間件程序。
3. 應用商店-全局
全局層的應用商店,負責應用商店的開關與添加。
4. 用戶
添加或者刪除用戶,或者修改用戶的權限。
5. 系統設置
全局下系統的基礎配置,好比系統默認鏡像倉庫。
6. 安全
角色
一組權限的集合
Pod安全策略
Pod安全設置
登陸認證
用戶的登陸訪問認證
1. 集羣
集羣儀表盤,顯示當前集羣的資源狀態
2. 主機
當前集羣中添加的全部主機
3. 存儲
4. 項目與命名空間
此集羣擁有的項目和命名空間
5. 集羣成員
6. 工具
1. 工做負載
工做負載服務
負載均衡
服務發現
數據卷
CI/CD
2. 應用商店-項目
3. 資源
告警
證書
配置映射
日誌收集
鏡像庫
密文
4. 命名空間
5. 項目成員
1. API Keys
2. 主機模板
3. 喜愛設定
功能 |
|
---|---|
多集羣管理 | 容器平臺能同時對多個Kubernetes集羣進行管理,包括建立集羣、刪除集羣、集羣搜索、爲集羣添加主機等。每一個集羣有本身獨立的管理視圖,包括控制面板、主機視圖、容器視圖、應用視圖,可圖形化顯示其所包含的節點狀態和容器運行狀態,並能夠對節點和容器操做。每一個集羣上運行的應用和其餘集羣隔離。 |
集羣基礎設施管理和部署 | 容器雲平臺可以指定Kubernetes集羣的部署角色,包括etcd數據節點、API Server、Controller Manager控制節點、worker計算節點等。不一樣集羣可以指定不一樣的容器網絡模式,靈活支持目前社區主流的容器網絡解決方案,包括flannel、Calico、Canal等。平臺可以提供自動化部署工具,快速靈活的部署kubernetes集羣。 |
集羣管理權限設定 | 可設定每一個集羣的用戶角色和權限,除默認內置角色外,支持在圖形界面進行細粒度的RBAC權限自定義和角色建立。管理員能夠建立自定義角色,指定對平臺內各類資源對象(包括但不限於Cluster、Pod、Deployment、ConfigMap等)的建立、刪除、編輯、枚舉等各類細粒度的操做權限。 |
導入外部Kubernetes集羣管理 | 容器雲平臺必須可以導入外部Kubernetes集羣並進行管理的功能,以知足對各類Kubernetes集羣統一納管的需求。導入的Kubernetes集羣可以經過容器雲平臺界面進行統一的角色管理,應用部署等各類操做。 |
Kubernetes多版本支持 | 支持Kubernetes目前的主要穩定開源版本,包括1.九、1.十、1.十一、1.12。用戶在部署Kubernetes集羣時能夠根據須要選擇相應的版本進行部署。 |
集羣升級 | 經過平臺建立的Kubernetes集羣,集羣的系統軟件,如Kubernetes版本、網絡等系統服務軟件,可經過圖形界面在線升級或回退,不影響集羣環境中業務的使用。 |
Windows 集羣支持 | 可管理 Windows Kubernetes 集羣主機。 |
功能 |
|
---|---|
基於獨立集羣的多租戶支持 | 容器雲平臺支持基於獨立集羣的多租戶隔離,能夠爲不一樣租戶建立並使用獨立的Kubernetes集羣。各集羣能夠按需配置獨立的管理員、用戶及自定義角色,彼此之間徹底隔離。 |
基於共享集羣的多租戶支持 | 容器雲平臺應支持集羣內部的多租戶隔離,集羣內租戶支持設置管理員、用戶及自定義RBAC角色,以知足權限管理需求。當基於單個集羣實現多租戶隔離時,同一個集羣內部的租戶應用彼此隔離,單個租戶內部的用戶僅能查看和管理本身租戶內部的應用,且不一樣租戶應用容器之間須要實現網絡隔離。 |
租戶權限管理 | 支持租戶內用戶角色的管理和設置,支持RBAC自定義建立租戶內用戶角色和權限,以實現靈活的權限管理。 |
功能 |
|
---|---|
納管虛擬機 | 支持以圖形界面在線添加虛擬機主機,新的主機被添加成功後將會顯示活動狀態,並可在圖形界查看主機的具體配置信息,包括但不限於主機名,IP地址,docker引擎版本號,操做系統版本,CPU/內存/磁盤配置信息等。 |
納管物理機 | 支持以圖形界面在線添加物理機主機,新的主機被添加成功後將會顯示活動狀態,並可在圖形界面看到主機的具體配置信息,包括但不限於主機名,IP地址,docker引擎版本號,操做系統版本,CPU/內存/磁盤配置信息等。 |
內置Docker Machine驅動管理 | 內置Docker Machine驅動,能夠對各種Docker的machine drivers進行配置和管理,方便用戶對接各種雲平臺、vSphere環境、OpenStack環境等。 |
主機分組管理 | 支持對不一樣的主機進行分組管理,可使用標籤(或相似方式)標識,如按物理區域、安全區域、組織架構、項目、應用劃分打標籤邏輯分組,支持多標籤。 |
查看主機性能狀態信息 | 系統提供便捷的圖形化界面,以實現對容器主機相關性能和狀態信息的監控和查看。能夠查看的主機性能信息包括,CPU、內存、網絡和磁盤,容器分配狀況、端口使用狀況、標籤、存儲等關鍵信息。 |
驅散容器功能 | 在對主機進行維護時,例如升級內核,硬件維護等,這個功能首先會禁止新的容器調度到這個節點,而後會對該節點上的容器有規則的進行驅散。完成主機維護後,能夠恢復節點功能。 |
容器主機故障自動檢測和自動應用漂移 | 當某個主機故障時,沒法和管理節點時間正常通訊時,則該主機將被表示爲不可用狀態,並在圖形界面顯示。該狀態下管理節點將視圖重連該主機,同時會將該主機上運行的容器自動漂移到其餘正常主機節點,以保證該狀況下相關容器的服務訪問正常。 |
功能 |
|
---|---|
容器生命週期管理 | 平臺提供便捷操做容器服務圖形化界面,能夠編輯容器信息,能夠啓動、重啓、中止、刪除、克隆容器。 並可在圖形界面上展現容器的信息和運行狀態,包括健康狀態,容器名、IP地址、所在主機、鏡像和命令等 |
查看容器狀態和性能 | 管理平臺能夠經過圖形界面查看容器關鍵性能和配置信息,能夠查看標籤、存儲卷、端口映射、實時監控信等關鍵信息,包括但不限於: CPU、內存、網絡和磁盤、容器IP、Image、所使用主機等狀況。 |
容器控制檯 | 圖形化界面能夠直接調出該容器控制檯,管理界面能夠操做容器的CLI,方便後臺控制人員執行命令行操做容器。 |
查看容器日誌 | 管理平臺圖形化界面能夠直接展現容器日誌信息,並實時刷新。 |
指定容器運行的主機 | 支持標籤或其它方式惟一限定容器運行主機。系統提供圖形化界面,設置容器編排調度規則。支持親和性/反親和性容器調度設置,系統提供圖形化界面,設置容器編排調度規則,支持基於標籤的親和性/反親和性調度,支持所有知足/部分等過濾條件。 |
功能 |
|
---|---|
容器應用堆棧管理 | 支持使用應用模板一鍵建立容器應用棧。能夠從應用集合,服務集合的角度對容器進行集中的管理和配置。 |
應用管理視圖 | 支持以不一樣方式查看、展示應用容器。至少支持根據命令空間Namespace、應用分類、容器運行節點、列表等方式展現容器列表。 |
經過上傳編排文件直接部署應用 | 支持經過上yaml編排 文件,一鍵部署和啓動應用。極大提升部署效率,下降部署難度和時間。 |
查看、下載編排配置文件 | 支持實時查看kubernetes編排文件配置內容。支持下載和保存kubernetes編排文件,方便配置編輯、保存、從新部署和故障恢復。 |
統一調用非容器化服務或系統 | 管理平臺可方便的實現容器訪問外部的應用和服務,容器能夠訪問如不適合進行容器化的大型應用(如MySQL/Oracle數據庫)。支持經過圖形界面建立相應的服務發現記錄,包括外部IP地址、外部主機名、DNS別名等多種方 |
功能 |
|
---|---|
項目管理功能 | 項目是一個或多個 namespace 集合,集羣管理員和項目管理員能夠從項目層級設置配額。能夠配置該項目的CPU,內存,存儲,Pod數量等等的配額。同時,在每一個項目裏,管理員也能夠對每一個namespace的配額進行控制。 |
容器服務健康檢查 | 系統內置對容器服務的健康檢查功能,支持在圖形界面進行如下健康檢查設置,包括: • 能夠設定基於HTTP的健康檢查。 • 能夠設定基於TCP的健康檢查。 • 能夠設定基於命令行命令的健康檢查。 • 能夠設定健康檢查的顆粒度,如檢查次數、間隔、超時時間等。 支持經過圖形界面對容器設置不一樣的Liveness Check和Readniess check規則。 |
容器服務伸縮 | 提供圖形界面,能夠便捷手動進行容器擴容和收縮。還提供容器基於CPU、內存等資源使用率狀態數值觸發的自動擴容縮容。 |
容器升級和回滾功能 | 提供圖形界面,能夠便捷實現容器的升級和回滾操做。部署應用時能夠設置應用的升級策略,包括新舊容器啓停順序、批量大小、最小就緒時間等等。 |
支持灰度發佈 | 能夠實現灰度升級,升級過程當中服務不中斷。升級後,圖形界面提供UI回滾到以前版本。當部署以前包括多個版本時,可提供多個版本進行回滾選擇。 |
伴隨容器服務 | 能夠爲主容器提供伴隨容器服務,在進行復雜應用部署時,能夠提供支持。支持經過圖形界面建立伴隨容器。 1.能夠爲主容器建立伴隨容器。 2.伴隨容器能夠和主容器同時啓動和同時關閉。 3.伴隨容器能夠和主容器共享容器數據卷和容器網絡。 |
容器可用性保障機制 | 能夠設定服務容器的須要保證的有效數量,當系統故障時,平臺可保證有效的的容器數量。能夠保證應用服務維持必定的容器數量,用來保證服務正常。服務故障時能夠從新建立容器,保證服務正常。 |
功能 |
|
---|---|
容器網絡訪問策略控制 | 容器網絡支持多租戶隔離和策略控制,同集羣內部的不一樣租戶能夠實現網絡的隔離和限制。 |
支持容器基本網絡模式 | 支持容器共享主機網絡方式,能夠在管理界面上設置容器網絡爲主機共享網路模式,容器共享主機網絡namespace,使用主機網卡進行容器內外部通訊。 |
支持高級網絡模式 | 支持多種網絡模式,容器平臺提供網絡插件,實現對容器IP和容器網絡的管理,支持容器網絡IP的自定義和跨主機容器網絡互訪。至少同時支持Flannel/Calico、Canal主流網絡技術。 |
功能 |
|
---|---|
內置負載均衡服務 | 內置容器負載均衡服務。經過圖形界面建立負載均衡,能夠進行端口指定、服務指定、SSL證書、會話保持、自定義負載均衡配置、標籤及調度等各項功能。 |
可定義負載均衡會話保持策略 | 內置負載均衡服務能夠配置能夠配置並使用基於cookie的會話保持功能。 |
支持SSL終結功能 | 內置負載均衡服務能夠配置能夠配置並使用基於HTTPS的SSL終結功能。 |
負載均衡後端支持 | 提供圖形界面,負載均衡後端同時支持Kubernetes Service對象和Pod直連,以支持話保持設置。 |
支持高級訪問路由功能 | 提供圖形界面,能夠配置負載均衡高級路由功能,實現根據URL頭信息、Domain name、訪問路徑等不一樣實現七層信息的轉發。 |
功能 |
|
---|---|
存儲類型支持 | 容器雲平臺應支持Kubernetes社區版本內置支持的全部存儲類型,包括FC、iSCSI、Ceph、Cinder、GlusterFS、AzureDisk、AWS EBS、ScaleIO等等。 方案提供方應該可以提供自主產權且開源的分佈式塊存儲方案,以知足業務上對持久化存儲的要求 |
Persistent Volume支持 | 支持經過圖形界面建立Persistent Volume,支持的類型包括上述所列Kubernetes標準版本內置的存儲類型。用戶能夠經過圖形界面方便的設置相關存儲參數。PV建立後能夠在應用部署時經過圖形界面建立PVC使用。 |
Storage Class支持 | 支持經過圖形界面建立Storage Class以知足存儲動態自動建立需求,支持的類型包括上述所列Kubernetes標準版本內置的存儲類型。用戶能夠經過圖形界面方便的設置相關存儲參數。Storage Class建立後能夠在應用部署時經過圖形界面使用。 |
超融合存儲支持 | 提供超融合存儲解決方案,支持基於容器集羣宿主機本地磁盤構建存儲池並與容器集羣進行集成。容器可利用本集羣內部的存儲池實現數據的持久化和高可用。 |
功能 |
|
---|---|
系統監控 | 支持集羣和集羣內部租戶不一樣層級的監控設置,監控內容至少應包括: • 系統組件健康狀態,如etcd、API Server等 • 系統部署事件,如建立Deployment、Service對象等。 • 主機資源利用率,如CPU、內存等 • 應用可用狀態,如Deployment中可用容器低於必定比例等。 |
系統告警 | • 須要提供系統內建的告警系統 • 告警系統支持經過圖形界面設置告警目標,不一樣告警規則可按需設置告警目標。告警目標應支持多種企業級集成,至少要同時支持對電子郵件、Slack、PageDuty系統的支持。同時須要提供 Webhook擴展方式,實現對其餘告警方式的支持和擴展。 • 告警規則支持臨時暫停、恢復,初始發送延遲、發送間隔等高級設置,以按需控制告警信息的發送。 |
系統日誌 | 平臺提供日誌收集代理,支持自動收集容器和應用程序日誌。 • 日誌系統可以在集羣層面、項目層面分別對應不一樣的日誌平臺,以知足用戶部門對日誌功能使用的靈活性,以知足不一樣應用場景需求。 |
日誌平臺集成 | • 日誌代理應支持業內主流日誌平臺集成,能夠同時支持對ElasticSearch、Kafka、Splunk和Syslog的對接,用戶在圖形界面便可設置與上述平臺的自動化集成對接。 • 日誌系統可以在集羣層面、項目層面分別對應不一樣的日誌平臺,以知足用戶部門對日誌功能使用的靈活性 |
功能 |
|
---|---|
容器應用商店 | 容器平臺支持容器化應用商店,實現容器應用的模板化展現和快速部署。應用商店應支持Kubernetes社區的Helm Charts模板。 |
企業級應用商店展現、組織及管理 | 提供圖形界面,能夠查看應用商店、實現應用模板的組織和管理。支持搜索和分類選擇展現。 |
支持用戶交互的參數配置 | 在應用商店配置頁面中可配置模板版本和自定義參數,在配置過程當中能夠經過界面進行自定義配置。在啓動應用過程當中,進行交互的參數能夠自定義。同時不一樣的應用能夠定義不一樣的參數。支持在應用商店模板中定義參數的類型、提示信息、默認值等相關設置,應用部署展現UI可根據參數定義動態生成並展現相關頁面。 |
支持應用發佈版本管理 | 能夠在應用商店中選擇應用的不一樣發佈版本,並啓動運行。應用商店出現該應用的新版本時,可自動提示正在運行的應用實例有新版本能夠升級。 |
支持部署私有隔離的應用商店 | 管理平臺能夠設置不一樣的應用商店路徑。每一個路徑均可以指向一個獨立的應用商店,能夠設置多個應用商店,應用能夠放在不一樣的應用商店中進行隔離管理。 |
功能 |
|
---|---|
認證方式 | 容器雲平臺支持多種認證集成方式,除本地認證外,需支持主流的認證系統如微軟活動目錄、OpenLDAP、Github、Keycloak等,支持自定義認證插件實現集成認證。 |
容器安全策略 | 容器雲平臺支持設置容器安全策略,對建立的容器進行安全管控,例如限制啓動特權容器、限制容器使用主機IPC模式、主機網絡模式,限制容器能夠映射的主機數據卷路徑等。容器安全策略應當支持綁定到特定集羣和集羣內部的多租戶隔離實現。 |
API祕鑰管理 | 容器雲平臺支持爲不一樣用戶建立獨立的API祕鑰,API祕鑰僅當首次建立時可查看。且支持進行API祕鑰自動過時設置,以確保系統安全。 |
配置映射(configmap) | 提供圖形化界面,配置configmap以供服務調用。 |
密文管理(secret) | 提供圖形化界面,配置secret以供服務調用。 |
證書管理 | 平臺提供圖形界面,能夠對SSL證書進行管理。包括導入證書、刪除證書等。證書可用於應用訪問SSL加密。 |
功能 |
|
---|---|
對接外部私有鏡像倉庫 | 提供圖形界面,設置鏈接外部的鏡像倉庫,可設置外部倉庫的認證信息實現認證集成。能夠設置默認鏡像庫,設置鏡像庫白名單等。 |
項目管理 | 支持公有和私有項目類型: • 公有: 公有項目中的鏡像全部用戶均有下載權限; • 私有: 私有項目中的鏡像只有項目內的成員有相應的操做權限; 新建項目: 每當新建一個用戶時,系統都會默認建立一個以該用戶的用戶名爲項目名稱的私有項目;系統管理員能夠建立新的項目,項目詳情頁,可查看鏡像和訪問控制列表。 搜索項目: 支持輸入關鍵字進行項目搜索; |
鏡像生命週期管理 | 鏡像生命生命週期主要功能以下所示: 鏡像下載: 若鏡像爲私有鏡像,用戶至少要得到對應項目的下載權限才能成功下載鏡像; 鏡像上傳: 用戶首先要擁有對應項目的提交權限才能在該項目下上傳鏡像; 鏡像修改: 用戶能夠修改鏡像的描述信息,以及dockerfile; 鏡像複製: 實現鏡像在不一樣項目間的複製,用戶至少必須同時擁有源項目與目標項目的提交權限; 鏡像刪除: 在鏡像列表能夠選擇刪除鏡像的某個版本,也能夠直接刪除整個鏡像。 |
異地鏡像倉庫同步 | 支持設置好同步關係,而且多鏡像倉庫之間鏡像自動同步。鏡像同步的最小顆粒度是容器項目。 |
功能 |
|
---|---|
支持經過純命令行方式進行配置和管理 | 容器平臺提供命令行管理工具,能夠經過命令行對容器管理平臺進行配置和管理。 方便運維人員開發自動化運維腳本。 |
提供API接口 | 容器雲平臺應支持Restful API調用,以方便的與內部系統進行集成。API接口需求以下: *支持頁面直接展示API調用內容 *全部頁面上的操做都能經過API支持 支持基於多租戶API調用的訪問受權。 針對不一樣的用戶,均可以生成Access key和Secret key祕鑰對,在獲取正確的祕鑰對後方能對API接口進行訪問。 |
容器操做系統 | 容器雲廠商在提供容器平臺的同時,還擁有知名的自主品牌的容器化操做系統平臺,以實現容器宿主機的快速建立和部署,下降系統資源消耗和受攻擊面。 |
功能 |
|
---|---|
同時支持多源碼管理 | CI/CD支持公有Github、Gitlab和私有Gitlab代碼庫的對接。 |
自動部署鏡像 | 打通了從代碼提交,自動測試,自動構建鏡像,自動部署鏡像的全流程。 |
與應用商店集成 | 打通與應用商店的集成,可根據CI/CD的產物動態更新應用商店中的配置文件,應用商店提示有更新可用。 |
靈活的流程控制 | 能夠在最初的設置階段配置符合某既定要求的表達式或標籤,而系統會在執行階段根據執行狀況自動跳過不符合該表達式或標籤的階段或步驟。如此一來,不一樣的代碼分支能夠自動匹配不一樣的CI流程,從而支持較爲複雜的流程控制。 |
本章節將指導完成:
在shell中執行如下命令:
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
登陸並開始使用Rancher。登陸後,你將進行一些一次性配置。
- 打開瀏覽器,輸入https://<server_ip>,server_ip替換爲運行Rancher容器主機的ip;
- 由於是自動使用的自簽名證書,在第一次登陸會提示安全授信問題,信任便可;
- 設置管理員密碼
第一次登陸會要求設置管理員密碼,默認管理員帳號爲: admin- 設置Rancher Server URL
這個Rancher Server URL是agent節點註冊的地址,須要保證這個地址可以被其餘主機訪問
如今建立第一個Kubernetes集羣,可使用自定義選項。你能夠添加雲主機、內部虛擬機或物理主機做爲集羣節點,節點能夠運行任何一種或多種主流Linux發行版:
- 頁面右下角能夠切換語言;
- 在全局視圖下,點擊菜單中的集羣 , 並點擊添加集羣;
- 選擇 Custom,並設置集羣名稱,其餘參數可不用修改,點擊下一步;
- 選擇節點運行的角色
默認會勾選Worker角色,根據須要能夠一次勾選多種角色。好比,假設我只有一個節點,那就須要把全部角色都選擇上,選擇後上面的命令行會自動添加相應的命令參數;- 若是是雲主機,須要添加主機的內網地址和對應的公網地址,若是是沒有公網的雲主機,能夠跳過這步;
- 其餘參數保持默認,點擊命令行右側的複製按鈕,複製命令參數
若是是多臺主機,根據角色的不一樣,須要複製屢次- 登陸預添加集羣的主機,執行以上覆制的命令;
- 在主機上執行完命令後,最後點擊完成;
- 回到全局視圖,能夠查看集羣的部署狀態;
- 點擊集羣名稱,進入集羣視圖
- 點擊菜單欄主機按鈕
- 集羣建立完成
- 集羣建立完成後,默認會生成Default項目,點擊Default切換到項目視圖;
工做負載是一個對象,包括pod以及部署應用程序所需的其餘文件和信息。咱們以nginx做爲例如:
- 在Default視圖下,點擊工做負載—部署服務
- 在部署工做負載頁面,設置工做負載名稱、副本數量、鏡像名稱、命名空間、端口映射,其餘參數保持默認,最後點擊啓動;
- 部署完成
- 經過31174端口去訪問nginx服務。
硬件需求根據Rancher部署的規模進行擴展。根據需求配置每一個節點。
部署大小 | 集羣(個) | 節點(個) | vCPU | 內存 |
---|---|---|---|---|
小 | 不超過5 | 最多50 | 4C | 16GB |
中 | 不超過100 | 最多500 | 8C | 32GB |
支持的Docker版本
由於K8S的規定,主機名只支持包含 - 和 .(中橫線和點)兩種特殊符號,而且主機名不能出現重複。
配置每臺主機的hosts(/etc/hosts),添加host_ip $hostname到/etc/hosts文件中。
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
對於剛剛接觸Rancher的用戶,建議在關閉防火牆的測試環境或桌面虛擬機來運行rancher,以免出現網絡通訊問題。
systemctl stop firewalld.service && systemctl disable firewalld.service二、Ubuntu
ufw disable
date -R 或者 timedatectl
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo echo 'LANG="en_US.UTF-8"' >> /etc/profile;source /etc/profile
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
加載如下模塊
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
建議在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 |
若是須要詳細瞭解docker有他相關操做,請詳見《中興飛流研發與交付部--docker在Ubuntu14.0.4 安裝配置 v1.5》。如下操做步驟均在root用戶下操做,2個版本任選其一
一、進入https://download.docker.com/linux/ubuntu/dists/頁面
二、在頁面中會看到ubuntu不一樣版本的代號,選擇本身對應的版本進入,這次安裝的是ubuntu16.04,所以選擇xenial鏈接進入
三、而後一路選擇xenial/pool/stable/amd64/,stable是穩定版本,ubuntu須要的是amd64的軟件格式
四、在https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/頁面就能找打所須要的穩定版本docker
五、右鍵點擊在所須要的版本上,選擇複製鏈接地址,便可獲得下載地址路徑,以下:
https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb
一、檢查內核是否符合要求,Docker 要求 Ubuntu 系統的內核版本高於 3.10 ,建議在Ubuntu14.04版本
root@duke:/var/cache/apt/archives# uname -r
3.13.0-135-generic
二、安裝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
三、啓動docker 後臺服務
root@duke: service docker start
start: Job is already running: docker
一、進入https://github.com/moby/moby/releases頁面
二、點擊按鈕,進入以頁面就能夠根據選擇選取版本
三、當前要選擇docker-ce_17.03.2~ce或者docker-1.13.1,所以通過翻頁後,找到對應版本,點擊進入頁面,找到downloads信息後,就能夠找ubuntu系統上進行下載
四、Docker的tgz包加壓後,並不能加載到系統服務中,因此不太推薦此種方式安裝,建議仍是採用deb包安裝方式,能夠省去沒必要要的麻煩
一、檢查內核是否符合要求,Docker 要求 Ubuntu 系統的內核版本高於 3.10 ,建議在Ubuntu14.04版本
root@duke:/var/cache/apt/archives# uname -r
3.13.0-135-generic
二、安裝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])
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
# 添加用戶(可選) 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
對於經過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官方推薦的方法。
"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/"] }
配置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(更穩定)。
先決條件:
{ "storage-driver": "overlay2", "storage-opts": ["overlay2.override_kernel_check=true"] }
配置日誌驅動
容器在運行時會產生大量日誌文件,很容易佔滿磁盤空間。經過配置日誌驅動來限制文件大小與文件的數量。限制單個日誌文件爲100M,最多產生3個日誌文件
{ "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } }
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
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
若是你使用相似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
執行步驟以下:
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 []:附屬屬性另外一個公司名稱,能夠不填
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
若是你使用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
通過上面步驟操做後,會生成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 公共的 視頻 文檔 音樂
複製上面章節生成的密鑰到指定存儲路徑
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
Rancher安裝可使用本身生成的自簽名證書。
先決條件:
你的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