iT邦幫忙

2025 iThome 鐵人賽

DAY 7
0
Cloud Native

K8s上的機器人沙盒系列 第 7

Day 7 | 安全初探:Namespace, ResourceQuota, LimitRange, Pod Security簡介

  • 分享至 

  • xImage
  •  

承接 Day 6(Ingress 與 TLS),今天切入 Kubernetes 安全與多租戶基礎:Namespace 隔離、ResourceQuota、LimitRange 與 Pod Security。這些設定能確保「多使用者共享叢集」時,大家不會互相踩線或濫用資源。

為什麼要做資源與安全隔離?

避免資源爭用:若某個使用者部署了吃滿 GPU/CPU 的 Pod,會影響整個叢集。

清楚邊界:不同專案或團隊放在不同 Namespace,方便管理與清理。

預防風險:限制 Pod 權限,避免惡意或錯誤操作傷害叢集。

A. Namespace:邏輯邊界

預設只有 default、kube-system、kube-public 等 Namespace。

建議每個專案/團隊建立獨立 Namespace,例如:

kubectl create namespace robotics
kubectl create namespace ai-lab

這樣一來:

ResourceQuota / LimitRange 可以針對不同 Namespace 設定。

RBAC 權限也可按 Namespace 維度授予。

B. ResourceQuota:避免資源被耗盡

範例:限制 Namespace 可用總資源

quota-robotics.yaml

apiVersion: v1
kind: ResourceQuota
metadata:
name: quota-robotics
namespace: robotics
spec:
hard:
requests.cpu: "16"
requests.memory: 64Gi
limits.cpu: "32"
limits.memory: 128Gi
requests.nvidia.com/gpu: "4"
persistentvolumeclaims: "10"
pods: "50"

套用:

kubectl apply -f quota-robotics.yaml

這樣能避免某個團隊一次性開太多 Pod 或霸佔所有 GPU。

C. LimitRange:每個 Pod/Container 的預設限制

ResourceQuota 管總量,LimitRange 管單體:

limitrange-robotics.yaml

apiVersion: v1
kind: LimitRange
metadata:
name: limits
namespace: robotics
spec:
limits:

  • default:
    cpu: 2
    memory: 4Gi
    defaultRequest:
    cpu: 500m
    memory: 1Gi
    type: Container

預設 request:如果使用者沒填,會自動套用。

預設 limit:避免單個容器吃光節點資源。

D. Pod Security(v1.25+ 新方式)

舊的 PodSecurityPolicy 已移除,現在用 Pod Security Admission (PSA)。

三個模式:

Privileged:最高權限(建議只給 infra 命名空間)。

Baseline:禁止大多數危險操作(建議大部分專案用)。

Restricted:最嚴格(需 non-root、有限能力)。

範例:對 robotics 命名空間套 Baseline

pod-security.yaml

apiVersion: v1
kind: Namespace
metadata:
name: robotics
labels:
pod-security.kubernetes.io/enforce: baseline
pod-security.kubernetes.io/audit: baseline
pod-security.kubernetes.io/warn: baseline

若 Namespace 已存在,則用 kubectl label ns robotics ... 追加標籤。

常見問題

Quota 設太小:導致正常工作跑不起來 → 請與團隊溝通需求再調整。

LimitRange 忘了設:使用者部署 Pod 沒填資源 → scheduler 難以排程,影響公平性。

PSA 太嚴格:某些應用需要特權 → 建立專用 Namespace 並套用不同標籤,避免波及其他工作負載。

#感想

疲れた


上一篇
Day 6|系統入口:Ingress Controller(NGINX)+ cert-manager + DNS 規劃
下一篇
Day 8|Selkies 架構與 WebRTC 基礎:ICE / STUN / TURN / Codec Bitrate與Latency
系列文
K8s上的機器人沙盒9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言