尝试在K8S中创建新命名空间时出现未经授权的错误

问题描述 投票:0回答:1

我正在尝试使用teh fabric8 java客户端在Azure上的K8s群集上创建命名空间。这是代码

 @Before
    public void setUpK8sClient() {
    apiServer = "";
    config = new ConfigBuilder().withMasterUrl(apiServer).withUsername("user").withPassword("pass").build();
    client = new DefaultKubernetesClient(config);
    System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true");


    }

    @Test
    public void getClientVersion() {
    System.out.println("Client version "+client.getApiVersion());
    }

    @Test
    public void createNamespace() {
    Namespace myns = client.namespaces().createNew()
        .withNewMetadata()
        .withName("myns")
        .addToLabels("a", "label")
        .endMetadata()
        .done();
    System.out.println("Namespace version " + myns.getStatus());
    }

这给了我以下错误

一世

o.fabric8.kubernetes.client.KubernetesClientException: Failure executing: POST at: "https://...api/v1/namespaces. Message: Unauthorized! Token may have expired! Please log-in again. Unauthorized

我错过了什么?

https kubernetes unauthorized fabric8
1个回答
1
投票

由于您正在使用Azure,我猜您可以关注the instructions to configure kubectl,然后使用kubeconfig文件中的令牌从fabric8客户端访问群集。

该令牌可能是管理员令牌,因此如果您想限制fabric8客户端可以执行的操作,您还可以创建新凭据(用户/密码)。 API requests are tied to either a normal user or a service account, or are treated as anonymous requests

  • 假设普通用户由外部独立服务(私钥,Google帐户等第三方,甚至包含用户名和密码列表的文件)管理。 Kubernetes没有表示普通用户帐户的对象。
  • 服务帐户是由Kubernetes API管理的用户,绑定到特定名称空间。服务帐户与存储为Secrets的一组凭据相关联。要手动创建服务帐户,只需使用kubectl create serviceaccount ACCOUNT_NAME命令。这将在当前命名空间中创建一个服务帐户,并创建一个关联的秘密,用于保存API服务器的公共CA和签名的JSON Web令牌(JWT)。
© www.soinside.com 2019 - 2024. All rights reserved.