Kubernetes 命名空间到底是什么,它与 linux 命名空间(mnt、pid、net、ipc、uts、user、cgroup)有何不同?
2 回答
与 linux 命名空间没有关系。Kubernetes 命名空间是在多个用户之间隔离集群资源(如 pod、secrets)的逻辑构造。您可以使用角色和角色绑定来应用 RBAC,它定义了谁可以在哪个命名空间中执行什么操作。这就是使用命名空间实现隔离的方式。在内部,集群资源存储在 ETCD(键值存储)中,kubernetes API 服务器允许或拒绝用户根据 RBAC 策略中定义的内容对集群资源执行 CRUD 操作的请求。有趣的是,如果你能以某种方式访问 ETCD,那么你就可以在所有命名空间中做任何事情。所以控制在 Kubernetes API Server 层。
我会说 kubernetes 命名空间是建立在 linux 命名空间之上的,并添加了更多的含义(功能)。就像 Arghya 的回答中提到的那样,kubernetes 也为 RBAC 使用命名空间。但是在 Linux 上安装 kubenetes 时,使用 linux 命名空间来分隔资源。Kubernetes 也支持 Windows,它必须在 Windows 上使用其他东西。
总之,Kubernetes 命名空间是一个高级概念,Linux 命名空间有点低级。Kubernetes 使用 Linux 命名空间,但也可以支持其他实现。
参考:
https://cloud.redhat.com/blog/kubernetes-namespaces-demystified-how-to-make-the-most-of-them https://kubernetes.io/docs/tasks/tools/install-kubectl-windows /