forked from fafeidou/fast-cloud-nacos
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
qinfuxiang
committed
Oct 26, 2021
1 parent
f5699e6
commit eb087e7
Showing
9 changed files
with
783 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
HELP.md | ||
target/ | ||
!.mvn/wrapper/maven-wrapper.jar | ||
!**/src/main/**/target/ | ||
!**/src/test/**/target/ | ||
|
||
### STS ### | ||
.apt_generated | ||
.classpath | ||
.factorypath | ||
.project | ||
.settings | ||
.springBeans | ||
.sts4-cache | ||
|
||
### IntelliJ IDEA ### | ||
.idea | ||
*.iws | ||
*.iml | ||
*.ipr | ||
|
||
### NetBeans ### | ||
/nbproject/private/ | ||
/nbbuild/ | ||
/dist/ | ||
/nbdist/ | ||
/.nb-gradle/ | ||
build/ | ||
!**/src/main/**/build/ | ||
!**/src/test/**/build/ | ||
|
||
### VS Code ### | ||
.vscode/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
apiVersion: v1 | ||
clusters: | ||
- cluster: | ||
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1Ea3lOekE1TURJME1Wb1hEVE14TURreU5UQTVNREkwTVZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTTk2CmthVjdadkhhY2NFTHgwOW1CQ3ZOTVNyckp3K0pnM05sUUh2MXRrSEJieUczcFJEUGpmVlBTU0ozcVkyS3ErMDAKakZBaEJnZ21TaWMrVWlUS3VxczVMR1hPZlp3bVdON1krY3pvQUV5WFkyQ1oxU0lDMmo5Z2JiL0tUbE5lZlFCZgp5dXV4VU1iZW5hUkY4c1QvbmZ3SzJsUW1vWXV5MHVtQ3FxamlDeU1hT0YvZG83MThPZUFQdDZSdjNsTHI4cDVMCmhPSFBTaTNIQ0hhcGV2QW1OYWJZcUdHaDJ3VDNQaGlsSFBEZnEzcE9jNU1xSFAxMjRaT1ZMYk0zYlpERjlMV0cKZmpxeTdWWGc1L3FBZkNuVzVXQ00zcjFab01vZDFhQ2RVdk9BN0c0TTRlVGZaeFJWTHptUTlBSm9wU2RNSzF3RQpRRWVzRndacFUrMjFlR0h1L1BzQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFESUJqcFZTNUF3aXQ2cWFOdUdBaGR4V2MrbUwKR1drb1pRQUtwZ1Uwd0FLYk9YakdYYzgrWXk4M3RuVzVLbmEwVUhQTDB6UmIvNEI0U1pwUFM2amFRNTNuUklDMgpXd1RGaFhrYWl5aTlkM3pGdjdtTkRMeWJFNWtCam1wS1UzMnl6MWFZWWFhcVlxRmdXZm0wSjZDOGJEWFY3T3BHCitTbmRvZFU3cXdScy8wWkV6L0hUejY1Z2diTkZkcW55dFRYRkZuSnFhcWVsbjhvSGZLN3RsVy9oODNON0xmc2wKVVU2a2ZEcmxHS0tRcEZ5OVAxZ2JtbFlFUVZ3cnBiYVkrc3RoRTkzN0ZweFNCODBqbnlGdVlLWmJzeGhncnhoSwpNcnJIaHdzNmpzMkp1YkFUSVVwMFlhYUZ2c3RsL1RDSHI4MjAvRDhmT2VKWEFneXFzNlR3Y2NqZHcyVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= | ||
server: https://192.168.56.112:6443 | ||
name: kubernetes | ||
contexts: | ||
- context: | ||
cluster: kubernetes | ||
user: kubernetes-admin | ||
name: kubernetes-admin@kubernetes | ||
current-context: kubernetes-admin@kubernetes | ||
kind: Config | ||
preferences: {} | ||
users: | ||
- name: kubernetes-admin | ||
user: | ||
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0lJUnZYYmxYdlhmWXd3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TVRBNU1qY3dPVEF5TkRGYUZ3MHlNakE1TWpjd09UQXlORE5hTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZoUzU3T3hNK2d2Tk5OZUgKVVVadWtvMXoyT0hCNXpxdXdPOXQvQ0JRU2w4TGx4UCtmQjZYUHY4eFJickdndWlaWUxmdWdvYW8ybEIvdmEzcgoxVlcwQkhoMHBRV3NxaVpNWDR3M1cxcEFhUVd2cFZWaW8rOUtlNTZGUDlyWkF5ek5YeFBKSmRHR01tVHY4TkNkCjR2NEFmOUY5SC9HZHhuKzBrT2tXMWZKZnIwUlJhSFAwUDc2KzlZMjFLUXlXQmpneVpDSU9Pb3VIYnZ0OTg0aEkKZGdVV3FUVnR2REhFNE1NWDNwNHJKR3NmakNaa3F4SnV3YzF5Nm1iK05OeDk0RHBpWkQ1azEyREdhazJvWlRmZwpBTXdLU1d6SzhxOStnTWFCbmR5a3czZW1nblAxM2k2RjZVMzUva2FJKzh1ODNPaTY0VmlHZk51NmU4aytUOXFICjNlZFZSd0lEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKd1dMS2pCaWxLalRHOFVUcG9KYnRPaFI5dXJDVTZTMFk4dgo4elZlbkJrS3dzTjRhZUxCSjlwclYxeDhqN3NQTEFvRzJsR2xZdE1DaGpWbVhNem5LKzJ4bHVEcTBZQVREcmtFCnRpV3FHVWZlM1JwRDI1ZmxOdE0vQ2VQUjdtUm95SGdpTzNjYUVMbEU5TWVhVXpVK2xhT2VkVm15RHEzUjBGTGYKRm5BeTV0OE5tK1MvdXBoNEZzV3ltWk1IQUdHdFBOdEM3NXp1b1NCQlQxMVNLOTlJUmxkK0VFeFpoWTJoemd3ZAprOWorWWhLdG9pem1kS2pYd0F0Um5XcjFQbXhVQXFBZyswejNwWFJzT2tYeGFjSW8yVWRXSlpGOE54SENBbDcyCkQrOTUzL2ZpZXFJZTIvbFdPbkxlaXZMd0FTZGU4ejMvZUZ0R1ZIeWlhS1BuNGxpZ2krST0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= | ||
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBdmhTNTdPeE0rZ3ZOTk5lSFVVWnVrbzF6Mk9IQjV6cXV3Tzl0L0NCUVNsOExseFArCmZCNlhQdjh4UmJyR2d1aVpZTGZ1Z29hbzJsQi92YTNyMVZXMEJIaDBwUVdzcWlaTVg0dzNXMXBBYVFXdnBWVmkKbys5S2U1NkZQOXJaQXl6Tlh4UEpKZEdHTW1UdjhOQ2Q0djRBZjlGOUgvR2R4biswa09rVzFmSmZyMFJSYUhQMApQNzYrOVkyMUtReVdCamd5WkNJT09vdUhidnQ5ODRoSWRnVVdxVFZ0dkRIRTRNTVgzcDRySkdzZmpDWmtxeEp1CndjMXk2bWIrTk54OTREcGlaRDVrMTJER2FrMm9aVGZnQU13S1NXeks4cTkrZ01hQm5keWt3M2VtZ25QMTNpNkYKNlUzNS9rYUkrOHU4M09pNjRWaUdmTnU2ZThrK1Q5cUgzZWRWUndJREFRQUJBb0lCQUdTU3F0MkZHaVdqWU94NApyWXgvYTduM1JqaVhHdld4d3cwcW9sTW85ZEtqLzRuc2RsWk9DVkMzemVaTE1RWEs5SHlNVlpLU2xYME40c2tGCjRTWjd0a2czUStDYzVBTVRTSTIxcndTUytFbVpUSnA2VnpyT1BlYXl0V1pYOFVNUXpZbGsrcVViKzVsbWR0NUEKUTRuN1EyQmVBNHFIV1NmU0lrUWFVSTdiTTIyVUd0OG9FUkszaGVnTnpqeitBVktSN3lBMFRDWEhXMU1IOVB1SQpCY3ZWdGhKZ0JwekNiNWhWcUFyZGF0K2Q2TmdRR3JhbnBZYy9RZXk0dFFwQmwyUXVlQVdiRXpDUVlyenl4RmR6ClphazAyb2ZqeHlNUmZXZUJHRXhwSU0vSnpoTk9WVWJERDFJNzRmakExbkQvZjRLT3JOYXVrcG1BS3lTcnI3dDgKUkEzTUp1RUNnWUVBM0dkNmdwVFgrNDRtNWhXZlNORTNWQi9tZUtWTm1wYjNrY0NTL0VIcFR1OVQ1eFZHVFNQcQp4TTlpY2NtS0JJNE9jN2pXWThMTjRjamZRVzhaOVlNRWtGR3VZMDRXcG9HZSt2OENueW5kU0o0Rk5hKzFUWk11CkdGTStIdjdyR1BrQncxeG1CR0RmNU12RzBBUUIyUStJN0hIVURrWjhKUXU4OXhOeVlMOHY1MDBDZ1lFQTNNZUwKbmt3VEZZQjVvZWN3UHJRTWxFNXN6eDlqcURLQWlwTXcwa1hyUnVuU3NjTENZMTdtTTNWQUhIczFua3pZS2hGQQo4WlFYa1FyajhydCtUaFphVVowK2xhSnNVMzBtajhzV0Q1UUhDRlNnZnR0QzgyaWhhMmdVaEhZdmJlNVpUSHhZCjNZTExxZGxpZHJlcDRBSFZkZDBVZXZ6YlpvSHNMUFc5aDJkY0xPTUNnWUI1UVRpbUZHc0tpdmNkaC9HOHB0VlEKbzhnd3dZaURMdUQrdjdwZHE0bEdrdVpPOEdaZjFBMjV2dnBDN1lUUDRyTlN1UExCcVkrSTB2RDRWNzRwVXE0MQpFNnJrR1RiZTNkcnY3VkdzN09RL3FpZmxsRWdqYUlCb2c0dGVsQklWQ0JFUFFJc2poNFJGcEZJNWFLcjNsdE5XCmVYMFhhWEd0RTlzZTl3VHE4dVBRMVFLQmdDTEx6R1I1aHZSM21EUDlOT3hkQWpLSm5icVRMdWkrZE9YaVJ1cU4KSElURHEzSmF5THBTcGFOc2tsc3F6QXVUL3VtNmFHcnF0VUFsNEVGTWJaNnZCVE1odmxCbEZmK2VsT3BLenNKTAp5VVAxMm9uRDB1eDhEQnphZllsVyt5aXZUU0d4NDJ1ZUJxMVJWcVJ4VS9PN05rSnFRcVVUbnh5cjAyWk9vTDFyCmUrcVRBb0dBYWRETnhxbS9zSHFFTGUxTnZCbDAxZ1NkK2Q1RUsvUloyY0tMT0YyMWlWNXh5bzh1RUladVV2UjkKdVZlVGNnTUVvdlR1UXN4SUJUVFg4Zmh0eUZseFJuU045akEyWXBhRkZoMFZQaXIzZmFGYUltU3lyWkttNGd4aQpDMWt6bnlTejNLbmhWc2RPRFZGY0l3K2EvN2pCYWhrVVNZYnl4ZkhuUWtSNFNoMkdObnM9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
<parent> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-parent</artifactId> | ||
<version>2.1.0.RELEASE</version> | ||
<relativePath/> <!-- lookup parent from repository --> | ||
</parent> | ||
<groupId>com.example</groupId> | ||
<artifactId>fast-k8s-client</artifactId> | ||
<version>0.0.1-SNAPSHOT</version> | ||
<name>fast-k8s-client</name> | ||
<description>fast-k8s-client</description> | ||
<properties> | ||
<java.version>1.8</java.version> | ||
</properties> | ||
<dependencies> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter</artifactId> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-test</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.kubernetes</groupId> | ||
<artifactId>client-java</artifactId> | ||
<version>12.0.1</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.projectlombok</groupId> | ||
<artifactId>lombok</artifactId> | ||
<scope>provided</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-maven-plugin</artifactId> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
|
||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#!/bin/bash | ||
for each in $(kubectl get pods -n default|grep Evicted|awk '{print $1}'); | ||
do | ||
kubectl delete pods $each -n default | ||
done | ||
|
||
## 删除指定namespace下所有evict的pod |
151 changes: 151 additions & 0 deletions
151
fast-k8s-client/src/main/java/fast/cloud/k8s/FastK8sClientApplication.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
package fast.cloud.k8s; | ||
|
||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
import org.springframework.boot.CommandLineRunner; | ||
import org.springframework.boot.SpringApplication; | ||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
|
||
import java.util.HashMap; | ||
import java.util.Map; | ||
import java.util.Set; | ||
|
||
@SpringBootApplication | ||
|
||
public class FastK8sClientApplication implements CommandLineRunner { | ||
private static final Logger logger = LoggerFactory.getLogger(FastK8sClientApplication.class); | ||
|
||
private final Map<String, Integer> portMapping = new HashMap<>(16); | ||
private final Map<String, Set<String>> addressesMapping = new HashMap<>(16); | ||
|
||
public static void main(String[] args) { | ||
SpringApplication.run(FastK8sClientApplication.class, args); | ||
} | ||
|
||
@Override | ||
public void run(String... args) throws Exception { | ||
//直接写config path | ||
// getAllPos(); | ||
// String kubeConfigPath = "config.yml"; | ||
// | ||
// InputStream resourceAsStream = new ClassPathResource("config.yml").getInputStream(); | ||
// //加载k8s, config | ||
// ApiClient client = ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new InputStreamReader(resourceAsStream, "UTF-8"))).build(); | ||
// Configuration.setDefaultApiClient(client); | ||
// | ||
// registerWatchersIfNecessary("bfe-device-id-svc"); | ||
// | ||
// Set<String> address = addressesMapping.getOrDefault("bfe-device-id-svc", Collections.emptySet()); | ||
// | ||
// Integer port = portMapping.get("bfe-device-id-svc"); | ||
// | ||
// System.out.println(); | ||
// 3. get pod meta by pod label | ||
// Map<String, Map<String, String>> appPodMeta = infoFetcher.getPodMeta(appId); | ||
// | ||
// appPodLabels.getOrDefault(appId, new HashMap<>()) | ||
// | ||
// // 4. join the results of step 2 and 3 to figure out final results. | ||
// List<ServiceNode> serviceNodes = new ArrayList<>(); | ||
// for (String address : appEndpoints.getAddresses()) { | ||
// Map<String, String> addressMeta = appPodMeta.getOrDefault(address, new HashMap<>()); | ||
// serviceNodes.add(new ServiceNode(new cn.lalaframework.router.ServiceInstance("k8s", address, appEndpoints.getPort(), addressMeta), | ||
// addressMeta)); | ||
// } | ||
} | ||
// | ||
// private static final String K8S_FACADE_SVC_SUFFIX = "-all"; | ||
// private static final String FIELD_KEY = "metadata.name"; | ||
// | ||
// | ||
// private void getAllPos() throws IOException, ApiException { | ||
// //直接写config path | ||
// String kubeConfigPath = "config.yml"; | ||
// | ||
// InputStream resourceAsStream = new ClassPathResource("config.yml").getInputStream(); | ||
// //加载k8s, config | ||
// ApiClient client = ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new InputStreamReader(resourceAsStream, "UTF-8"))).build(); | ||
// | ||
// //将加载config的client设置为默认的client | ||
// Configuration.setDefaultApiClient(client); | ||
// | ||
// //创建一个api | ||
// CoreV1Api api = new CoreV1Api(); | ||
// | ||
// //打印所有的pod | ||
// V1PodList list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, | ||
// null, null); | ||
// | ||
// for (V1Pod item : list.getItems()) { | ||
// System.out.println(item); | ||
// } | ||
// } | ||
// | ||
// | ||
// public void registerWatchersIfNecessary(String appId) { | ||
// CoreV1Api apiHandle = new CoreV1Api(); | ||
// SharedInformerFactory factory = new SharedInformerFactory(); | ||
// | ||
// SharedIndexInformer<V1Endpoints> endpointsInformer = | ||
// factory.sharedIndexInformerFor( | ||
// (CallGeneratorParams params) -> apiHandle.listEndpointsForAllNamespacesCall(false, null, | ||
// String.format("%s=%s", FIELD_KEY, k8sFacadeService(appId)), null, null, null, | ||
// params.resourceVersion, params.timeoutSeconds, params.watch, null), | ||
// V1Endpoints.class, | ||
// V1EndpointsList.class); | ||
// | ||
// endpointsInformer.addEventHandler(new ResourceEventHandler<V1Endpoints>() { | ||
// @Override | ||
// public void onAdd(V1Endpoints v1Endpoints) { | ||
// logger.info("A service endpoint creation event was detected for appId '{}'.", appId); | ||
// onEndpointsEvent(appId, v1Endpoints, null); | ||
// } | ||
// | ||
// @Override | ||
// public void onUpdate(V1Endpoints v1Endpoints, V1Endpoints newV1Endpoints) { | ||
// logger.info("A service endpoint update event was detected for appId '{}'.", appId); | ||
// onEndpointsEvent(appId, newV1Endpoints, v1Endpoints); | ||
// } | ||
// | ||
// @Override | ||
// public void onDelete(V1Endpoints v1Endpoints, boolean b) { | ||
// logger.info("A service endpoint deletion event was detected for appId '{}'.", appId); | ||
// onEndpointsEvent(appId, null, v1Endpoints); | ||
// } | ||
// }); | ||
// } | ||
// | ||
// private static String k8sFacadeService(final String appId) { | ||
// return appId + K8S_FACADE_SVC_SUFFIX; | ||
// } | ||
// | ||
// private synchronized void onEndpointsEvent(String appId, V1Endpoints newEndpoints, V1Endpoints oldEndpoints) { | ||
// Set<String> newAddresses = new HashSet<>(addressesMapping.getOrDefault(appId, Collections.emptySet())); | ||
// if (oldEndpoints != null) { | ||
// if (oldEndpoints.getSubsets().size() > 1) { | ||
// logger.debug("Multiple subsets found in current endpoints list, apply the first group only."); | ||
// } | ||
// V1EndpointSubset subset = oldEndpoints.getSubsets().get(0); | ||
// subset.getAddresses().stream().forEach(e -> newAddresses.remove(e.getIp())); | ||
// } | ||
// | ||
// Integer port = null; | ||
// if (newEndpoints != null && newEndpoints.getSubsets() != null) { | ||
// if (newEndpoints.getSubsets().size() > 1) { | ||
// logger.debug("Multiple subsets found in current endpoints list, apply the first group only."); | ||
// } | ||
// | ||
// V1EndpointSubset subset = newEndpoints.getSubsets().get(0); | ||
// subset.getAddresses().stream().forEach(e -> newAddresses.add(e.getIp())); | ||
// if (subset.getPorts().size() > 1) { | ||
// logger.debug("Multiple ports found in current subset, apply the first one as default traffic port."); | ||
// } | ||
// port = subset.getPorts().get(0).getPort(); | ||
// } | ||
// | ||
// if (port != null) { | ||
// portMapping.put(appId, port); | ||
// } | ||
// addressesMapping.put(appId, newAddresses); | ||
// } | ||
} |
Oops, something went wrong.