如何更改系统名称空间?

时间:2018-06-27 11:50:55

标签: kubernetes

Kubernetes中的所有系统服务都部署到一个命名空间,通常称为kube-system。那是哪里来的如果我想将其更改为另一个名称空间怎么办?

2 个答案:

答案 0 :(得分:4)

  

Kubernetes中的所有系统服务都部署到一个命名空间,通常称为kube-system。那是哪里来的?

the nice documentation中所述,Kubernetes最初从三个名称空间开始:

  • 默认-没有其他命名空间的对象的默认命名空间。
  • kube-system -Kubernetes系统创建的对象的命名空间。
  • kube-public -名称空间是自动创建的,并且所有用户(包括未经身份验证的用户)均可读取。此名称空间主要保留给集群使用,以防某些资源在整个集群中公开可见。此名称空间的公共方面仅是约定,不是要求。

您可以使用default上下文处理将kubectl config命名空间更改为自己喜欢的任何命名空间。

  

如果我想将其更改为另一个名称空间怎么办?

那将是一个复杂而又冒险的工作...对于kubeadm创建的集群,您可以在/ etc / kubernetes / manifests中找到适当的清单,但不仅仅是在此处更改名称空间,还有一系列配置映射,证书和需要考虑名称空间的事物。并且即使您设法这样做,deprication of api-server flag master-service-namespace背后也有原因,因为您可以破坏GKE隐式引用,并且可能会出现类似的问题。归结为,实际上不建议更改kube-system命名空间。

编辑:

下面是kuberentes source的摘录,您可以在其中看到这些命名空间的初始定义。

// NamespaceDefault means the object is in the default namespace which is applied when not specified by clients
NamespaceDefault string = "default"
// NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces
NamespaceAll string = ""
// NamespaceNone is the argument for a context when there is no namespace.
NamespaceNone string = ""
// NamespaceSystem is the system namespace where we place system components.
NamespaceSystem string = "kube-system"
// NamespacePublic is the namespace where we place public info (ConfigMaps)
NamespacePublic string = "kube-public"

您可以通过代码库找到more references to kube-system,这是另一个示例:

// "kube-system" is the default scheduler lock object namespace
SchedulerDefaultLockObjectNamespace string = "kube-system"

依此类推...

答案 1 :(得分:1)

kube-system项目用作“ Kubernetes系统创建的对象的命名空间”

https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#working-with-namespaces

因此,我认为如果更改名称,在使用命名空间的某个地方会出现问题。