Commit ef25ec83 authored by 黎博's avatar 黎博

新增清空redis接口

parent 99ac67b7
...@@ -2,8 +2,6 @@ package cn.qg.holmes.service.k8s; ...@@ -2,8 +2,6 @@ package cn.qg.holmes.service.k8s;
import cn.qg.holmes.entity.k8s.DockerProject; import cn.qg.holmes.entity.k8s.DockerProject;
import cn.qg.holmes.entity.k8s.ServiceCreateVo; import cn.qg.holmes.entity.k8s.ServiceCreateVo;
import com.alibaba.fastjson.JSON;
import com.jayway.jsonpath.JsonPath;
import io.fabric8.kubernetes.api.model.*; import io.fabric8.kubernetes.api.model.*;
import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.apps.DeploymentSpec; import io.fabric8.kubernetes.api.model.apps.DeploymentSpec;
...@@ -28,11 +26,11 @@ import java.util.Map; ...@@ -28,11 +26,11 @@ import java.util.Map;
@Slf4j @Slf4j
@Component @Component
public class TkeService { public class K8sService {
private KubernetesClient kubernetesClient; private KubernetesClient kubernetesClient;
public TkeService() { public K8sService() {
try { try {
String configYAML = String.join("\n", readConfigFile("kube-config.yml")); String configYAML = String.join("\n", readConfigFile("kube-config.yml"));
Config config = Config.fromKubeconfig(configYAML); Config config = Config.fromKubeconfig(configYAML);
...@@ -1830,12 +1828,77 @@ public class TkeService { ...@@ -1830,12 +1828,77 @@ public class TkeService {
return kubernetesClient.extensions().ingresses().inNamespace(namespace).withName(serviceName).get() != null; return kubernetesClient.extensions().ingresses().inNamespace(namespace).withName(serviceName).get() != null;
} }
/**
* 获取Service详情
* @param namespace 环境
* @param serviceName service名称
* @return
*/
public Service getServiceDetail(String namespace, String serviceName) {
return kubernetesClient.services().inNamespace(namespace).withName(serviceName).get();
}
public Pod getPodDetail(String namespace, String serviceType, String serviceName) {
LabelSelector labelSelector = new LabelSelector();
Map<String, String> labelMap = new HashMap<>();
labelMap.put("type", serviceType);
labelMap.put("qcloud-app", serviceName);
labelSelector.setMatchLabels(labelMap);
return kubernetesClient.pods().inNamespace(namespace).withLabelSelector(labelSelector).list().getItems().get(0);
}
/**
* 获取pod和service的一些信息
* @param namespace
* @param serviceType
* @param serviceName
* @return
*/
public Map<String, Object> getPodAndServiceInfo(String namespace, String serviceType, String serviceName) {
Service service = getServiceDetail(namespace, serviceName);
Pod pod = getPodDetail(namespace, serviceType, serviceName);
Map<String, Object> map = new HashMap<>();
if (pod.getStatus().getPhase().equals("Running")) {
// 端口映射
List<Map<String, Object>> portMappingList = new ArrayList<>();
ObjectMeta podMetadata = pod.getMetadata();
if (service != null) {
List<ServicePort> servicePortList = service.getSpec().getPorts();
if (servicePortList.size() > 0) {
for (ServicePort servicePort : servicePortList) {
if (servicePort.getNodePort() != null) {
map.put("port_" + servicePort.getName(), servicePort.getNodePort());
}
Map<String, Object> portMap = new HashMap<>();
portMap.put("name", servicePort.getName());
portMap.put("nodePort", servicePort.getNodePort());
portMap.put("port", servicePort.getPort());
portMap.put("protocol", servicePort.getProtocol());
portMap.put("targetPort", servicePort.getTargetPort());
portMappingList.add(portMap);
}
}
if (portMappingList.size() > 0) {
map.put("portMappings", portMappingList);
}
}
map.put("createdAt", podMetadata.getCreationTimestamp());
map.put("serviceName", serviceName);
map.put("podName", podMetadata.getName());
map.put("labels", podMetadata.getLabels());
List<ContainerStatus> containerStatuses = pod.getStatus().getContainerStatuses();
map.put("image", pod.getStatus().getContainerStatuses().get(0).getImage());
map.put("imageId", pod.getStatus().getContainerStatuses().get(0).getImageID());
map.put("lanIp", pod.getStatus().getHostIP());
map.put("podIp", pod.getStatus().getPodIP());
map.put("startTime", pod.getStatus().getStartTime());
map.put("status", containerStatuses.get(0).getReady());
}
return map;
}
public static void main(String[] args) { public static void main(String[] args) {
TkeService tkeService = new TkeService(); K8sService k8sService = new K8sService();
// tkeService.updateDeployment("k8s", "qa-platform", "qa-test/qa-platform:master-20210729112805284"); System.out.println(k8sService.getPodDetail("k8s", "base", "redis"));
// tkeService.createIngress("fe", "qa-platform-ui", "qa-platform-ui");
// tkeService.createUIAndNodeService("fe", "qa-platform-ui", "ui", "ui");
// System.out.println(tkeService.queryIfIngressExistByName("k8s", "qa-platform"));
// System.out.println(tkeService.queryIfIngressExistByName("namespace", "qa-platform-ui"));
} }
} }
package cn.qg.holmes.service.k8s;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
@Slf4j
@Component
public class RedisService {
/**
* 清空redis
* @param redisHost redis host
* @param redisPort redis port
* @return
*/
public boolean flushRedis(String redisHost, Integer redisPort) {
try {
Jedis jedis = new Jedis(redisHost, redisPort);
jedis.flushAll();
jedis.quit();
jedis.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
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