🌐 This page hasn't been translated yet — showing the original Chinese. Translated posts

#kubernetes

同一個 app 一堆 YAML 九成內容共用 Developmentreplicas:1 · image:app:dev · 資源小 · host:dev.local Stagingreplicas:2 · image:app:rc · host:stg.example.com Productionreplicas:10 · image:app:1.4 · 資源大 · host:example.com

打包與部署:Helm 與 Kustomize

· tech · 約 6 分鐘 · 📚 Kubernetes 學習筆記 #14

前面每一篇都在教你寫 YAML,但實務有個逃不掉的痛:同一個 app 要上 Development、Staging、Production,而三個環境九成的 YAML 一模一樣,只有幾個地方不同——副本…

#kubernetes#operations

① 排程到 nodeScheduler 挑一台 ② 拉映像檔kubelet 去 registry 拉 ③ 起容器・活著跑起來且不崩 ④ Ready・進 Endpoints通過 readiness 才收流量 ✓ 正常收流量 Pending資源不足 / taint 沒 toleration / PVC 綁不到 ImagePullBackOff · ErrImagePull映像名打錯 / 私有 registry 少 imagePullSecret CrashLoopBackOff · OOMKilled起來就掛一直重啟 / 超過記憶體 limit 被砍 Running 卻 not Ready · 連不到readiness 失敗 / Endpoints 空(selector 錯)/ DNS 解不到 / NetworkPolicy 擋掉

故障排除:Pod、Node、Control Plane 怎麼查

· tech · 約 7 分鐘 · 📚 Kubernetes 學習筆記 #13

CKA 佔比最高的一塊是故障排除(30%),但它其實不是新知識——它是把前面整個系列串起來的能力。排障最忌諱用猜的、亂試一通。真正的心法只有一句:沿著 Pod 的生命週期,一關一關問「它卡在哪」——因…

#kubernetes#troubleshooting

Control Plane node · kubeadm init api-server scheduler controller-mgr etcd 都是 static pod:kubelet 讀 /etc/kubernetes/manifests 拉起來就自動維持 吐出 join token + 指令 kubeadm join <token> Worker node只跑 kubelet + 你的 Pod Worker node要幾台加幾台 再加 CP node(join)→ HA control plane

叢集管理:kubeadm、etcd 備份、升級

· tech · 約 5 分鐘 · 📚 Kubernetes 學習筆記 #12

前面十一篇都站在「用叢集」的位置。這篇換到「建與養叢集」的位置——CKA 佔 25% 的 Cluster Architecture 裡最硬的 ops 活。三件事貫穿一個管理員的一生:怎麼把一堆機器變成…

#kubernetes#operations

kubectl / Pod 發一個請求 ① 認證 authn 你是誰? 憑證 · token · OIDC ② 授權 authz 你能做這動作嗎? ← 這就是 RBAC 執行 API Server 驗不出身分 → 401 沒權限 → 403 兩道門各管一件事:先確認「你是誰」,再判斷「你能不能」

RBAC:誰能對叢集做什麼

· tech · 約 6 分鐘 · 📚 Kubernetes 學習筆記 #11

