今天來介紹 namespace , 這是 k8s 設計出來抽象的 virtual cluster , 可以應用的層面很廣,下面我們就來依依說明。
namespace 可以應用在不同的商業情境、不同的開發團隊,讓一個實體的 k8s cluster,可以切出幾個虛擬的 cluster。
kubectl --kubeconfig ~/.kube/k3s.yaml get namespace
NAME STATUS AGE
default Active 8d
kube-system Active 8d
kube-public Active 8d
kube-node-lease Active 8d
apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
---
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-quotas
namespace: test-namespace
spec:
hard:
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "1"
requests.memory: 10Gi
夠過上面的設定就能限制住各個 namespace 硬體資源的控制。
這邊跟大家分享一下,我服務公司的 namespace 架構。
我們實體的 k8s 架設了三份,分成 dev、qa、prod。然後每個專案在三個站都會有獨立 namespace。雖然這樣的設定比較花錢 (三套 k8s),但是因為 k8s 本身也是會有需要升級的問題,如果用一個站台依照 dev、qa、prod 去切換 namespace的話,k8s 只要一升級,同時影響的範圍會很大。所以最終我們決定採取拆三套才能保障真正的隔離乾淨。