iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
0

今天來介紹 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

Namespace 特點

  • 在同一個 K8s 中,每個 Namespaces 的名稱都是要獨特的
  • 當一個 Namespaces 被刪除時,在該 Namespace 裡的所有物件也會被刪除
  • 可以透過 Resource Quotas 限制一個 Namespaces 所可以存取的資源

資源限制

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-namespace

我們實體的 k8s 架設了三份,分成 dev、qa、prod。然後每個專案在三個站都會有獨立 namespace。雖然這樣的設定比較花錢 (三套 k8s),但是因為 k8s 本身也是會有需要升級的問題,如果用一個站台依照 dev、qa、prod 去切換 namespace的話,k8s 只要一升級,同時影響的範圍會很大。所以最終我們決定採取拆三套才能保障真正的隔離乾淨。


上一篇
Day 9 k8s statefulset 介紹
下一篇
Day11 怎麼部署你第一個 application 到 k3s 裡面
系列文
k8s 生態鏈 完美組合30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言