Active Network實踐:構建Kubernetes平台的最佳工具

5
本文是Active Network公司IT副總裁Nate的分享,他将在文中介紹他們構建Kubernetes平台中用到的各類工具,為你構建穩定、可靠、便捷的K8S平台分享經驗和建議。

Kubernetes已經成為業界公認的容器編排事實标準,它幾乎無所不在。現在已經很難遇到一個從未了解Kubernetes這一技術的IT從業者。軟件開發、測試以及基礎設施都在其“業務範圍”内。

在創建一個生産就緒的Kubernetes平台之前,你需要準備好将應用程序從傳統環境中遷移出來,而這絕不是一項簡單的任務。你需要一個etcd數據庫、kube-controller、kube-scheduler、證書、core-DNS等。它還要投入資源和時間來調研以确定合适的組件組合以及可靠、自适應的測試方法以便在交換或增強組件時可以快速更改。

除了創建環境和管理流程之外,公司戰略戰術的規劃也格外重要。很少有公司僅僅為了滿足基礎設施的需求而開始采用容器。你的容器環境設計和技術棧更可能需要支持新舊計算形态,同時要避免重複使用資産、資源和費用。(技術棧和設計的功能示例如下圖)

圖1 搭建容器技術棧

圖2 容器環境設計

管理和自動化

Rancher是一個開源的企業級Kubernetes管理平台,為企業用戶提供Kubernetes-as-a-Service (Kubernetes即服務),它簡潔直觀的界面風格及操作體驗,極大程度解決了業界遺留已久的Kubernetes原生UI易用性不佳以及學習曲線陡峭的問題。通過使用Rancher,你可以遠離手動創建Kubernetes集群的痛苦并且可以一鍵自動設置集群。它還提供一套K8s集群所需的功能集,包括配置、訪問控制、全局DNS、災備和恢複、監控、日志以及集群升級。使用Ansible将可以為K8s節點配置 CentOS VMs。

日志和監控

Rancher具有内置的FluentD部署,可用于構建EFK堆棧。可以将每個集群配置為把FluentD日志推送到Elasticsearch實例。

Kibana是一個開源的可視化平台,可以極為方便地查看和搜索Elasticsearch日志。

Elasticsearch Github repo:

https://github.com/helm/chart...

Prometheus是一個收集監控指标的優質方案,Prometheus server可用于存儲時間序列數據,alert-manager可用于管理告警,node-exporter可從節點導出指标,Kube-state-metrics可以為所有k8s對象生成指标。

Prometheus Github repo:

https://github.com/helm/chart...

然而,Prometheus缺少用戶界面,因此需要Grafana,這是一個數據可視化工具。它能夠連接到Prometheus server,提供監控用的圖表和dashboard。

Grafana Github repo:

https://github.com/helm/chart...

管理和自動化

Rancher是一個開源的企業級Kubernetes管理平台,為企業用戶提供Kubernetes-as-a-Service (Kubernetes即服務),它簡潔直觀的界面風格及操作體驗,極大程度解決了業界遺留已久的Kubernetes原生UI易用性不佳以及學習曲線陡峭的問題。通過使用Rancher,你可以遠離手動創建Kubernetes集群的痛苦并且可以一鍵自動設置集群。它還提供一套K8s集群所需的功能集,包括配置、訪問控制、全局DNS、災備和恢複、監控、日志以及集群升級。使用Ansible将可以為K8s節點配置 CentOS VMs。

日志和監控

Rancher具有内置的FluentD部署,可用于構建EFK堆棧。可以将每個集群配置為把FluentD日志推送到Elasticsearch實例。

Kibana是一個開源的可視化平台,可以極為方便地查看和搜索Elasticsearch日志。

Elasticsearch Github repo:

https://github.com/helm/chart...

Prometheus是一個收集監控指标的優質方案,Prometheus server可用于存儲時間序列數據,alert-manager可用于管理告警,node-exporter可從節點導出指标,Kube-state-metrics可以為所有k8s對象生成指标。

Prometheus Github repo:

https://github.com/helm/chart...

然而,Prometheus缺少用戶界面,因此需要Grafana,這是一個數據可視化工具。它能夠連接到Prometheus server,提供監控用的圖表和dashboard。

Grafana Github repo:

https://github.com/helm/chart...

持久化存儲

在Kubernetes裡的一切都是動态的和無狀态的,這違背了傳統存儲方案的原則。因此,選擇一個可行的持久化存儲方案是你将面臨的其中一個難題。市場上有許多流行的解決方案,如Ceph、Rook、StarageIO以及Portworx。

其中,Portworx具有數據移動性、高可用性、平台獨立性、持久卷的動态加密配置。在worker節點上,我們建議anotherdisk(vmdk)通過Portworx創建存儲池。Portworx配備了名為stork的智能調度程序,可以通過僅在幾個工作節點上安裝Portworx來節省許可成本。

你可以使用這個helm chart部署Portworx:

https://github.com/portworx/h...

容器安全

容器安全在一直不斷發展,由于pod的動态特性,讓容器内發生的所有進程和通信具有可見性和可控制變得至關重要。Neuvector可以提供主機和pod的連續運行時保護,它可以通過掃描Kubernetes集群、節點、pod以及容器鏡像來保護容器不受安全漏洞的影響。此外,還有一個附帶的優勢是能夠為集群提供docker和kubernetes基準。它還能通過學習pod/service的良好行為來成為網絡防火牆,并且基于此動态創建安全策略。當service在“保護模式”中時,它能夠防止任何未經授權的進程或網絡通信為該pod或服務運行。

你可使用這個helm chart 部署 Neuvector:

https://github.com/neuvector/...

負載均衡

一旦應用程序部署在K8S集群中後,有幾個選項可以将它們暴露到集群外部。另一個需要考慮的因素是,如果你是将應用程序從傳統基礎架構遷移到容器中來,并且希望保留回滾的狀态或想要在傳統環境中保留現在已經遷移到K8S集群中的服務。

AVI Networks可以提供軟件定義的負載均衡器,它有一個控制平面和一個服務平面。這一負載均衡器提供負載均衡、流量管理、彈性伸縮以及端到端的自動化K8S服務。AVI在K8S雲上将服務引擎部署為PODS,它可以處理南北流量(即客戶端和服務器之間的流量),以及K8S服務的負載均衡。

每次在K8S雲中創建ingress時,AVI都配置了DNS服務器和IPAM池,可以自動創建虛拟服務。它将從IPAM分配一個IP,創建一個DNS入口并且配置後端的pod池。AVI同時能夠通過ingress的注釋添加各種HTTP策略以及網絡安全策略的功能。

CI/CD工具

由于所有東西及其依賴項都被打包到容器中,因此Kubernetes可以使得持續部署成為現實,它還能從特定的工作節點中調度工作負載。而滾動更新策略可以零停機執行持續部署。

Jenkins是一個十分出色的持續集成和鏡像構建的工具,它提供與Gitlab、Nexus、JFrog artifactory、SonarQube、Neuvector、Fority、Helm和Rancher進行進行集成,以構成一個完整的CI/CD 流水線。

Helm打包整個應用程序棧到chart中,包括應用程序所需的pod、服務、secert、ingress、持久化存儲等。Helm還能在跨不同環境的情況下保持部署一緻。(如下圖)

圖3 容器組件

總而言之,現在有很多方法可以幫助構建Kubernetes平台,将應用程序部署在K8S集群中變得比以往任何時候都更容易。我希望這能讓你更好地了解需要關注的領域以及知道哪些工具或平台能夠讓K8S集群在企業中成為現實。

你可能感興趣的

wWyY · 9月10日

111

回複

0

11111111

wWyY · 9月10日
0

222222222222

wWyY · 9月10日
RancherLabs 作者 · 9月11日

歡迎添加微信助手(rancher2),進官方技術群,了解更多Kubernetes使用攻略

回複

載入中...