関連ページ

Kubernetes における namespace について

namespace とは、1つのクラスタ内を仮想クラスタとして論理的に分けるもの
(参考URL: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ external_link)

分けると何が嬉しいのか

分けると面倒なこと

  • cluster-wide オブジェクトがないものだと、namespace ごとに用意する必要がある
    • 例えば、TLS 証明書が入った Secret とか
  • kubectl によるオペレーションで、今いる namespace を意識してオペレーションする必要がある
    • default namespace にいる状態で kube-system namespace のものを弄る場合は、 kubectl -n kube-system get pod みたいにしないといけない、とか
    • ただこれは、kubens という便利コマンドである程度和らげられる

Rancher における Project について

Kubernetes の namespace の概念を Rancher が独自に拡張して Project と命名した

Project の役割

  • one Project has many namespaces の関係
  • Rancher デフォルトで、同一 Project 内しか Pod の通信ができなくなっている
    (※この挙動は最近変わっている可能性がある)
    • kubectl -n <namespace> get networkpolicy np-default を見ると NetworkPolicy が見られる
      spec: ingress: - from: - namespaceSelector: matchLabels: field.cattle.io/projectId: project-rnfh8 podSelector: {} policyTypes: - Ingress
    • この NetworkPolicy は namespace を Project に割り当てると自動的に設定される