CodeBlanks Logo Icon CodeBlanks

Namespace nedir?

Namespace ile kaynakları gruplandırmayı öğrenirsin.

Namespace nedir?

Namespace, bir cluster'ı mantıksal bölümlere ayırır. Nesne adları yalnızca kendi namespace'i içinde benzersiz olmalıdır: dev ve prod namespace'lerinin ikisinde de web adlı bir deployment olabilir. Namespace'ler takımları, ortamları ya da uygulamaları ayırmak; yetki (RBAC) ve kaynak kotası uygulamak için kullanılır.

dev/   web, db, cache
prod/  web, db, cache
kube-system/  coredns, kube-proxy, ...

Ağ yalıtımı yoktur

Namespace'ler varsayılan olarak ağı yalıtmaz: dev'deki bir pod prod'daki servise web.prod adıyla erişebilir. Yalıtım için NetworkPolicy nesneleri yazılır (destekleyen bir ağ eklentisiyle):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: yalnizca-ayni-ns
  namespace: prod
spec:
  podSelector: {}
  ingress:
    - from:
        - podSelector: {}

Uygulama Kapsamı keşfet

İki komut yaz: namespace'e bağlı kaynak türlerini --namespaced=true ile listele; ardından cluster kapsamlı türleri --namespaced=false ile listele.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl api-resources --namespaced=true
kubectl api-resources --namespaced=false

Beklenen çıktı

NAME          SHORTNAMES   APIVERSION   NAMESPACED   KIND
configmaps    cm           v1           true         ConfigMap
pods          po           v1           true         Pod
NAME          SHORTNAMES   APIVERSION   NAMESPACED   KIND
namespaces    ns           v1           false        Namespace
nodes         no           v1           false        Node

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Namespace hangi şeyi ayırmaz?

  • Deployment adlarını
  • Yetkileri
  • Kaynak kotalarını
  • Node'ları; node'lar tüm cluster'a aittir Doğru cevap

Açıklama: Node, PersistentVolume, Namespace gibi nesneler cluster kapsamlıdır.

2 Namespace'in kapsamına bak: namespace'e bağlı olmayan kaynakları listele.

Soru
kubectl api-resources --namespaced=____
Cevap
kubectl api-resources --namespaced=false

Açıklama: --namespaced=false cluster kapsamlı türleri listeler.

3 Eşleştir.

Kavram Anlamı
Namespace Mantıksal bölüm
Node Cluster kapsamlı
web.prod Başka namespace'teki servis
NetworkPolicy Ağ yalıtımı

Orta seviye bölümündeki tüm dersler