How to use a Google Cloud Persistent Disk (PD) as a Persistent Volume (PV) in Kubernetes 什麼是 Persistent Volume(PV) Persistent Volume(PV)是 Kubernetes 中用來管理儲存資源的抽象化物件。系統管理員可以透過 PV 來管理集群中的實體儲存媒體。 要怎麼使用 Persistent Volume (PV) 要使用 Persistent Volume(PV),首先需要宣告 Persistent Volume Claim(PVC),並透過 PVC 來要求儲存空間。一旦 PVC 被宣告,Kubernetes 就會根據 PVC 中指定的條件尋找適合的 PV 來滿足 Pod 的需求,並將 PV 掛載到 Pod 中。 在 Google Cloud 的公有雲服務裡提供了一種叫做 Cloud Persistent Disk 的服務,它是一種持久性的存儲解決方案,可供 Kubernetes 中的應用程式使用。若想要在 Kubernetes 中使用 Cloud Persistent Disk 作為 Persistent Volume(PV),可參考以下作法: 方法一 Static Provisioning: 在 GCP 上建立 Cloud Persistent Disk(PD): bash gcloud compute disks create my-disk --size=10GB --zone=us-central1-a 建立 PersistentVolume (PV) YAML: yaml apiVersion: v1 kind: PersistentVolume metadata: name: my-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain gcePersistentDisk: pdName: my-disk fsType: ext4 建立 PersistentVolumeClaim (PVC) YAML: yaml apiVersi
Best practice to set requests & limits for CPU & memory on Kubernetes 設定適當的 Resource Requests & Limits 是確保在 Kubernetes 集群上部署的 Pod 能夠順利運行並保持穩定性的關鍵步驟。透過合理地管理和調整資源,我們可以最大程度地提升系統的性能和可靠性,同時有效地利用集群中的資源,實現資源的最佳利用。 Kubernetes Limits and Requests 請求(Requests) 指定容器運行所需的最低 CPU 和記憶體量。當 Kubernetes 的 Scheduler 調度 Pod 資源時,會根據這個值進行決策。 限制(Limits) 定義容器可消耗的最大 CPU 和記憶體量。透過限制,可以防止容器超用資源,避免資源匱乏和潛在的性能下降。 Best Practice 在設定 CPU 的請求和限制時,建議不設定 CPU 的限制。這是因為在某些情況下,如果 Pod 需要額外的資源且集群中還有可用資源,就可以動態提供給 Pod 使用。 針對記憶體的請求和限制,最佳做法是將請求和限制設定為相同的值。這樣做的目的是為了避免 Pod 過度使用節點上的資源,進而觸發 Out of Memory(OOM)機制,導致 Pod 異常終止。 yaml apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: mycontainer image: myimage resources: requests: memory: "512Mi" cpu: "100m" limits: memory: "512Mi" # 設置為跟 requests 相同的值 Pod Eviction 當節點資源不足,觸發 Out of Memory(OOM)時,Kubernetes 就會進行 Pod Eviction 來釋放資源。這時Kubelet 根據 Pod 的記憶體使用情況和其重要性來決定哪個 Pod 該被「犧牲」