|
@@ -0,0 +1,45 @@
|
|
|
|
+package com.css.simulation.resource.scheduler.scheduler;
|
|
|
|
+
|
|
|
|
+import api.common.util.CollectionUtil;
|
|
|
|
+import com.css.simulation.resource.scheduler.configuration.kubernetes.KubernetesConfiguration;
|
|
|
|
+import com.css.simulation.resource.scheduler.pojo.to.KubernetesNodeTO;
|
|
|
|
+import com.css.simulation.resource.scheduler.util.KubernetesUtil;
|
|
|
|
+import io.kubernetes.client.openapi.ApiClient;
|
|
|
|
+import lombok.SneakyThrows;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
+
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import java.util.List;
|
|
|
|
+
|
|
|
|
+@Component
|
|
|
|
+@Slf4j
|
|
|
|
+public class ClusterScheduler {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ KubernetesConfiguration kubernetesConfiguration;
|
|
|
|
+ @Resource
|
|
|
|
+ ApiClient apiClient;
|
|
|
|
+ @Resource
|
|
|
|
+ StringRedisTemplate stringRedisTemplate;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 闲时重置所有并行度
|
|
|
|
+ */
|
|
|
|
+ @Scheduled(fixedDelay = 2 * 60 * 1000)
|
|
|
|
+ @SneakyThrows
|
|
|
|
+ public void initNodeParallelism() {
|
|
|
|
+ List<KubernetesNodeTO> initialNodeList = kubernetesConfiguration.getNodeList(); // 预设并行度的节点列表
|
|
|
|
+ List<String> podNameList = KubernetesUtil.getPod(apiClient, kubernetesConfiguration.getNamespace());
|
|
|
|
+ if (CollectionUtil.isEmpty(podNameList)) {
|
|
|
|
+ for (KubernetesNodeTO kubernetesNodeTO : initialNodeList) {
|
|
|
|
+ stringRedisTemplate.opsForValue().set("node:" + kubernetesNodeTO.getName() + ":parallelism", kubernetesNodeTO.getMaxParallelism() + "");
|
|
|
|
+ log.info("ClusterScheduler--initNodeParallelism 重置节点并行度为:" + initialNodeList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|