前面十篇都在讓東西「跑起來、連得到」。這篇換一個維度:誰有權對叢集下命令? 一個 kubectl delete 打進 API Server,它憑什麼知道你是誰、又憑什麼准你刪?這是 RBAC(Role…

#kubernetes#security

預設:任兩顆 Pod 都通 web api db 全通 = 沒有隔離 web 也連得到 db 套一條只保護 db 的 policy web api db預設拒絕 ✗ web 被擋 db 只放行 api;web↔api 沒被選中,照舊全通

NetworkPolicy 與 CNI:Pod 之間的防火牆

· tech · 約 6 分鐘 · 📚 Kubernetes 學習筆記 #10

Service 與 Ingress 講的是「流量怎麼找到服務」,但底下有個更基本、也更容易被忽略的問題:Pod 跟 Pod 之間,預設能不能互通? 答案會嚇到很多人——預設全通,任何一顆 Pod 都連…

#kubernetes#networking

使用者 一個網域 一個對外 IP GET shop.com/api Ingress L7:讀 HTTP 的 Host + path shop.com/ shop.com/api img.shop.com 順便在這裡卸 TLS(https → http) web-svc ClusterIP → web Pod api-svc ClusterIP → api Pod img-svc ClusterIP → img Pod 一個 IP、一個入口,按網址分流到多個內部 Service —— 這是 L4 的 Service 做不到的

Ingress 與叢集 DNS:一個入口進來、一個名字相認

· tech · 約 6 分鐘 · 📚 Kubernetes 學習筆記 #9

第四篇給了短命 Pod 一個固定門牌 Service,但留了兩個尾巴:一是「外面怎麼用一個入口進來、再按網址分流到不同服務?」——那張對外類型圖裡最上面的 Ingress;二是叢集內服務彼此互打時,那…

#kubernetes#networking

Pod nodeSelector / affinity 「我想去 disk=ssd 的 node」 toleration:對 gpu taint 免疫 Node label: disk=ssd taint: gpu=true:NoSchedule 沒免疫的 Pod 一律趕走 拉:Pod 依 label 挑 node 推:node 把沒免疫的 Pod 趕走 toleration 只是免疫,不會把 Pod「吸」過去

進階排程:讓 Pod 去對的 node

· tech · 約 8 分鐘 · 📚 Kubernetes 學習筆記 #7

第二篇講過 Scheduler 幫 Pending 的 Pod 挑 node 分兩步:先過濾(裝得下、規則允許)、再評分(挑最佳)。 那時我說「過濾與評分背後的旋鈕之後專門一篇講」——就是這篇。預設 …

#kubernetes#scheduling

PV / PVC:把「需求」和「供給」分開 StorageClass:動態供應——PVC 一提出就自動生 PV Pod要掛一塊盤 PVC(需求)「我要 10Gi · RWO」app 開發者只喊這個 bound PV(供給)實際那塊 10Gi 儲存底層:EBS / NFS / Ceph… 供需分離:app 只喊「我要多大、什麼存取模式」,不用管底層是什麼硬體 access modes:RWO(單節點)· ROX(多節點唯讀)· RWX(多節點讀寫,需 NFS 之類) reclaim policy:PVC 刪掉後,PV 要 Retain(保留)還是 Delete(連底層一起刪)

K8s 儲存:Volume、PV/PVC 與 StatefulSet

· tech · 約 5 分鐘 · 📚 Kubernetes 學習筆記 #6

Pod 是短命、可拋的——自我修復隨時把它換一個。但有些東西死了不能跟著消失:資料。而容器的檔案系統天生是暫時的(ephemeral):pod 一被重排、容器一重啟,寫在裡面的檔案就沒了。所以 K8s…

#kubernetes#storage

同一個映像檔,跑遍所有環境 映像檔my-app:1.0(不可變) DevelopmentConfigMap + Secret StagingConfigMap + Secret ProductionConfigMap + Secret Pod(dev) Pod(staging) Pod(production) 12-factor:設定放環境/外部,不烤進映像檔——同一映像檔才能跨環境重用

ConfigMap 與 Secret:把設定和機密從映像檔裡拆出來

· tech · 約 5 分鐘 · 📚 Kubernetes 學習筆記 #5

前面幾篇,你已經能把一個 app 部署、對外服務了。但真實的 app 還缺一塊:設定——資料庫位址、feature flag,還有密碼、API key、憑證。這些東西有一條鐵律:不該寫死在映像檔或程式…

#kubernetes#concept

底座解剖:大腦、工人,與命門 etcd Control Plane(大腦) API Server唯一入口 Scheduler排 pod 放哪 Controller Mgrreconcile loop etcd ★命門狀態真相 · Raft唯一 stateful Worker Nodes(工人) kubelet + Pods kubelet + Pods kubelet + Pods etcd 掛了 → 整個叢集「失明」(現有 pod 還跑,但不能排程 / 更新 / 自癒) 所以 etcd 要:奇數台過半、定期備份、低延遲磁碟——它是你最該小心的東西

Kubernetes:所有東西跑的底座,它自己怎麼站穩

· tech · 約 6 分鐘 · 📚 從 Infra 角度看資料工具 #2

這系列第一個要體檢的,是 Kubernetes——但它很特殊:別的工具都跑在它上面。它是底座,所以它自己的可靠度,就是後面 Kafka、Spark、Redis 全部的地基。用上一篇的體檢表看它,會發現…

#infrastructure#kubernetes

呼叫方 只認 web 這名字 Service:web 固定 IP 10.96.0.10 · DNS web.*.svc selector: app=web 自動負載均衡到健康 Pod Pod · 10.1.2.7 ✓ 健康 Pod · IP 會變 掛了換新:.8 → .31 Pod · 10.1.4.2 ✓ 健康

Service:擋在短命 Pod 前面的固定門牌

· tech · 約 5 分鐘 · 📚 Kubernetes 學習筆記 #4

第二篇留了一個問題:既然 Pod 是短命的、被換掉就有新的 IP,那別的服務要怎麼穩定找到它?你總不能把某顆 Pod 的 IP 寫死在設定裡——它下一秒可能就不在了。這篇的主角 Service,就是 …

#kubernetes#concept#networking

Deployment 期望:replicas = 3 · image v1 ReplicaSet 確保永遠有 3 個 Pod Pod ✓ 健康 Pod ✗ 掛了 Pod ✓ 健康 少一個 → ReplicaSet 觀察到落差 → 立刻補一個新的回到 3 個

Deployment 與自我修復:reconcile loop 的實戰

· tech · 約 6 分鐘 · 📚 Kubernetes 學習筆記 #3

第一篇給了靈魂(reconcile loop),第二篇給了原子(Pod)。但實務上你幾乎不會手動去建一個 Pod —— 你宣告的是 Deployment,而它正是 reconcile loop 最實用…

#kubernetes#concept

Pod 最小部署單位・排程與伸縮的單位 容器:app 你的服務 容器:sidecar 選配(log / proxy) 共享:一個 IP(彼此用 localhost 通)· 共享 Volume

Pod、Node、Scheduler:Kubernetes 叢集的三個原子

· tech · 約 5 分鐘 · 📚 Kubernetes 學習筆記 #2

上一篇講了 K8s 的靈魂:你宣告期望,reconcile loop 不斷把現實拉過去。但那句「我要 3 個」——3 個什麼?落在哪台機器上?誰決定放哪? 這篇把叢集最基本的三個原子講清楚:Pod、N…

#kubernetes#concept

期望狀態 你宣告:replicas = 3 Controller 控制迴圈 比較 & 修正 實際狀態 現在只有 2 個 ① 讀期望 ② 動作 ③ 觀察 2 → 建 1 個 → 3 ✓ reconcile loop:不斷比較期望與實際,有落差就修正 —— 這就是 K8s 的靈魂

Kubernetes 是什麼:從「跑容器」到「宣告你要的狀態」

· tech · 約 5 分鐘 · 📚 Kubernetes 學習筆記 #1

很多人學 Kubernetes(K8s)覺得難,是因為一上來就被 kubectl、一堆 YAML 欄位、幾十種資源名詞淹沒。但其實 K8s 只有一個核心觀念,抓住它,後面全部都是同一句話的變形。這個系…

#kubernetes#concept

K8s Control Plane · Scheduler 依 resource request / affinity 決定 pod 落哪個 node Node 1 on-demand 池(穩定) Node 2 spot 池 Node 3 spot 池 Airflow Scheduler Airflow Webserver Airflow Triggerer Metadata DBPersistentVolume(有狀態) Spark Driver Spark Executor Spark Executor Spark Executor Spark Executor Driver 申請的 executor 由 Scheduler 散到各 node Executor 讀取來源 / 寫回結果 Business DB叢集外的營運資料源 / 輸出 Airflow pod Spark Driver Spark Executor Metadata DB Business DB

Airflow + Spark 跑在 K8s 上:不同的 node 怎麼跑不同的 pod

· tech · 約 11 分鐘 · 📚 Kubernetes 學習筆記 #8

Airflow 負責「什麼時候、用什麼順序」跑作業,Spark 負責「把大資料算完」。當這兩個東西都搬到 Kubernetes 上,最常見的困惑是:到底有哪些東西在跑、它們各自是不是一個 pod、又被…

#kubernetes#airflow#spark#data-engineering