Commit a0dc6428 authored by 黎博's avatar 黎博

优化

parent 47dd6cd5
......@@ -129,6 +129,9 @@ public class K8sController {
case "redis":
k8sService.createRedisService(namespace);
break;
case "redis-sentinel":
k8sService.createRedisSentinelService(namespace);
break;
case "mongodb":
k8sService.createMongodbService(namespace);
break;
......@@ -168,6 +171,9 @@ public class K8sController {
case "redis":
k8sService.createRedisDeployment(namespace, image);
break;
case "redis-sentinel":
k8sService.createRedisSentinelDeployment(namespace, image);
break;
case "mongodb":
k8sService.createMongoDbDeployment(namespace, image);
break;
......
......@@ -88,6 +88,18 @@ public class K8sService {
return objectMeta;
}
/**
* 构建resources
* @param cpuRequestAmount cpu request大小
* @param cpuRequestFormat cpu request单位
* @param memRequestAmount 内存 request大小
* @param memRequestFormat 内存 request单位
* @param cpuLimitAmount cpu最大限制
* @param cpuLimitFormat cpu最大限制的单位
* @param memLimitAmount 内存最大限制
* @param memLimitFormat 内存最大限制单位
* @return ResourceRequirements对象
*/
public ResourceRequirements buildResourceRequirements(String cpuRequestAmount, String cpuRequestFormat, String memRequestAmount, String memRequestFormat,
String cpuLimitAmount, String cpuLimitFormat, String memLimitAmount, String memLimitFormat) {
ResourceRequirements resourceRequirements = new ResourceRequirements();
......@@ -272,6 +284,11 @@ public class K8sService {
}
/**
* 获取pod列表
* @param namespace
* @return
*/
public List<Map<String, Object>> getPodListNew(String namespace) {
// 获取Pod列表
List<Pod> podList = kubernetesClient.pods().inNamespace(namespace).list().getItems();
......@@ -467,7 +484,7 @@ public class K8sService {
}
/**
* 部署Java服务
* 创建 Java Service
* @return
*/
public Service createJavaService(String namespace, String serviceName, Integer debug) {
......@@ -619,27 +636,12 @@ public class K8sService {
container.setEnv(envVarList);
// resources
ResourceRequirements resourceRequirements = new ResourceRequirements();
Map<String, Quantity> requests = new HashMap<>();
Map<String, Quantity> limits = new HashMap<>();
Quantity cpuQuantity = new Quantity();
Quantity memoryQuantity = new Quantity();
Quantity cpuLimit = new Quantity();
Quantity memoryLimit = new Quantity();
cpuQuantity.setAmount(dockerProject.getCpuRequest());
cpuQuantity.setFormat("m");
memoryQuantity.setAmount(dockerProject.getMemRequest());
memoryQuantity.setFormat("Mi");
cpuLimit.setAmount(dockerProject.getCpuLimit());
cpuLimit.setFormat("m");
memoryLimit.setAmount(dockerProject.getMemLimit());
memoryLimit.setFormat("Mi");
requests.put("cpu", cpuQuantity);
requests.put("memory", memoryQuantity);
limits.put("cpu", cpuLimit);
limits.put("memory", memoryLimit);
resourceRequirements.setRequests(requests);
resourceRequirements.setLimits(limits);
ResourceRequirements resourceRequirements = buildResourceRequirements(
dockerProject.getCpuRequest(), "m",
dockerProject.getMemRequest(), "Mi",
dockerProject.getCpuLimit(), "m",
dockerProject.getMemLimit(), "Mi");
container.setResources(resourceRequirements);
// 需要做健康检查的不创建存活检查和就绪检查
......@@ -989,27 +991,9 @@ public class K8sService {
container.setCommand(commandList);
// resources
ResourceRequirements resourceRequirements = new ResourceRequirements();
Map<String, Quantity> requests = new HashMap<>();
Map<String, Quantity> limits = new HashMap<>();
Quantity cpuQuantity = new Quantity();
Quantity memoryQuantity = new Quantity();
Quantity cpuLimit = new Quantity();
Quantity memoryLimit = new Quantity();
cpuQuantity.setAmount("100");
cpuQuantity.setFormat("m");
memoryQuantity.setAmount("100");
memoryQuantity.setFormat("Mi");
cpuLimit.setAmount("300");
cpuLimit.setFormat("m");
memoryLimit.setAmount("300");
memoryLimit.setFormat("Mi");
requests.put("cpu", cpuQuantity);
requests.put("memory", memoryQuantity);
limits.put("cpu", cpuLimit);
limits.put("memory", memoryLimit);
resourceRequirements.setRequests(requests);
resourceRequirements.setLimits(limits);
ResourceRequirements resourceRequirements = buildResourceRequirements(
"100", "m", "1000", "Mi",
"300", "m", "2000", "Mi");
container.setResources(resourceRequirements);
// livenessProbe
......@@ -1140,7 +1124,7 @@ public class K8sService {
PodSpec podSpec = new PodSpec();
List<Container> containerList = new ArrayList<>();
Container container = new Container();
container.setImage(image);
container.setImage("ccr.ccs.tencentyun.com/" + image);
container.setImagePullPolicy("Always");
container.setName("redis-sentinel");
ResourceRequirements resourceRequirements = buildResourceRequirements("100", "m",
......@@ -1152,6 +1136,7 @@ public class K8sService {
podSpec.setImagePullSecrets(imagePullSecrets);
podSpec.setRestartPolicy("Always");
podSpec.setTerminationGracePeriodSeconds(30L);
podSpec.setContainers(containerList);
podTemplateSpec.setMetadata(objectMeta);
podTemplateSpec.setSpec(podSpec);
......@@ -1165,6 +1150,7 @@ public class K8sService {
redisSentinelDeployment.setSpec(deploymentSpec);
redisSentinelDeployment.setStatus(deploymentStatus);
log.info("{}环境创建redis sentinel", namespace);
return kubernetesClient.apps().deployments().inNamespace(namespace).create(redisSentinelDeployment);
}
......@@ -1328,27 +1314,9 @@ public class K8sService {
container.setName("mysql");
// resources
ResourceRequirements resourceRequirements = new ResourceRequirements();
Map<String, Quantity> requests = new HashMap<>();
Map<String, Quantity> limits = new HashMap<>();
Quantity cpuQuantity = new Quantity();
Quantity memoryQuantity = new Quantity();
Quantity cpuLimit = new Quantity();
Quantity memoryLimit = new Quantity();
cpuQuantity.setAmount("200");
cpuQuantity.setFormat("m");
memoryQuantity.setAmount("500");
memoryQuantity.setFormat("Mi");
cpuLimit.setAmount("2");
cpuLimit.setFormat("");
memoryLimit.setAmount("1");
memoryLimit.setFormat("Gi");
requests.put("cpu", cpuQuantity);
requests.put("memory", memoryQuantity);
limits.put("cpu", cpuLimit);
limits.put("memory", memoryLimit);
resourceRequirements.setRequests(requests);
resourceRequirements.setLimits(limits);
ResourceRequirements resourceRequirements = buildResourceRequirements(
"200", "m", "200", "Mi",
"2048", "m", "1", "Gi");
container.setResources(resourceRequirements);
// env
......@@ -1417,13 +1385,7 @@ public class K8sService {
podSpec.setVolumes(volumeList);
// imagePullSecrets
List<LocalObjectReference> objectReferences = new ArrayList<>();
LocalObjectReference objectReference1 = new LocalObjectReference();
objectReference1.setName("qcloudregistrykey");
LocalObjectReference objectReference2 = new LocalObjectReference();
objectReference2.setName("tencenthubkey");
objectReferences.add(objectReference1);
objectReferences.add(objectReference2);
List<LocalObjectReference> objectReferences = buildImagePullSecrets();
podSpec.setImagePullSecrets(objectReferences);
// restartPolicy
......@@ -1555,27 +1517,9 @@ public class K8sService {
container.setName("mongodb");
// resources
ResourceRequirements resourceRequirements = new ResourceRequirements();
Map<String, Quantity> requests = new HashMap<>();
Map<String, Quantity> limits = new HashMap<>();
Quantity cpuRequest = new Quantity();
Quantity memoryRequest = new Quantity();
Quantity cpuLimit = new Quantity();
Quantity memoryLimit = new Quantity();
cpuRequest.setAmount("256");
cpuRequest.setFormat("m");
memoryRequest.setAmount("256");
memoryRequest.setFormat("Mi");
cpuLimit.setAmount("1024");
cpuLimit.setFormat("m");
memoryLimit.setAmount("512");
memoryLimit.setFormat("Mi");
requests.put("cpu", cpuRequest);
requests.put("memory", memoryRequest);
limits.put("cpu", cpuLimit);
limits.put("memory", memoryLimit);
resourceRequirements.setRequests(requests);
resourceRequirements.setLimits(limits);
ResourceRequirements resourceRequirements = buildResourceRequirements(
"256", "m", "256", "Mi",
"1024", "m", "512", "Mi");
container.setResources(resourceRequirements);
// env
......@@ -1632,13 +1576,7 @@ public class K8sService {
volumeList.add(volume);
// imagePullSecrets
List<LocalObjectReference> imagePullSecrets = new ArrayList<>();
LocalObjectReference localObjectReference1 = new LocalObjectReference();
localObjectReference1.setName("qcloudregistrykey");
LocalObjectReference localObjectReference2 = new LocalObjectReference();
localObjectReference2.setName("tencenthubkey");
imagePullSecrets.add(localObjectReference1);
imagePullSecrets.add(localObjectReference2);
List<LocalObjectReference> imagePullSecrets = buildImagePullSecrets();
podSpec.setContainers(containerList);
podSpec.setVolumes(volumeList);
......@@ -1779,27 +1717,9 @@ public class K8sService {
container.setImage("ccr.ccs.tencentyun.com/" + image);
container.setImagePullPolicy("Always");
container.setName("zookeeper");
ResourceRequirements resourceRequirements = new ResourceRequirements();
Map<String, Quantity> requests = new HashMap<>();
Quantity cpuRequest = new Quantity();
Quantity menRequest = new Quantity();
cpuRequest.setAmount("100");
cpuRequest.setFormat("m");
menRequest.setAmount("300");
menRequest.setFormat("Mi");
requests.put("cpu", cpuRequest);
requests.put("memory", menRequest);
Map<String, Quantity> limits = new HashMap<>();
Quantity cpuLimit = new Quantity();
Quantity memLimit = new Quantity();
cpuLimit.setAmount("200");
cpuLimit.setFormat("m");
memLimit.setAmount("300");
memLimit.setFormat("Mi");
limits.put("cpu", cpuLimit);
limits.put("memory", memLimit);
resourceRequirements.setRequests(requests);
resourceRequirements.setLimits(limits);
ResourceRequirements resourceRequirements = buildResourceRequirements(
"100", "m", "300", "Mi",
"200", "m", "600", "Mi");
container.setResources(resourceRequirements);
// livenessProbe
......@@ -1856,18 +1776,13 @@ public class K8sService {
volume.setPersistentVolumeClaim(pvcSource);
volumes.add(volume);
List<LocalObjectReference> localObjectReferenceList = new ArrayList<>();
LocalObjectReference localObjectReference1 = new LocalObjectReference();
LocalObjectReference localObjectReference2 = new LocalObjectReference();
localObjectReference1.setName("qcloudregistrykey");
localObjectReference2.setName("tencenthubkey");
localObjectReferenceList.add(localObjectReference1);
localObjectReferenceList.add(localObjectReference2);
// imagePullSecrets
List<LocalObjectReference> imagePullSecrets = buildImagePullSecrets();
podSpec.setContainers(containerList);
podSpec.setVolumes(volumes);
podSpec.setDnsPolicy("ClusterFirst");
podSpec.setImagePullSecrets(localObjectReferenceList);
podSpec.setImagePullSecrets(imagePullSecrets);
podSpec.setRestartPolicy("Always");
podSpec.setTerminationGracePeriodSeconds(30L);
......@@ -1994,8 +1909,9 @@ public class K8sService {
DeploymentStrategy deploymentStrategy = new DeploymentStrategy();
deploymentStrategy.setType("Recreate");
ResourceRequirements resourceRequirements = buildResourceRequirements("100", "m",
"1500", "Mi", "200", "m", "1500", "Mi");
ResourceRequirements resourceRequirements = buildResourceRequirements(
"100", "m", "500", "Mi",
"200", "m", "1500", "Mi");
List<EnvVar> envVarList = new ArrayList<>();
EnvVar envVar1 = new EnvVar();
......@@ -2039,19 +1955,13 @@ public class K8sService {
List<Volume> volumeList = new ArrayList<>();
// imagePullSecrets
List<LocalObjectReference> localObjectReferenceList = new ArrayList<>();
LocalObjectReference localObjectReference1 = new LocalObjectReference();
LocalObjectReference localObjectReference2 = new LocalObjectReference();
localObjectReference1.setName("qcloudregistrykey");
localObjectReference2.setName("tencenthubkey");
localObjectReferenceList.add(localObjectReference1);
localObjectReferenceList.add(localObjectReference2);
List<LocalObjectReference> imagePullSecrets = buildImagePullSecrets();
PodSpec podSpec = new PodSpec();
podSpec.setHostname("rabbitmq-" + namespace);
podSpec.setContainers(containerList);
podSpec.setVolumes(volumeList);
podSpec.setImagePullSecrets(localObjectReferenceList);
podSpec.setImagePullSecrets(imagePullSecrets);
podSpec.setRestartPolicy("Always");
podSpec.setTerminationGracePeriodSeconds(30L);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment