昨天處理了 Grafana 裡面的設定,今天處理叢集裡面的東西。 前天盤點出三個洞:Loki 的設定只存在叢集裡、Tempo 全吃預設、五個 chart 的版本...
昨天盤點的結論是三個洞:Loki 的設定、Tempo 的顯式設定、五個版本號。今天先處理另一件事——Grafana 裡面的東西。 它跟前面所有東西都不一樣:儀表...
昨天寫了第一則告警,門檻是「300 毫秒內完成的比例 < 95%,撐 10 分鐘」。今天要拆掉這個設計,因為它有問題,而且問題不小。 今天的故障開關:全部...
昨天講原則,今天寫設定。 今天的故障開關:全部關閉 kubectl set env deploy/pricing BUG_SILENT_DISCOUNT=fal...
昨天把三大支柱串起來,Day 7 的四句天花板只剩最後一句:只能被動查,不會主動通知。今天開始處理它。 這個區塊我要花四天,比 metrics 和 logs 都...
在前面的章節中,我們已經成功將非同步 S3 微服務搬上了 K8s,實作了雙探針自癒、HPA 自動水平擴充以及 PV/PVC 持久化掛載。 然而,在真實的軟體開發...
在前面的文章中,我們完成了微服務上 K8s、滾動更新雙探針與 HPA 自動擴充。然而,當我們準備將這套系統推向真實 Production 生產環境時,我們必須確...
昨天我們剖析了 K8s 3-Node 叢集在 Service 與 kube-proxy 轉發下的網路開銷。今天,我們要來測試 k8s HPA (Horizont...
前兩天我們成功將非同步 S3 微服務部署至 Minikube K8s 叢集,並設定了Liveness/Readiness 雙探針實現了 0% 錯誤率的無感發佈,...
昨天我們學習了高可用性(High Availability, HA)核心思維,並在本地建立好了 Minikube 測試叢集與 kubectl 命令列工具。 今天...
昨天我們成功撰寫了 Deployment 與 Service YAML 檔,將非同步 S3 微服務部署至 Minikube 叢集,並親眼驗證了當 Pod 被殺掉...
今天是這個系列第一次破案。 Day 6 埋了三個故障,第一個是「算錯價但回 200」——部分商品沒套到折扣,狀態碼正常、速度正常、錯誤率 0。Day 7 用 k...
前幾天我們利用Docker完成了非同步 S3 微服務的容器化、架設了 Prometheus + Grafana 監控鏈路,並透過 JMeter 壓測驗證有無保護...
昨天把 pricing 擴成兩份,發現流量全壓在同一個 Pod 上,結論是「聚合會藏東西」。而聚合藏不藏得住,取決於當初把什麼寫進標籤裡。 這是 Metrics...
昨天講完 USE 和 RED 兩套方法論,也把三個服務的 RED 九宮格做出來了。今天做另外一半:節點的 USE。 然後我打算做一個小實驗,把 pricing...
今天要做一件有點反直覺的事:故意不裝任何監控工具,只用 kubectl 去查昨天埋的那三個故障。 為什麼要花一天做一件註定失敗的事?因為我認為實際體驗一次少了工...
昨天叢集開好了,今天要往裡面放東西。 我們要建立一個壞掉的服務,但是不會壞的太明顯。 沒有一個故障是「服務掛掉」。 服務掛掉其實是最好查的,Pod 會變紅、...
前面四天的觀念講完了,今天正式開始動手。 這篇的目標其實很小,就是把一個叢集開起來,然後說明為什麼是這樣開的。但是「為什麼」的部分比指令重要,網路上教你打 ki...
起心動念 前陣子在求職的時候常常被問到 k8s 相關的問題,觀測的指標有哪些,但我總是一問三不知,只能說出查看 log 有沒有 error。面試結束後我拼命去查...
三十天,從 kubeadm init 敲下的第一行指令,到最後一天完成叢集版本升級——我們一步步建起了一套完整的 Kubernetes 知識體系。 回頭看,這趟...
前言 還記得 Day 01 我們用 kubeadm 建立了 Kubernetes v1.34 叢集嗎? 當時特別保留了一個 minor version 的升級空...
前言 昨天,我們用 cert-manager 自動簽發了 TLS 憑證,也實際看到了 Custom Resource、Controller 與 Secret 之...
前言 昨天,我們學會了 CRD 與 Operator 的原理,還用 Shell Script 寫了一個簡易 Controller。 今天我們要來認識一個 Kub...
前言 昨天,我們使用 Gateway API 來管理流量入口。 過程中你一定注意到:我們先安裝了 Gateway API 的 CRD(例如 GatewayCla...
前言 在 Day6 中,我們學會了用 Ingress 統一管理微服務的入口流量,透過 Path 與 Host 將請求導向不同的 Service。 但隨著流量管理...
前言 昨天,我們學會了用 RBAC 控制「誰能對 Kubernetes API 做什麼操作」。 但還有另一個重要問題: Pod 之間的網路流量要怎麼限制?...
前言 在 Day 8 介紹 Secret 時,我們曾經提到 RBAC,因為 Secret 能不能被讀取,取決於使用者或 ServiceAccount 是否被授予...
前言 經過 Day 21~22,我們已經能從零建立 Helm Chart,並透過 _helpers.tpl、多環境 values、功能開關等技巧,讓 Chart...
前言 昨天我們從零手寫了一個精簡的 Helm Chart,成功部署了 Nginx。 但仔細看 deployment.yaml 和 service.yaml,會發...
前言 Day 20 我們學會了使用別人提供的 Helm Chart —— 包含搜尋、安裝、升級、回滾與移除等基本操作。 但如果今天想把自己開發的應用程式也打包成...