部分圖片顯示問題,特附上有道云筆記中的鏈接:http://note.youdao.com/noteshare?id=df78492d2c25383975c67f3eadf0bbd9&sub=4828390005C5458DAB0838EA1B775D28
K8s生產架構
Kubernetes的生產架構,如圖所示:

- client: Kubernetes集群外部用戶、客戶端等
- 服務訪問層:Traefik ingress實作服務發現、負載均衡和路由規則定義等
- 業務應用層:基于K8s平臺構建和運行的企業業務應用,如CI/CD持續集成,微服務專案、日志管理、監控告警、私有鏡像倉庫等服務,
- 基礎設定層:K8s容器管理平臺和資料是持久化存盤等系統組成的基礎設施服務,
基礎設施層
K8s平臺
- 部署管理:Kubernetes平臺除了直接使用公有云如阿里云、AWS等云服務提供商的K8s服務外,我們還可以自己部署和管理等,如使用Kubespray工具,
- 網路通信:在容器和容器之間、容器和主機網路方面,可以使用Calico或Flannel等方案,
- HA高可用:Kubernetes節點分為Master和Node兩種型別節點,前者負責運行集群相關的控制管理服務,而后者負責運行Pod容器,在多Node節點模式下,由于Kubernetes Pod具有天然的容災冗余HA高可用實作,因此,我們并不需要關心Node節點的HA高可用,而只需關心Master節點的HA即可,Master節點的HA高可用,通過多Master節點+HAProxy方案實作即可,從Kubernetes 1.12版本起,kube-proxy服務默認使用ipvs實作,取消了之前的iptables,這有助于提升K8s大規模集群環境下的性能和穩定性,
- Docker和作業系統優化:在生產環境中,Docker和作業系統版本應當使用較新的release版本,并且,主機作業系統應當做一定程度的優化配置,如關閉swap記憶體交換磁區,預留一定的CPU核數和記憶體資源給宿主機使用等,
業務應用層
- 鏡像管理:使用Harbor私有鏡像倉庫服務;
- Harbor是一個用于存盤和分發Docker鏡像的企業級Registry服務器,
- 鏡像的存盤harbor使用的是官方的docker registry(v2命名是distribution)服務去完成,harbor在docker distribution的基礎上增加了一些安全、訪問控制、管理的功能以滿足企業對于鏡像倉庫的需求,
- harbor以docker-compose的規范形式組織各個組件,并通過docker-compose工具進行啟停,
- docker的registry是用本地存盤或者s3都是可以的,harbor是在docker的registry的功能之上提供用戶權限管理、鏡像復制等功能,提高使用的registry的效率,
- 日志管理:使用Elasticsearch、Filebeat 和 Kibana技術堆疊;
- Elasticsearch:是一個基于Lucene庫的搜索引擎,它提供了一個分布式、支持多租戶的全文搜索引擎,可以用于搜索各種檔案,提供可擴展的搜索,具有接近實時的搜索,并支持多租戶,
- Filebeat:是一個日志檔案托運工具,在你的服務器上安裝客戶端后,filebeat會監控日志目錄或者指定的日志檔案,追蹤讀取這些檔案(追蹤檔案的變化,不停的讀),并且轉發這些資訊到elasticsearch或者logstarsh中存放,
- Kibana: 作為可視化的展示平臺,
- 監控告警管理:使用Cadvisor、Prometheus和Grafana技術堆疊;
- 微服務架構:使用Service Mesh服務網格中的Istio方案;
- Istio:是一個由 IBM、Google 以及 Lyft 聯合推出的開源軟體,以無痛方式為運行在 Kubernetes 上的微服務提供流量管理,訪問策略管理以及監控等功能,
- Devops:使用Gitlab、Jenkins等持續集成工具;
- 單體應用:無狀態類服務使用deployment,有狀態類服務則使用Statefulset,如果關聯的服務較多且復雜則使用Helm,
- 規劃好Namespace:應當做到每個namespace專屬用于某型別的應用,如monitor namespace統一管理諸如監控告警和日志管理方面的pod、service、pvc、ingress等資源,這樣,可以較為方便的管理和區分K8s上的各種應用,
服務訪問層
外部客戶端訪問K8s集群內的服務、負載均衡和路由規則定義使用Traefik Ingress實作,此外,應當實作Ingress服務HA高可用,可以想象在K8s集群中,大量的出入口流量都進過Ingress,其負載是非常大的,其重要程度不言而喻,因此實作HA就非常重要,ingress controller節點(無論是基于nginx還是traefik實作)應當至少為2個節點,并在這些節點上,部署Keepalived和HAproxy共同維護一個VIP地址,將其提供給ingress使用,

-
在該架構中,Ingress節點一般使用獨立的服務器,即只做將集群外部流量接入到集群內部,除了使用external Ip來暴露ingress的Service到集群外部,還可以使用hostNetwork,如果是公有云,還可以使用LoadBalance,這樣Ingress Controller將監聽節點的80和443埠,通過熱備的形式部署多個ingress節點,并在每個節點上部署Keepalived,多個節點共同維護一個VIP,實作Ingress服務的高可用,
-
如上圖所示,部署兩個ingress節點172.16.10.11和172.16.10.12,公網ip映射或轉發到內網的VIP地址172.16.10.10上(如果VIP本身是公網IP則可以不用轉發),ingress controller的副本數replicaCount為2,將被調度到node1和node2這兩個節點上,同時,使用pod反親和性禁止ingress pod調度在同一個節點上,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/95224.html
標籤:其他
上一篇:k8s(1.14.0)+etcd(3.3.10)+flanneld(0.10)
下一篇:RS422介面與RS485介面
