|
@@ -22,6 +22,7 @@ import org.springframework.stereotype.Component;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.File;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -99,59 +100,26 @@ public class ProjectUtil {
|
|
|
return nodeName + "#" + podName + ".yaml";
|
|
|
}
|
|
|
|
|
|
- @SneakyThrows
|
|
|
+
|
|
|
public void deletePod(String podName) {
|
|
|
- String key = "pod:" + podName + ":node";
|
|
|
- // 先删除 redis key
|
|
|
- RedisUtil.deleteByKey(stringRedisTemplate, "pod:" + podName + ":node");
|
|
|
try {
|
|
|
+ String key = "pod:" + podName + ":node";
|
|
|
+ // 先删除 redis key
|
|
|
+ RedisUtil.deleteByKey(stringRedisTemplate, "pod:" + podName + ":node");
|
|
|
KubernetesUtil.deletePod(apiClient, kubernetesConfiguration.getNamespace(), podName);
|
|
|
+ TimeUnit.SECONDS.sleep(10); // 暂停 10 秒等待资源完全释放。
|
|
|
+ log.info("ProjectUtil--deletePod 删除 pod 并删除 redis 键值对:" + key);
|
|
|
} catch (Exception e) {
|
|
|
- log.info("ProjectUtil--deletePod pod " + podName + " 不存在。");
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("ProjectUtil--deletePod pod " + podName + " 不存在。", e);
|
|
|
}
|
|
|
-
|
|
|
- log.info("ProjectUtil--deletePod 删除 pod 并删除 redis 键值对:" + key);
|
|
|
}
|
|
|
|
|
|
- @SneakyThrows
|
|
|
- public void deletePodAndAddOneParallelismToNode(String podName, String nodeName) {
|
|
|
- String key = "pod:" + podName + ":node";
|
|
|
- // 先删除 redis key
|
|
|
- RedisUtil.deleteByKey(stringRedisTemplate, "pod:" + podName + ":node");
|
|
|
- try {
|
|
|
- KubernetesUtil.deletePod(apiClient, kubernetesConfiguration.getNamespace(), podName);
|
|
|
- // 节点并行度加一
|
|
|
- addOneParallelismToNode(nodeName);
|
|
|
- } catch (Exception e) {
|
|
|
- log.info("ProjectUtil--deletePod pod " + podName + " 不存在。");
|
|
|
- }
|
|
|
-
|
|
|
- log.info("ProjectUtil--deletePod 删除 pod 并删除 redis 键值对:" + key);
|
|
|
- }
|
|
|
|
|
|
public String getNodeNameOfPod(String podName) {
|
|
|
return stringRedisTemplate.opsForValue().get("pod:" + podName + ":node");
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 更改一个名字继续启动
|
|
|
- *
|
|
|
- * @param projectId 项目 id
|
|
|
- * @param nodeName 运行 pod 的节点名称
|
|
|
- * @param lastPodName 即将删除的 pod 名称
|
|
|
- */
|
|
|
- @SneakyThrows
|
|
|
- public void createNextPod(String projectId, String nodeName, String lastPodName) {
|
|
|
- //1 删除上一个 pod 和 redis 键值对
|
|
|
- deletePod(lastPodName);
|
|
|
-// String lastPodString = FileUtil.read(podYamlDirectory + lastPodName + ".yaml");
|
|
|
- String lastPodString = FileUtil.read(podYamlDirectory + getPodYamlName(nodeName, lastPodName));
|
|
|
- String nextPodName = getRandomPodName(projectId);
|
|
|
- String nextPodString = lastPodString.replace(lastPodName, nextPodName); // pod 名称包括 projectId 和 随机字符串
|
|
|
- log.info("ProjectUtil--createNextPod 创建项目 " + projectId + " 的下一个 pod。");
|
|
|
- createPod(nodeName, nextPodName, nextPodString);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 更改一个名字继续启动
|
|
|
*
|