分析 Kubeadm 叢集更新流程

前言

昨天分享了如何使用 Kubeadm 工具來升級既有叢集,過程中可以發現 Kubeadm 升級時,將許多複雜的工作做了許多簡化,因此讓不熟悉 Kubernetes 的人也能輕易達成叢集元件更新事情。雖然工具協助我們更簡單的達成某些功能是很好的事,但不是所有狀況都能透過 Kubeadm,假設在升級時,發生問題的話,要該怎麼辦呢?這時可能會因為不熟悉整個升級過程,而不知如何下手來解決問題。基於上述原因,今天就是要來分析 Kubeadm 的叢集更新是如何實作的,以讓我們能夠在發生問題時,更快的解決。

Read More

Share Comments

動手嘗試 Kubernetes 叢集更新吧

前言

許多人都知道,讓應用程式保持較新的狀態,以優化安全性與效能是一種好習慣,這點套用在 Kubernetes 元件升級上也適用,因為 Kubernetes 每三個月左右就會有新的功能發布或改變,且隨著 Kubernetes 盛行,越來越多安全漏洞被揭露後,升級叢集慢慢變成一件重要議題。但 Kubernetes 並不像升級叢集中的應用程式那麼簡單,因為需要考慮各層面問題,就如昨天提到的內容一樣,要針對每一種可能發生狀況先有個認知,以盡可能在發生狀況時,能夠化險為夷。很慶幸的是,這方面越來越受到重視,有許多 Kubernetes 部署工具開始試圖引入一些機制與流程來簡化更新叢集的過程,雖然這並不能解決所有會發生問題,但至少我們可以善用工具來增加更新的正確性與成功率。

Read More

Share Comments

淺談 Kubernetes 叢集元件更新

前言

在 Kubernetes 的快速發展下,每隔三個月左右,我們就會看到新版本的推出,以及舊版本進入 EOL(End of Life) 狀態,這時一但想要嘗試新功能與特性,或者是由於安全漏洞關析需要進行補丁時,就必須面對升級 Kubernetes 叢集元件問題。但是若在生產環境中,隨意升級 Kubernetes 叢集元件會不會發生什麼問題?

是的,若對於 Kubernetes 不熟悉的話,很容易掉入陷阱,比如說:已被棄用的 API、不相容的 Add-ons 版本、已棄用的元件參數、不正確的升級方式等等,這些都是有可能在升級後,導致 Kubernetes 叢集功能無法正常工作的原因。

Read More

Share Comments

實現 Kubernetes 高可靠架構部署

前言

隨著團隊越來越多地在生產環境使用 Kubernetes 管理雲原生應用程式,我們必須考量在各種故障下,Kubernetes 能正常運行的情況,比如說:在流量高峰期間,將工作負載分散到更多節點或轉往公有雲、跨多個 Availability Zones/Regions 部署、建構高可靠(Highly Available,HA)架構等等要求。其中高可靠架構在昨天的淺談 Kubernetes 高可靠架構文章中,簡單地複習了高可靠架構。而今天將說明如何實現與利用 kubeadm 建立一座架構大致如下圖所示的 HA 叢集。

Read More

Share Comments

淺談 Kubernetes 高可靠架構

前言

近幾年來容器的興起,重塑了我們對於開發、部署與維運軟體的方式。容器允許我們透過打包應用程式成容器映像檔,並透過容器引擎部署到一組虛擬或實體的機器上執行。也正因為這樣過程與需求,產生了所謂的容器編排系統(Container Orchestration),以自動化、基於容器應用程式的方式部署、管理與擴展。其中 Kubernetes 就是近年來的一套容器編排系統標準,它能允許大規模部署與管理基於容器的應用程式,而 Kubernetes 的特性還能實現分散式的應用程式,以帶來更高的可靠性與穩定性。但是,當 Kubernetes 重要元件或是其主節點(Master Node)發生故障時,那 Kubernetes 會發生什麼事呢?又該如何確保 Kubernetes 本身保持正常運行呢?

