如何使用 java io.fabric8 kubernetes-client 库覆盖默认的 kubernetes 配置文件

问题描述

 import java.io.File;
 import org.springframework.util.ResourceUtils;
 import io.fabric8.kubernetes.api.model.metrics.v1beta1.NodeMetrics;
 import io.fabric8.kubernetes.api.model.metrics.v1beta1.NodeMetricslist;
 import io.fabric8.kubernetes.client.Config;
 import io.fabric8.kubernetes.client.DefaultKubernetesClient;
 import io.fabric8.kubernetes.client.KubernetesClient;

public class Tdd {

 public static void main(String[] args) throws Exception {
    
    File file=ResourceUtils.getFile("classpath:kubernetes_config");
    
    Config config=Config.autoConfigure(file.getAbsolutePath());
    
    try (KubernetesClient k8s = new DefaultKubernetesClient(config)) {

        NodeMetricslist nodeMetricslist = k8s.top().nodes().metrics();
        for (NodeMetrics nodeMetrics : nodeMetricslist.getItems()) {        
            System.out.println(nodeMetrics.getMetadata().getName());
            System.out.println(nodeMetrics.getUsage().get("cpu"));
            System.out.println(nodeMetrics.getUsage().get("memory"));
            
        }
    }

 }

}

当我尝试覆盖 kubernetes 配置文件时,它将无法工作,
它正在寻找“.kube/config文件
我在我的项目中添加一个配置文件
我想使用我的自定义配置文件
我该怎么做?

解决方法

您已经找到的 Config 类有许多 setter 来覆盖特定设置;但看起来你想从另一个路径加载配置。在这种情况下,您可以使用 fromKubeconfig 方法。

File file=ResourceUtils.getFile("classpath:kubernetes_config");
    
    String kubeconfigContents=Files.readString(file.toPath());
    Config config=Config.fromKubeconfig(kubeconfigContents);
    
    try (KubernetesClient k8s = new DefaultKubernetesClient(config)) {

        NodeMetricsList nodeMetricsList = k8s.top().nodes().metrics();
        for (NodeMetrics nodeMetrics : nodeMetricsList.getItems()) {        
            System.out.println(nodeMetrics.getMetadata().getName());
            System.out.println(nodeMetrics.getUsage().get("cpu"));
            System.out.println(nodeMetrics.getUsage().get("memory"));
            
        }
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...