Interaction between client-go and Kubernetes operator. Image from [sample-controller](https://github.com/kubernetes/sample-controller/blob/master/docs/images/client-go-controller-interaction.jpeg)

如何使用 client-go 寫一個 Kubernetes Operator

什麼是 client-go? client-go 是 Kubernetes 官方的 Golang client,負責跟 Kubernetes API server 用 REST API 的方式互動。其實 client-go 基本上可以做任何事情,不只是拿來寫 operator,連 kubectl 內部的實作也是用 client-go。至於更專門拿來寫 operator 的框架,包含 controller-runtime 、 kubebuilder 、 operator-sdk 會在本系列文的後續介紹。 ...

發佈於: 2024-09-14 · 最後修改: 2024-09-14 · 劉奇聖
圖片修改自 [Kubernetes Icons Set](https://github.com/kubernetes/community/tree/master/icons)

什麼是 Kubernetes Operator 以及 Custom Resources?

Kubernetes API Resources 這邊假設你已經對 Kubernetes 有基本的認識,知道怎麼用 kubectl。Pod、ReplicaSet、Service,甚至是 Namespace 其實都是一種 API Resource。 可以用 kubectl api-resources 來查看現在 Kubernetes 裡面存在的所有 API Resources。 ...

發佈於: 2024-08-29 · 最後修改: 2024-08-31 · 劉奇聖
Photo by [Kent Pilcher](https://unsplash.com/@kent_pilcher?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) on [Unsplash](https://unsplash.com/photos/black-instrument-cluster-panel-jW8hkB_Qmj8?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash)

如何使用 K3d 在本地環境中重現 Kubernetes 的 Node-pressure Eviction

前情提要 前幾天在開發 KubeRay 專案的時候,從 issue 的留言區 學到了一個 Kubernetes 的知識,原來 Eviction 還有分 Node-pressure Eviction 和 API-initiated Eviction 兩種。API-initiated Eviction 是直接 call API,或是使用像是 kubectl drain 之類的指令,特性是不管怎樣最終以這種方式被 Evict 的 Pod 會被 delete 掉,通常就會在另一個 node 上被重新 create。但是如果是 Node-pressure Eviction 的話,kubelet 只會把 Pod 的 Phase 設成 Failed,而不會把 Pod delete 掉,所以 controller 沒有特別處理的話,Pod 就不會在另一個 node 上面被重新 create。 ...

發佈於: 2024-07-05 · 最後修改: 2024-08-31 · 劉奇聖