當前位置:編程學習大全網 - 源碼下載 - 如何訪問k8s集群內部署的mysql服務

如何訪問k8s集群內部署的mysql服務

雖然 kubernetes 社區壹直在努力使得有狀態應用成為壹等公民,也推出了 statefulset 控制器支持 pod 的順序部署,穩定的域名訪問和存儲訪問。但鑒於 MySQL 部署運維的多樣性和復雜性,在 kubernetes 上部署 MySQL 仍然要面臨眾多挑戰。

1、業務流量入口的配置方式

傳統虛擬機環境下,我們通過虛IP的方式,讓業務應用都配置事先定義的壹個虛IP為鏈接數據庫的地址,然後由高可用服務保證虛IP始終能被路由到master數據庫。在kubernetes中,出現了壹層網絡插件屏蔽了底層網絡拓撲,高可用服務管理虛IP的方式需要隨之適應調整,比如通過service結合標簽完成虛IP的漂移,但service本身是kubernetes提供的壹項功能,其可靠性和性能都取決於kubernetes服務的穩定。以性能來說,service是kubeproxy組件通過配置iptables實現的,當iptables規則較多時不可避免的會產生時延,需要我們針對性的解決。

2、容器隔離帶來的監控視野問題

在 kubernetes 中,如果將 MySQL 制作為 container 運行在壹個 pod 中,container 會將 MySQL 進程和運行環境隔離在壹個單獨的 namespace 中。監控組件在獲取 MySQL 的壹些 metirc 時,可能不得不進入與 MySQL 同壹個 namespace 中,在部署和設計監控組件時需要考慮到這些限制。

3、存儲在 kubernetes 中,支持配置各種不同的存儲。

如果使用本地存儲 local persistent volume,則需要綁定 MySQL 在壹個固定的節點,這就完全浪費了 kubernetes 靈活調度的天然優勢;而如果使用遠程***享存儲,確實是將 MySQL 進程與其存儲完全解耦,使得 MySQL 進程可以在任意節點調度,然而考慮到高 I/O 吞吐量的情況,就不是那麽美好了。設計時需要考量遠程存儲是否能夠滿足 MySQL 的帶寬要求。

4、高可用/備份恢復

kubernetes 提供的 statefulset 控制器只能提供最基本的部署,刪除功能,無法實現完善的 MySQL 集群高可用/備份恢復操作。對於有狀態應用的部署,仍需要定制開發,所以多數公司提供了定制的 operator 來完成應用容器的管理。比如 etcd operator,MySQL operator,後文將為大家詳述我測試使用 MySQL operator 的壹些記錄。

  • 上一篇:全屏全網站源代碼
  • 下一篇:急求Java五子棋代碼。。。要絕對的原創(可以加分)
  • copyright 2024編程學習大全網