Read More

Share Comments

淺談 Kubernetes 的部署工具選擇 Part3

前言

在昨天文章中,我針對開發環境(Development)測試環境(Testing)使用情境下,選擇 Kubernetes 工具的看法,而今天將延續 淺談 Kubernetes 的部署工具選擇 Part2 未講完的部分繼續分享預備環境(Staging)生產環境(Production)看法。

Read More

Share Comments

淺談 Kubernetes 的部署工具選擇 Part2

前言

上一篇 淺談 Kubernetes 的部署工具選擇 Part1 提到選擇部署工具時,需要思考的幾件事情,並簡單提了一下目前 Kubernetes SIG cluster lifecycle 的發展。而今天我將依據不同環境與情境來說明自己怎麼選用 Kubernetes 部署工具。

原本這篇是要放在第一天一起講,但是發現一天超過 6000 字似乎有點壓力… 感覺三天後我就放推了,但因為是團隊報名,所以不能放棄!!!只好拆成三篇來分享。

Read More

Share Comments

淺談 Kubernetes 的部署工具選擇 Part1

前言

我們都知道 Kubernetes 有很多特性可以確保系統與應用程式能夠更加穩定、部署更加流暢與管理更加簡單,而且使用起來也相對容易,但在自建(或地端)部署時,卻與想像的不同,有很多需要關注的問題與事情,例如:高可靠性(Highly Available,HA)、如何安全地更新叢集、裸機負載平衡器(Bare-metal Load Balancer)、動態 DNS 更新、硬體設備整合、分散式儲存整合與離線安裝(Offline Installation)等等,除了上述問題外,還要為了客戶能夠對部署的 Kubernetes 更有信心,因此必須進行壓力測試、E2E 測試、一致性測試與叢集安全掃描等等。從上述簡短的描述中,可以了解到自己蓋一套可以用的 Kubernetes 叢集,並且自己維運是多麼麻煩的事,這對公司來說都是成本支出。也正因此大多數人會偏向使用公有雲的 Kubernetes 服務,如 EKS、GKE 與 AKS 等等來減少維運成本的支出。下圖顯示不同部署的方式需要管理的部分。

Read More

Share Comments

KubeFed: Kubernetes Federation v2

Kubernetes Federation(聯邦) 一直是很有趣的議題,並被重視的功能,Federation 目的是希望實現單一叢集統一管理多個 Kubernetes 叢集的機制,這些叢集可能是跨地區(Region),也可能是在不同公有雲供應商(Cloud Provider)上,亦或者是公司內部自行建立的叢集。一但叢集進行聯邦後,就可以利用 Federation API 資源來統一管理多個叢集的 Kubernetes API 資源,如定義 Deployment 如何部署到不同叢集上,其叢集所需的副本數等。

而 Kubernetes Federation 的誕生正是希望利用聯邦機制來解決一些問題,並達到一些好處,如以下:

  • 簡化管理多個叢集的 Kubernetes 物件(如 Deployment, Service 等)。
  • 在多個叢集之間分散工作負載(容器),以提升應用程式(服務)的可靠性。
  • 跨叢集的資源排程,依據排程策略在多個叢集進行應用程式(服務)部署。
  • 在不同叢集中,能更快速更容易地遷移應用程式(服務)。
  • 跨叢集的服務發現,服務可以提供給當地存取,以降低延遲。
  • 實踐多雲(Multi-cloud)或混合雲(Hybird Cloud)的部署。

Read More

Share Comments

利用 Minikube 快速建立測試用多節點 Kubernetes 叢集

本文將說明如何透過 Minikube 建立多節點 Kubernetes 叢集。一般來說 Minikube 僅提供單節點功能,即透過虛擬機建立僅有一個具備 Master/Node 節點的 Kubernetes 叢集,但由時候需要測試多節點功能,因此自己改了一下 Minikube 來支援最新版本(v1.13.2)的多節點部署,且 CNI Plugin 採用 Calico,以方便測試 Network Policy 功能。

Read More

Share Comments