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

How to override default kubernetes config file using java io.fabric8 kubernetes-client library

 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 class 有许多设置器可以覆盖特定设置;但看起来你想从另一条路径加载配置。在这种情况下,您可以使用 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"));
    }
}