2019 LINE Dev Day 議程心得 Part3

前言

昨天分享了 LINE Infrastructure 團隊為何導入 Cloud Native 的原因,從中可以看出 LINE 面臨服務開發的資源需求快速增長問題,因此必須更加有效的利用資料中心的資源,而 Cloud Native 的導入對他們來說是個關鍵點,利用容器、服務網格(Service Mesh)、微服務、不可變基礎建設、宣告式 API 等等技術與概念來提升交付時間,並更加有效的利用與控管資源。然而 LINE Infrastructure 團隊不僅僅只是導入 Cloud Native 技術來解決面臨問題,在不同層面上也有非常多的著墨,如網路與儲存這種基礎建設最關鍵的部分也考慮的很多,且服務團隊也會基於應用選用 Cloud Native 專案來達到需求。

Read More

Share Comments

2019 LINE Dev Day 議程心得 Part2

前言

昨天主要分享 LINE Dev Day 當天開場的 Keynote 內容,而今天將針對我最想要了解的 Infrastructure & Cloud Native 議程來分享,因為自己在這方面技術比較有著墨,因此想一探究竟 LINE 團隊是如何建構這麼大規模的平台,也非常想了解他們在技術選型時,是如何考量,而當遇到問題時,又是如何去解決,以支撐這麼大量的服務與系統營運。

Read More

Share Comments

2019 LINE Dev Day 議程心得 Part1

前言

今年很榮幸被 LINE 以 Influencer 形式邀請到日本參加 LINE Dev Day,這也是人生第一次踏入那長年陪伴我長大的影片的國家 - 日本。原本在這期間會參與 KubeCon NA 的活動,但因為一些變故,因此最後沒能去成,於是就來到了 LINE Dev Day,這次參與 LINE Dev Day 最大目的當然就是想要一探究竟 LINE 的基礎建設,過去在 OpenStack 與 Cloud Native 相關活動中,了解到 LINE 的 IaaS 是以 OpenStack、Ceph 等開源專案建置而成,並且提供一套自研 Kubernetes as a Service,提供給不同團隊開發與部署服務使用,而且規模無法想像的大,其維護團隊 Verda Team 更是這些專案社區的程式碼貢獻者,因此能夠來到日本現場真的讓人很興奮。

Read More

Share Comments

動手實作 Kubernetes 自定義控制器 Part6

前言

動手實作 Kubernetes 自定義控制器 Part5 文章結束後,基本上已經完成了這個自定義控制器範例的功能,這時若我們想要部署這個控制器的話,該怎麼辦呢?因為過去文章中,我們都是以 Go 語言指令直接建構程式進行測試,且使用 client-go 與 API Server 溝通時,都是以cluster-admin使用者來達成,這種作法如果是正式上線環境,必然會有很多疑慮,比如說控制器環境有安全問題,如果這些狀況被取得 Kubernetes cluster-admin 權限的話,就可能會危害到整個 Kubernetes 環境,因為 cluster-admin 可以操作任何 Kubernetes API 資源。基於這些問題,今天就是要來說明如何讓控制器正確的部署到 Kubernetes 叢集中執行。

Read More

Share Comments

動手實作 Kubernetes 自定義控制器 Part5

前言

動手實作 Kubernetes 自定義控制器 Part4 文章結語部分,我有提到目前實作的自定義控制器還存在著問題(如下圖),其中就是自定義資源 VirtualMachine 的實例被刪除前,未正確透過 VM Driver 刪除實際管理的虛擬機,這樣情況下的虛擬機都會變成失去控制器管理的殭屍(或孤兒)。基於此問題,今天將說明該如何修改程式以解決這樣問題。

Read More

Share Comments

動手實作 Kubernetes 自定義控制器 Part4

前言

動手實作 Kubernetes 自定義控制器 Part3 文章中,了解如何實現自定義控制器的高可靠架構,而今天將延續之前位完成的部分,會簡單以 Docker 實作一個虛擬機驅動來提供給自定義控制器使用,控制器會依據自定義資源VirtualMachine的內容,來協調完成預期結果的事情。如下架構圖所示。

Read More

Share Comments

動手實作 Kubernetes 自定義控制器 Part3

前言

動手實作 Kubernetes 自定義控制器 Part2 文章中,我們利用 client-go 與產生的 Client 函式庫實作了一個控制器功能。而今天想在控制器實現協調預期狀態之前,探討一下 Kubernetes 自定義控制器的高可靠(Highly Available,HA)如何實現。

在 Kubernetes 中,許多系統相關元件都是以 Controller Pattern 方式實現,比如說: Scheduler 與 Controller Manager。這些元件通常負責 Kubernetes 中的某一環核心功能,像是 Scheduler 負責 Pod 的節點分配, Controller Manager 提供許多 Kubernetes API 資源的功能協調與關聯。那麼如果這些元件發生故障了,就可能造成某部分功能無法正常運行,進而影響到整個叢集的健康,這樣該如何解決呢?

Read More

Share Comments

動手實作 Kubernetes 自定義控制器 Part2

前言

動手實作 Kubernetes 自定義控制器 Part1文章中,我們透過定義 API 資源結構,以及使用 code-generator 產生了用於開發自定義控制器的程式函式庫。今天將延續範例,利用昨天產生的函式庫(apis, clientsets)建立一個控制器程式,以監聽自定義資源VirtualMachine的 API 事件。

Read More

Share Comments

動手實作 Kubernetes 自定義控制器 Part1

前言

昨天了解到 Kubernetes 官方的 Sample Controller,是如何讓一個自定義 API 資源被自定義控制器管理。雖然這個範例僅僅只是管理一個 Deployment 資源,但可以讓人認識到一個自定義控制器是如何運作的。而接下來的文章,我將每天撰寫一小部分程式內容,來重頭慢慢實作一個管理自定義資源VirtualMachine的控制器,並隨時間推移新增更多功能(如: LeaseLock、Metrics、Fake client 與 Finalizer、Admission Controller 等等)來完善這個控制器範例。

Read More

Share Comments

探討 Kubernetes 自定義控制器是如何運作 Part2

前言

在前幾天文章中,認識了開發 Kubernetes 自定義控制器的知識與概念,如: API 函式庫、client-go 函式庫、CRD 與自定義控制器本身等等。但講了這麼多,卻都沒有實際執行一個自定義控制器,因此今天將以 Kubernetes 社區提供的 sample-controller 範例為主,來說明如何運行與實作。

Read More

Share Comments