k8s-Namespace

Namespace 是k8s中做用户隔离的,适用于多租户的场景。

Namespace 是 Kubernetes 用于实现资源逻辑隔离、多租户、安全授权和环境区分的重要机制,是大规模集群必备的组织手段。

  1. Namespace 是什么?
    Namespace 是 Kubernetes 集群中的一种逻辑隔离方式,可以将集群内的资源(Pod、Service、Deployment、ConfigMap、Secret 等)划分到不同的空间。
    每个 Namespace 里的资源名称互不影响(即可以有多个同名 Pod/Service,但在不同的 Namespace 下)。
    常用于多租户环境、开发/测试/生产环境隔离、团队/项目隔离等场景。

  2. Namespace 的作用
    资源隔离: 不同 namespace 内的资源彼此独立,便于管理和权限控制。
    名称空间下的唯一性: 只要在不同 namespace,下同名资源不会冲突。
    配合 RBAC 实现权限细粒度控制。
    便于批量管理和删除一组相关资源。
    系统组件与业务组件分开: K8s 默认有 kube-system(系统组件)、default(默认)、kube-public(公开只读)等命名空间。

  3. 使用场景举例
    场景1:开发、测试、生产环境隔离
    dev 命名空间放开发环境应用;
    test 放测试环境;
    prod 放生产环境;
    各自的 Service 和 Deployment 不会冲突。
    场景2:多团队/多项目共享一个集群
    每个团队一个 namespace,互不干扰,RBAC 控制各自权限。

场景3:系统组件与业务组件分开管理
K8s 系统组件都在 kube-system,业务应用都在自定义命名空间。

  1. 常见问题与注意事项
    默认情况下,不同 namespace 的 Pod 无法通过 Service 名称直接访问彼此,但可以通过全限定域名访问,如 svcname.namespace.svc.cluster.local。
    某些全局对象(如 Node、PersistentVolume)不属于任何 namespace。
    删除 namespace 会级联删除其中所有对象,请谨慎操作!

image
image

azureuser@master-001:~$ kubectl get pod --all-namespaces
NAMESPACE      NAME                                 READY   STATUS    RESTARTS      AGE
default        nginx-deploy-f88b65dbc-ghrcn         1/1     Running   1 (38m ago)   43h
default        nginx-deploy-f88b65dbc-vf4nx         1/1     Running   1 (38m ago)   43h
default        nginx-deploy-f88b65dbc-vwvmb         1/1     Running   1 (38m ago)   43h
kube-flannel   kube-flannel-ds-glzb5                1/1     Running   0             11m
kube-flannel   kube-flannel-ds-ltkc8                1/1     Running   0             11m
kube-flannel   kube-flannel-ds-r4x7j                1/1     Running   0             11m
kube-system    coredns-5dd5756b68-b6462             1/1     Running   1 (38m ago)   43h
kube-system    coredns-5dd5756b68-lmhq7             1/1     Running   1 (38m ago)   43h
kube-system    etcd-master-001                      1/1     Running   4 (38m ago)   43h
kube-system    kube-apiserver-master-001            1/1     Running   4 (38m ago)   43h
kube-system    kube-controller-manager-master-001   1/1     Running   4 (38m ago)   43h
kube-system    kube-proxy-88ql9                     1/1     Running   1 (38m ago)   43h
kube-system    kube-proxy-g4bk6                     1/1     Running   1 (38m ago)   43h
kube-system    kube-proxy-wb977                     1/1     Running   1 (38m ago)   43h
kube-system    kube-scheduler-master-001            1/1     Running   4 (38m ago)   43h
azureuser@master-001:~$
posted @ 2025-09-28 10:37  阳光大田  阅读(11)  评论(0)    收藏  举报