当前位置:  开发笔记 > 编程语言 > 正文

我如何在Kubernetes中创建新的命名空间

如何解决《我如何在Kubernetes中创建新的命名空间》经验,为你挑选了1个好方法。

我在多租户节点应用程序中工作,我知道在Kubernetes中创建一个新的命名空间可以运行kubectl命令,如下所示: kubectl create namespace

当新客户注册新帐户时,如何从节点微服务创建新的命名空间?

是否有一些kubectl API来从外部应用程序发出请求?

用户必须从应用程序注销,销毁在kubernetes中创建的pod吗?



1> Rico..:

它可以像在应用程序中从shell调用一样简单:

kubectl create namespace 

从本质上讲,kubectl与kube-apiserver交谈.

您也可以直接致电kube-apiserver.这是列出pod的示例:

$ curl -k -H 'Authorization: Bearer ' \
              https://$KUBERNETES_SERVICE_HOST:6443/api//namespaces/default/pods

更具体地说,创建命名空间:

$ curl -k -H -X POST -H 'Content-Type: application/json' \
                     -H 'Authorization: Bearer ' \
                     https://$KUBERNETES_SERVICE_HOST:6443/api/v1/namespaces/ -d '
{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "name": "mynewnamespace"
    }
}'

如果你想知道它,它是一个Kubernetes Secret,通常属于一个ServiceAccount,并绑定到一个ClusterRole允许你创建命名空间的.

您可以像这样创建一个服务帐户:

$ kubectl create serviceaccount namespace-creator

然后你会看到这样的令牌(自动生成一个令牌):

$ kubectl describe sa namespace-creator
Name:                namespace-creator
Namespace:           default
Labels:              
Annotations:         
Image pull secrets:  
Mountable secrets:   namespace-creator-token-xxxxx
Tokens:              namespace-creator-token-xxxxx
Events:              

然后你会得到秘密:

$ kubectl describe secret namespace-creator-token-xxxxx
Name:         namespace-creator-token-xxxx
Namespace:    default
Labels:       
Annotations:  kubernetes.io/service-account.name: namespace-creator
              kubernetes.io/service-account.uid: 

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  7 bytes
token:       <== This is the token you need for Authorization: Bearer

ClusterRole应该看起来像这样:

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: namespace-creator
rules:
- apiGroups: ["*"]
  resources: ["namespaces"]
  verbs: ["create"]

然后你会像这样绑定它:

$ kubectl create clusterrolebinding namespace-creator-binding --clusterrole=namespace-creator --serviceaccount=namespace-creator

在编写代码时,您可以使用任何语言的任何HTTP客户端库来调用相同的端点.

还有像client-go库这样的库可以处理连接到kube-apiserver的管道.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有