我正在尝试让我的服务监听多个端口:
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
方法时抛出。该如何解决?
答案 0 :(得分:2)
如果要公开多个服务端口,则必须为每个服务端口分配一个唯一的名称。可以使用带有名称的构造函数,也可以对引用变量调用.setName()
,因为这不是构造方法。