【问题标题】:How to make kubernetes service handle multiple ports in JAVA?如何让 kubernetes 服务处理 JAVA 中的多个端口?
【发布时间】:2019-06-26 10:29:13
【问题描述】:

我正在尝试让我的服务监听多个端口:

V1Service service = new V1Service();
service.setMetadata(new V1ObjectMeta().name("tests"));
V1ServiceSpec spec = new V1ServiceSpec();
spec.setType("NodePort");
spec.putSelectorItem("name", "tests");
spec.addPortsItem(new V1ServicePort().port(25452));

// WHEN I ADD ANY OF THE 3 LINES BELOW, THE CODE CRASHES, WHY?
spec.addPortsItem(new V1ServicePort().port(24932));
spec.addPortsItem(new V1ServicePort().port(25445));
spec.addPortsItem(new V1ServicePort().port(25432));

service.setSpec(spec);

mmaService = api.createNamespacedService(namespace, service, null);

但是,代码只有在包含一个端口时才会执行,否则 一个例外

io.kubernetes.client.ApiException: Unprocessable Entity
at io.kubernetes.client.ApiClient.handleResponse(ApiClient.java:882)
at io.kubernetes.client.ApiClient.execute(ApiClient.java:798)
at io.kubernetes.client.apis.CoreV1Api.createNamespacedServiceWithHttpInfo(CoreV1Api.java:9237)
at io.kubernetes.client.apis.CoreV1Api.createNamespacedService(CoreV1Api.java:9221)

在调用createNamespacedService 方法时抛出。如何解决这个问题?

【问题讨论】:

    标签: java service kubernetes port


    【解决方案1】:

    如果要公开多个服务端口,则必须为每个服务端口分配一个唯一名称。要么使用带有名称的构造函数,要么在引用变量上调用 .setName(),因为这不是构建器方法。

    【讨论】:

      猜你喜欢
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      • 2016-04-05
      • 2011-08-22
      • 2018-04-28
      相关资源
      最近更新 更多