【问题标题】:Kubernetes rest api to check if namespace is created and activeKubernetes rest api 检查命名空间是否已创建并处于活动状态
【发布时间】:2016-08-01 00:51:14
【问题描述】:

我用post body调用下面的rest api来在kubernetes中创建一个命名空间

http://kuberneteshot/api/v1/namespaces/

{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "name": "testnamespace"
    }
}

作为响应,我创建了 http 状态 201 和以下 json 响应

{
    "kind": "Namespace",
    "apiVersion": "v1",
    "metadata": {
        "name": "testnamespace",
        "selfLink": "/api/v1/namespaces/testnamespace",
        "uid": "701ff75e-5781-11e6-a48a-74dbd1a0fb73",
        "resourceVersion": "57825525",
        "creationTimestamp": "2016-08-01T00:46:52Z",
    },
    "spec": {
        "finalizers": [
            "kubernetes"
        ]
    },
    "status": {
        "phase": "Active"
    }
}

phase 为 Active 的响应状态是否意味着命名空间已成功创建并处于活动状态?

是否有其他的 api 来检查命名空间是否存在并处于活动状态?

我想知道命名空间是否已创建的原因是,如果我在命名空间实际创建之前触发 create pod,则会收到错误消息:

来自服务器的错误:创建“./pod.json”时出错:pod“my-pod”是 禁止:未找到服务帐户用户名/默认值,请稍后重试 服务帐号已创建

如果我在创建命名空间和创建 pod 命令之间休眠 5 秒,则以下工作正常

kubectl 删除命名空间 testnamepsace;kubectl 创建命名空间 testnamepsace;sleep 5;kubectl create -f ./pod.json --namespace=testnamepsace

如果我不让睡眠 5 秒,我会看到上面提到的错误消息

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    显然,您的 Pod 对 default ServiceAccount 有硬依赖,因此您可能希望检查它是否已创建,而不是仅查看命名空间状态。命名空间的存在并不能保证您的default ServiceAccount 立即可用。

    您可能想要查询的一些 API 端点:

    • 获取/api/v1/namespaces/foo/serviceaccounts/default
      如果 ServiceAccount default 存在于命名空间 foo 中,则返回 200 和对象描述,否则返回 404

    • 获取/api/v1/serviceaccounts?fieldSelector=metadata.namespace=foo,metadata.name=default
      返回 200 和名称空间 foo 中名称为 default 的所有 ServiceAccount 项的列表(如果没有对象匹配,则为空列表)

    【讨论】:

    • 如何检查是否创建了默认 ServiceAccount,是否可以调用其他服务进行检查?谢谢。
    • 我用你可以使用的 2 个端点更新了我的答案。您当然可以在第二个选项中删除查询参数,以返回所有命名空间中所有 ServiceAccount 对象的列表。
    【解决方案2】:

    是的,命名空间在从创建 API 调用返回之前是持久的。返回的对象显示命名空间的状态为Active

    您也可以通过GET http://kubernetehost/api/v1/namespaces/testnamespace 检索相同的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 2019-12-10
      • 2020-03-02
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 2018-02-21
      相关资源
      最近更新 更多