This is an automated email from the ASF dual-hosted git repository.
georgew5656 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 4e9b7586614 Support CPU resource configurable for Kubernates job under
MoK Mode (#16008)
4e9b7586614 is described below
commit 4e9b7586614580dfc921c96fc882fe6c629e262b
Author: Sensor <[email protected]>
AuthorDate: Mon Mar 4 23:12:09 2024 +0800
Support CPU resource configurable for Kubernates job under MoK Mode (#16008)
* support CPU resource configurable for Kubernates job
* update property doc
* fix test name
* refine doc format
---
docs/development/extensions-contrib/k8s-jobs.md | 1 +
.../k8s/overlord/KubernetesTaskRunnerConfig.java | 23 +++++++
.../k8s/overlord/common/DruidK8sConstants.java | 2 +
.../k8s/overlord/common/PeonCommandContext.java | 19 ++++-
.../k8s/overlord/taskadapter/K8sTaskAdapter.java | 13 ++--
.../DruidPeonClientIntegrationTest.java | 9 ++-
.../overlord/taskadapter/K8sTaskAdapterTest.java | 80 +++++++++++++++++++---
.../taskadapter/MultiContainerTaskAdapterTest.java | 27 +++++---
.../SingleContainerTaskAdapterTest.java | 3 +-
.../test/resources/expectedCPUResourceOutput.yaml | 65 ++++++++++++++++++
10 files changed, 214 insertions(+), 28 deletions(-)
diff --git a/docs/development/extensions-contrib/k8s-jobs.md
b/docs/development/extensions-contrib/k8s-jobs.md
index 4d79319ab0b..bcc8805b3a5 100644
--- a/docs/development/extensions-contrib/k8s-jobs.md
+++ b/docs/development/extensions-contrib/k8s-jobs.md
@@ -236,6 +236,7 @@ data:
|`druid.indexer.runner.peonMonitors`| `JsonArray` | Overrides
`druid.monitoring.monitors`. Use this property if you don't want to inherit
monitors from the Overlord.
|`[]`|No|
|`druid.indexer.runner.graceTerminationPeriodSeconds`| `Long` |
Number of seconds you want to wait after a sigterm for container lifecycle
hooks to complete. Keep at a smaller value if you want tasks to hold locks for
shorter periods.
|`PT30S` (K8s default)|No|
|`druid.indexer.runner.capacity`| `Integer` | Number of concurrent jobs
that can be sent to Kubernetes.
|`2147483647`|No|
+|`druid.indexer.runner.cpuCoreInMicro`| `Integer` | Number of CPU micro
core for the task.
| `1000`|No|
### Metrics added
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerConfig.java
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerConfig.java
index 0d67c55b30a..60efa3c4856 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerConfig.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerConfig.java
@@ -101,6 +101,10 @@ public class KubernetesTaskRunnerConfig
@NotNull
private List<String> javaOptsArray = ImmutableList.of();
+ @JsonProperty
+ @NotNull
+ private int cpuCoreInMicro = 0;
+
@JsonProperty
@NotNull
private Map<String, String> labels = ImmutableMap.of();
@@ -133,6 +137,7 @@ public class KubernetesTaskRunnerConfig
Period k8sjobLaunchTimeout,
List<String> peonMonitors,
List<String> javaOptsArray,
+ int cpuCoreInMicro,
Map<String, String> labels,
Map<String, String> annotations,
Integer capacity
@@ -184,6 +189,10 @@ public class KubernetesTaskRunnerConfig
javaOptsArray,
this.javaOptsArray
);
+ this.cpuCoreInMicro = ObjectUtils.defaultIfNull(
+ cpuCoreInMicro,
+ this.cpuCoreInMicro
+ );
this.labels = ObjectUtils.defaultIfNull(
labels,
this.labels
@@ -264,6 +273,11 @@ public class KubernetesTaskRunnerConfig
return javaOptsArray;
}
+ public int getCpuCoreInMicro()
+ {
+ return cpuCoreInMicro;
+ }
+
public Map<String, String> getLabels()
{
return labels;
@@ -299,6 +313,7 @@ public class KubernetesTaskRunnerConfig
private Period k8sjobLaunchTimeout;
private List<String> peonMonitors;
private List<String> javaOptsArray;
+ private int cpuCoreInMicro;
private Map<String, String> labels;
private Map<String, String> annotations;
private Integer capacity;
@@ -379,6 +394,12 @@ public class KubernetesTaskRunnerConfig
return this;
}
+ public Builder withCpuCore(int cpuCore)
+ {
+ this.cpuCoreInMicro = cpuCore;
+ return this;
+ }
+
public Builder withJavaOptsArray(List<String> javaOptsArray)
{
this.javaOptsArray = javaOptsArray;
@@ -397,6 +418,7 @@ public class KubernetesTaskRunnerConfig
return this;
}
+
public Builder withCapacity(@Min(0) @Max(Integer.MAX_VALUE) Integer
capacity)
{
this.capacity = capacity;
@@ -419,6 +441,7 @@ public class KubernetesTaskRunnerConfig
this.k8sjobLaunchTimeout,
this.peonMonitors,
this.javaOptsArray,
+ this.cpuCoreInMicro,
this.labels,
this.annotations,
this.capacity
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/DruidK8sConstants.java
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/DruidK8sConstants.java
index 7d35827f89b..6c195ed1515 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/DruidK8sConstants.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/DruidK8sConstants.java
@@ -30,6 +30,8 @@ public class DruidK8sConstants
public static final String TASK_DATASOURCE = "task.datasource";
public static final int PORT = 8100;
public static final int TLS_PORT = 8091;
+ public static final int DEFAULT_CPU_MILLICORES = 1000;
+ public static final String DEFAULT_JAVA_HEAP_SIZE = "1G";
public static final String TLS_ENABLED = "tls.enabled";
public static final String TASK_JSON_ENV = "TASK_JSON";
public static final String TASK_DIR_ENV = "TASK_DIR";
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/PeonCommandContext.java
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/PeonCommandContext.java
index 8984a73bd1b..ef06d36d3d0 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/PeonCommandContext.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/PeonCommandContext.java
@@ -31,17 +31,25 @@ public class PeonCommandContext
private final List<String> javaOpts;
private final File taskDir;
private final boolean enableTls;
+ private final int CpuMicroCore;
- public PeonCommandContext(List<String> comamnd, List<String> javaOpts, File
taskDir)
+ public PeonCommandContext(List<String> comamnd, List<String> javaOpts, File
taskDir, int CpuMicroCore)
{
- this(comamnd, javaOpts, taskDir, false);
+ this(comamnd, javaOpts, taskDir, CpuMicroCore, false);
}
- public PeonCommandContext(List<String> comamnd, List<String> javaOpts, File
taskDir, boolean enableTls)
+ public PeonCommandContext(
+ List<String> comamnd,
+ List<String> javaOpts,
+ File taskDir,
+ int CpuMicroCore,
+ boolean enableTls
+ )
{
this.comamnd = comamnd;
this.javaOpts = javaOpts;
this.taskDir = taskDir;
+ this.CpuMicroCore = CpuMicroCore;
this.enableTls = enableTls;
}
@@ -66,6 +74,11 @@ public class PeonCommandContext
return taskDir;
}
+ public int getCpuMicroCore()
+ {
+ return CpuMicroCore;
+ }
+
public boolean isEnableTls()
{
return enableTls;
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapter.java
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapter.java
index 862b176b115..4dfb66ba706 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapter.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapter.java
@@ -125,6 +125,7 @@ public abstract class K8sTaskAdapter implements TaskAdapter
generateCommand(task),
javaOpts(task),
taskConfig.getBaseTaskDir(),
+ taskRunnerConfig.getCpuCoreInMicro(),
node.isEnableTlsPort()
);
PodSpec podSpec = pod.getSpec();
@@ -216,7 +217,7 @@ public abstract class K8sTaskAdapter implements TaskAdapter
{
List<String> javaOpts = context.getJavaOpts();
Optional<Long> optionalXmx = getJavaOptValueBytes("-Xmx", javaOpts);
- long heapSize = HumanReadableBytes.parse("1g");
+ long heapSize =
HumanReadableBytes.parse(DruidK8sConstants.DEFAULT_JAVA_HEAP_SIZE);
if (optionalXmx.isPresent()) {
heapSize = optionalXmx.get();
}
@@ -319,7 +320,8 @@ public abstract class K8sTaskAdapter implements TaskAdapter
mainContainer.setName("main");
ResourceRequirements requirements = getResourceRequirements(
mainContainer.getResources(),
- containerSize
+ containerSize,
+ context.getCpuMicroCore()
);
mainContainer.setResources(requirements);
return mainContainer;
@@ -457,10 +459,13 @@ public abstract class K8sTaskAdapter implements
TaskAdapter
}
@VisibleForTesting
- static ResourceRequirements getResourceRequirements(ResourceRequirements
requirements, long containerSize)
+ static ResourceRequirements getResourceRequirements(ResourceRequirements
requirements, long containerSize, int cpuMicroCore)
{
Map<String, Quantity> resourceMap = new HashMap<>();
- resourceMap.put("cpu", new Quantity("1000", "m"));
+ resourceMap.put(
+ "cpu",
+ new Quantity(String.valueOf(cpuMicroCore > 0 ? cpuMicroCore :
DruidK8sConstants.DEFAULT_CPU_MILLICORES), "m")
+ );
resourceMap.put("memory", new Quantity(String.valueOf(containerSize)));
ResourceRequirementsBuilder result = new ResourceRequirementsBuilder();
if (requirements != null) {
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/DruidPeonClientIntegrationTest.java
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/DruidPeonClientIntegrationTest.java
index 8bcdf15cb69..241b4d9fc68 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/DruidPeonClientIntegrationTest.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/DruidPeonClientIntegrationTest.java
@@ -125,9 +125,12 @@ public class DruidPeonClientIntegrationTest
null
);
String taskBasePath = "/home/taskDir";
- PeonCommandContext context = new
PeonCommandContext(Collections.singletonList(
- "sleep 10; for i in `seq 1 1000`; do echo $i; done; exit 0"
- ), new ArrayList<>(), new File(taskBasePath));
+ PeonCommandContext context = new PeonCommandContext(
+ Collections.singletonList("sleep 10; for i in `seq 1 1000`; do echo
$i; done; exit 0"),
+ new ArrayList<>(),
+ new File(taskBasePath),
+ config.getCpuCoreInMicro()
+ );
Job job = adapter.createJobFromPodSpec(podSpec, task, context);
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapterTest.java
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapterTest.java
index e2885495938..102565efc35 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapterTest.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapterTest.java
@@ -190,7 +190,7 @@ class K8sTaskAdapterTest
Job jobFromSpec = adapter.createJobFromPodSpec(
K8sTestUtils.getDummyPodSpec(),
task,
- new PeonCommandContext(new ArrayList<>(), new ArrayList<>(), new
File("/tmp/"))
+ new PeonCommandContext(new ArrayList<>(), new ArrayList<>(), new
File("/tmp/"), config.getCpuCoreInMicro())
);
client.batch().v1().jobs().inNamespace("test").create(jobFromSpec);
JobList jobList = client.batch().v1().jobs().inNamespace("test").list();
@@ -391,7 +391,8 @@ class K8sTaskAdapterTest
PeonCommandContext context = new PeonCommandContext(
new ArrayList<>(),
new ArrayList<>(),
- new File("/tmp")
+ new File("/tmp"),
+ 0
);
assertEquals(expected, K8sTaskAdapter.getContainerMemory(context));
@@ -399,7 +400,8 @@ class K8sTaskAdapterTest
new ArrayList<>(),
Collections.singletonList(
"-server -Xms512m -Xmx512m -XX:MaxDirectMemorySize=1g
-Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/druid/data
-XX:+ExitOnOutOfMemoryError
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"),
- new File("/tmp")
+ new File("/tmp"),
+ 0
);
expected = (long) ((HumanReadableBytes.parse("512m") +
HumanReadableBytes.parse("1g")) * 1.2);
assertEquals(expected, K8sTaskAdapter.getContainerMemory(context));
@@ -452,7 +454,8 @@ class K8sTaskAdapterTest
PeonCommandContext context = new PeonCommandContext(
new ArrayList<>(),
new ArrayList<>(),
- new File("/tmp/")
+ new File("/tmp/"),
+ 0
);
KubernetesTaskRunnerConfig config = KubernetesTaskRunnerConfig.builder()
.withNamespace("test")
@@ -548,7 +551,8 @@ class K8sTaskAdapterTest
new PeonCommandContext(
Collections.singletonList("foo && bar"),
new ArrayList<>(),
- new File("/tmp")
+ new File("/tmp"),
+ config.getCpuCoreInMicro()
)
);
Job expected = K8sTestUtils.fileToResource("expectedEphemeralOutput.yaml",
Job.class);
@@ -572,6 +576,63 @@ class K8sTaskAdapterTest
Assertions.assertEquals(expected, actual);
}
+ @Test
+ void testCPUResourceIsEspected() throws IOException
+ {
+ TestKubernetesClient testClient = new TestKubernetesClient(client);
+ Pod pod = K8sTestUtils.fileToResource("ephemeralPodSpec.yaml", Pod.class);
+
+ List<String> javaOpts = new ArrayList<>();
+ javaOpts.add("-Xms1G -Xmx2G -XX:MaxDirectMemorySize=3G");
+ KubernetesTaskRunnerConfig config = KubernetesTaskRunnerConfig.builder()
+
.withNamespace("test")
+
.withJavaOptsArray(javaOpts)
+
.withCpuCore(2000)
+ .build();
+
+ SingleContainerTaskAdapter adapter = new SingleContainerTaskAdapter(
+ testClient,
+ config,
+ taskConfig,
+ startupLoggingConfig,
+ node,
+ jsonMapper,
+ taskLogs
+ );
+ NoopTask task = K8sTestUtils.createTask("id", 1);
+ Job actual = adapter.createJobFromPodSpec(
+ pod.getSpec(),
+ task,
+ new PeonCommandContext(
+ Collections.singletonList("foo && bar"),
+ javaOpts,
+ new File("/tmp"),
+ config.getCpuCoreInMicro()
+ )
+ );
+ Job expected =
K8sTestUtils.fileToResource("expectedCPUResourceOutput.yaml", Job.class);
+ // something is up with jdk 17, where if you compress with jdk < 17 and
try and decompress you get different results,
+ // this would never happen in real life, but for the jdk 17 tests this is
a problem
+ // could be related to: https://bugs.openjdk.org/browse/JDK-8081450
+ actual.getSpec()
+ .getTemplate()
+ .getSpec()
+ .getContainers()
+ .get(0)
+ .getEnv()
+ .removeIf(x -> x.getName().equals("TASK_JSON"));
+ expected.getSpec()
+ .getTemplate()
+ .getSpec()
+ .getContainers()
+ .get(0)
+ .getEnv()
+ .removeIf(x -> x.getName().equals("TASK_JSON"));
+ Assertions.assertEquals(expected, actual);
+
+ }
+
+
@Test
void testEphemeralStorage()
{
@@ -579,7 +640,8 @@ class K8sTaskAdapterTest
Container container = new ContainerBuilder().build();
ResourceRequirements result = K8sTaskAdapter.getResourceRequirements(
container.getResources(),
- 100
+ 100,
+ 1000
);
// requests and limits will only have 2 items, cpu / memory
assertEquals(2, result.getLimits().size());
@@ -591,7 +653,8 @@ class K8sTaskAdapterTest
container.setResources(new
ResourceRequirementsBuilder().withRequests(requestMap).withLimits(limitMap).build());
ResourceRequirements ephemeralResult =
K8sTaskAdapter.getResourceRequirements(
container.getResources(),
- 100
+ 100,
+ 1000
);
// you will have ephemeral storage as well.
assertEquals(3, ephemeralResult.getLimits().size());
@@ -609,7 +672,8 @@ class K8sTaskAdapterTest
container.getResources().setAdditionalProperty("additional", "some-value");
ResourceRequirements additionalProperties =
K8sTaskAdapter.getResourceRequirements(
container.getResources(),
- 100
+ 100,
+ 1000
);
assertEquals(1, additionalProperties.getAdditionalProperties().size());
}
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/MultiContainerTaskAdapterTest.java
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/MultiContainerTaskAdapterTest.java
index 45ea0873376..58993b9a6a0 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/MultiContainerTaskAdapterTest.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/MultiContainerTaskAdapterTest.java
@@ -108,9 +108,12 @@ class MultiContainerTaskAdapterTest
Job actual = adapter.createJobFromPodSpec(
pod.getSpec(),
task,
- new PeonCommandContext(Collections.singletonList("/peon.sh
/druid/data/baseTaskDir/noop_2022-09-26T22:08:00.582Z_352988d2-5ff7-4b70-977c-3de96f9bfca6
1"),
- new ArrayList<>(),
- new File("/tmp")
+ new PeonCommandContext(
+ Collections.singletonList(
+ "/peon.sh
/druid/data/baseTaskDir/noop_2022-09-26T22:08:00.582Z_352988d2-5ff7-4b70-977c-3de96f9bfca6
1"),
+ new ArrayList<>(),
+ new File("/tmp"),
+ config.getCpuCoreInMicro()
)
);
Job expected =
K8sTestUtils.fileToResource("expectedMultiContainerOutput.yaml", Job.class);
@@ -159,9 +162,12 @@ class MultiContainerTaskAdapterTest
Job actual = adapter.createJobFromPodSpec(
spec,
task,
- new PeonCommandContext(Collections.singletonList("/peon.sh
/druid/data/baseTaskDir/noop_2022-09-26T22:08:00.582Z_352988d2-5ff7-4b70-977c-3de96f9bfca6
1"),
- new ArrayList<>(),
- new File("/tmp")
+ new PeonCommandContext(
+ Collections.singletonList(
+ "/peon.sh
/druid/data/baseTaskDir/noop_2022-09-26T22:08:00.582Z_352988d2-5ff7-4b70-977c-3de96f9bfca6
1"),
+ new ArrayList<>(),
+ new File("/tmp"),
+ config.getCpuCoreInMicro()
)
);
Job expected =
K8sTestUtils.fileToResource("expectedMultiContainerOutputOrder.yaml",
Job.class);
@@ -212,9 +218,12 @@ class MultiContainerTaskAdapterTest
Job actual = adapter.createJobFromPodSpec(
spec,
task,
- new PeonCommandContext(Collections.singletonList("/peon.sh
/druid/data/baseTaskDir/noop_2022-09-26T22:08:00.582Z_352988d2-5ff7-4b70-977c-3de96f9bfca6
1"),
- new ArrayList<>(),
- new File("/tmp")
+ new PeonCommandContext(
+ Collections.singletonList(
+ "/peon.sh
/druid/data/baseTaskDir/noop_2022-09-26T22:08:00.582Z_352988d2-5ff7-4b70-977c-3de96f9bfca6
1"),
+ new ArrayList<>(),
+ new File("/tmp"),
+ config.getCpuCoreInMicro()
)
);
Job expected = K8sTestUtils.fileToResource("expectedPodSpec.yaml",
Job.class);
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/SingleContainerTaskAdapterTest.java
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/SingleContainerTaskAdapterTest.java
index 43a40daedc1..afc5299927f 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/SingleContainerTaskAdapterTest.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/SingleContainerTaskAdapterTest.java
@@ -110,7 +110,8 @@ class SingleContainerTaskAdapterTest
new PeonCommandContext(
Collections.singletonList("foo && bar"),
new ArrayList<>(),
- new File("/tmp")
+ new File("/tmp"),
+ config.getCpuCoreInMicro()
)
);
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedCPUResourceOutput.yaml
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedCPUResourceOutput.yaml
new file mode 100644
index 00000000000..f9fec4eac31
--- /dev/null
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedCPUResourceOutput.yaml
@@ -0,0 +1,65 @@
+apiVersion: "batch/v1"
+kind: "Job"
+metadata:
+ annotations:
+ task.id: "id"
+ tls.enabled: "false"
+ labels:
+ druid.k8s.peons: "true"
+ name: "id-3e70afe5cd823dfc7dd308eea616426b"
+spec:
+ activeDeadlineSeconds: 14400
+ backoffLimit: 0
+ template:
+ metadata:
+ annotations:
+ task.id: "id"
+ tls.enabled: "false"
+ labels:
+ druid.k8s.peons: "true"
+ spec:
+ containers:
+ - args:
+ - "foo && bar"
+ command:
+ - "sh"
+ - "-c"
+ env:
+ - name: "druid_monitoring_monitors"
+ value: "[\"org.apache.druid.java.util.metrics.JvmMonitor\",
\"org.apache.druid.server.metrics.TaskCountStatsMonitor\"\
+ ]"
+ - name: "TASK_DIR"
+ value: "/tmp"
+ - name: "TASK_JSON"
+ value:
"H4sIAAAAAAAAAEVOOw7CMAy9i+cOBYmlK0KItWVhNI0BSyEOToKoqt4doxZYLPv9/EbIQyRoIIhEqICd7TYquKqUePidDjN2UrSfxYEM0xKOfDdgvalr86aW0A0z9L9bSsVnc512nZkurHSTZJJQvK+gl5DpZfwIUVmU8wDNarJ0Ssu/EfCJ7PHM3tj9p9i3ltKjWKDbYsR+sU5vP86oMNUAAAA="
+ - name: "JAVA_OPTS"
+ value: "-Xms1G -Xmx2G -XX:MaxDirectMemorySize=3G"
+ - name: "druid_host"
+ valueFrom:
+ fieldRef:
+ fieldPath: "status.podIP"
+ - name: "HOSTNAME"
+ valueFrom:
+ fieldRef:
+ fieldPath: "metadata.name"
+ image: "one"
+ name: "main"
+ ports:
+ - containerPort: 8091
+ name: "druid-tls-port"
+ protocol: "TCP"
+ - containerPort: 8100
+ name: "druid-port"
+ protocol: "TCP"
+ resources:
+ limits:
+ memory: "6000000000"
+ cpu: "2000m"
+ ephemeral-storage: 10Gi
+ requests:
+ memory: "6000000000"
+ cpu: "2000m"
+ ephemeral-storage: 1Gi
+ hostname: "id-3e70afe5cd823dfc7dd308eea616426b"
+ restartPolicy: "Never"
+ ttlSecondsAfterFinished: 172800
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]