Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
holmes
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
holmes
Commits
a0dc6428
Commit
a0dc6428
authored
Nov 19, 2021
by
黎博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化
parent
47dd6cd5
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
55 additions
and
139 deletions
+55
-139
K8sController.java
src/main/java/cn/qg/holmes/controller/k8s/K8sController.java
+6
-0
K8sService.java
src/main/java/cn/qg/holmes/service/k8s/K8sService.java
+49
-139
No files found.
src/main/java/cn/qg/holmes/controller/k8s/K8sController.java
View file @
a0dc6428
...
...
@@ -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
;
...
...
src/main/java/cn/qg/holmes/service/k8s/K8sService.java
View file @
a0dc6428
...
...
@@ -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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment