您好,登錄后才能下訂單哦!
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/charts/tree/master/stable/elasticsearch
Prometheus是一個收集監控指標的優質方案,Prometheus server可用于存儲時間序列數據,alert-manager可用于管理告警,node-exporter可從節點導出指標,Kube-state-metrics可以為所有k8s對象生成指標。
Prometheus Github repo:
https://github.com/helm/charts/tree/master/stable/prometheus
然而,Prometheus缺少用戶界面,因此需要Grafana,這是一個數據可視化工具。它能夠連接到Prometheus server,提供監控用的圖表和dashboard。
Grafana Github repo:
https://github.com/helm/charts/tree/master/stable/grafana
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/charts/tree/master/stable/elasticsearch
Prometheus是一個收集監控指標的優質方案,Prometheus server可用于存儲時間序列數據,alert-manager可用于管理告警,node-exporter可從節點導出指標,Kube-state-metrics可以為所有k8s對象生成指標。
Prometheus Github repo:
https://github.com/helm/charts/tree/master/stable/prometheus
然而,Prometheus缺少用戶界面,因此需要Grafana,這是一個數據可視化工具。它能夠連接到Prometheus server,提供監控用的圖表和dashboard。
Grafana Github repo:
https://github.com/helm/charts/tree/master/stable/grafana
在Kubernetes里的一切都是動態的和無狀態的,這違背了傳統存儲方案的原則。因此,選擇一個可行的持久化存儲方案是你將面臨的其中一個難題。市場上有許多流行的解決方案,如Ceph、Rook、StarageIO以及Portworx。
其中,Portworx具有數據移動性、高可用性、獨立性、持久卷的動態加密配置。在worker節點上,我們建議anotherdisk(vmdk)通過Portworx創建存儲池。Portworx配備了名為stork的智能調度程序,可以通過僅在幾個工作節點上安裝Portworx來節省許可成本。
你可以使用這個helm chart部署Portworx:
https://github.com/portworx/helm/tree/master/charts/portworx
容器安全在一直不斷發展,由于pod的動態特性,讓容器內發生的所有進程和通信具有可見性和可控制變得至關重要。Neuvector可以提供主機和pod的連續運行時保護,它可以通過掃描Kubernetes集群、節點、pod以及容器鏡像來保護容器不受安全漏洞的影響。此外,還有一個附帶的優勢是能夠為集群提供docker和kubernetes基準。它還能通過學習pod/service的良好行為來成為網絡防火墻,并且基于此動態創建安全策略。當service在“保護模式”中時,它能夠防止任何未經授權的進程或網絡通信為該pod或服務運行。
你可使用這個helm chart 部署 Neuvector:
https://github.com/neuvector/neuvector-helm
一旦應用程序部署在K8S集群中后,有幾個選項可以將它們暴露到集群外部。另一個需要考慮的因素是,如果你是將應用程序從傳統基礎架構遷移到容器中來,并且希望保留回滾的狀態或想要在傳統環境中保留現在已經遷移到K8S集群中的服務。
AVI Networks可以提供軟件定義的負載均衡器,它有一個控制平面和一個服務平面。這一負載均衡器提供負載均衡、流量管理、彈性伸縮以及端到端的自動化K8S服務。AVI在K8S云上將服務引擎部署為PODS,它可以處理南北流量(即客戶端和服務器之間的流量),以及K8S服務的負載均衡。
每次在K8S云中創建ingress時,AVI都配置了DNS服務器和IPAM池,可以自動創建虛擬服務。它將從IPAM分配一個IP,創建一個DNS入口并且配置后端的pod池。AVI同時能夠通過ingress的注釋添加各種HTTP策略以及網絡安全策略的功能。
由于所有東西及其依賴項都被打包到容器中,因此Kubernetes可以使得持續部署成為現實,它還能從特定的工作節點中調度工作負載。而滾動更新策略可以零停機執行持續部署。
Jenkins是一個十分出色的持續集成和鏡像構建的工具,它提供與Gitlab、Nexus、JFrog artifactory、SonarQube、Neuvector、Fority、Helm和Rancher進行進行集成,以構成一個完整的CI/CD 流水線。
Helm打包整個應用程序棧到chart中,包括應用程序所需的pod、服務、secert、ingress、持久化存儲等。Helm還能在跨不同環境的情況下保持部署一致。(如下圖)
圖3 容器組件
總而言之,現在有很多方法可以幫助構建Kubernetes平臺,將應用程序部署在K8S集群中變得比以往任何時候都更容易。我希望這能讓你更好地了解需要關注的領域以及知道哪些工具或平臺能夠讓K8S集群在企業中成為現實。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。