[ Agent ] [ CMII ] - 新增pod的条件查询,根据主机查询,根据deployment查询

This commit is contained in:
zeaslity
2024-01-12 14:57:20 +08:00
parent 1cdfdb77f6
commit 55454eedbe
6 changed files with 1067 additions and 38 deletions

View File

@@ -49,12 +49,16 @@ func TestBackupAllCmiiDeploymentToMap(t *testing.T) {
func TestUpdateCmiiDeploymentImageTag(t *testing.T) {
//tag := UpdateCmiiDeploymentImageTag("devflight", "cmii-uav-depotautoreturn", "123sdsa45678")
//tag := UpdateCmiiDeploymentImageTag("demo", "cmii-uav-platform", "5.2.0-011101")
tag := UpdateCmiiDeploymentImageTag("demo", "cmii-uav-waypoint", "5.2.0-011102")
//tag := UpdateCmiiDeploymentImageTag("uavms", "uavms-lowaltitude-platform", "5.1.0-011103")
cmiiEnv := "uavms"
appName := "uavms-lowaltitude-platform"
newTag := "5.2.0-011202"
tag := UpdateCmiiDeploymentImageTag(cmiiEnv, appName, newTag)
assert.Equal(t, tag, true, "update image tag failed !")
check := CmiiOperator.DeploymentStatusCheck(cmiiEnv, appName, 180)
assert.Equal(t, check, true, "deployment run failed!")
}
func TestRollBackCmiiDeploymentFromUpdateLog(t *testing.T) {
@@ -65,7 +69,7 @@ func TestRollBackCmiiDeploymentFromUpdateLog(t *testing.T) {
func TestRestartCmiiBackendDeployment(t *testing.T) {
RestartCmiiBackendDeployment("devflight")
RestartCmiiBackendDeployment("test")
}
func TestRestartCmiiFrontendDeployment(t *testing.T) {
@@ -96,7 +100,7 @@ func TestFindAllNodeNotHealthy(t *testing.T) {
}
func TestFindPodNotHealthy(t *testing.T) {
podNotHealthy := FindPodNotHealthy("int")
podNotHealthy := FindPodNotHealthy("valida")
podNotHealthy = FilterAllCmiiPodSoft(podNotHealthy)
for _, podInterface := range podNotHealthy {
@@ -105,7 +109,7 @@ func TestFindPodNotHealthy(t *testing.T) {
}
func TestFindPodNotHealthy_And_Delete(t *testing.T) {
podNotHealthy := FindPodNotHealthy("int")
podNotHealthy := FindPodNotHealthy("uavms")
podNotHealthy = FilterAllCmiiPodSoft(podNotHealthy)
for _, podInterface := range podNotHealthy {

View File

@@ -301,39 +301,37 @@ func (op *CmiiK8sOperator) DeploymentOneInterface(cmiiEnv, appName string) (depl
return &convert
}
func (op *CmiiK8sOperator) DeploymentScale(cmiiEnv, appFizz string, scaleCount int32) bool {
func (op *CmiiK8sOperator) DeploymentScale(cmiiEnv, appName string, scaleCount int32) bool {
deploymentFizz := op.DeploymentFizz(cmiiEnv, appFizz)
deployment := op.DeploymentOneInterface(cmiiEnv, appName)
client := op.CurrentClient
for _, deployment := range deploymentFizz {
log.DebugF("[DeploymentScale] - start to scale [%s] [%s] to %d", deployment.Namespace, deployment.Name, scaleCount)
log.DebugF("[DeploymentScale] - start to scale [%s] [%s] to %d", deployment.Namespace, deployment.Name, scaleCount)
scale := &autoscalingv1.Scale{
ObjectMeta: metav1.ObjectMeta{
Name: deployment.Name,
Namespace: deployment.Namespace,
},
Spec: autoscalingv1.ScaleSpec{
Replicas: scaleCount,
},
}
updateScale, err := client.AppsV1().Deployments(deployment.Namespace).UpdateScale(
context.TODO(),
deployment.Name,
scale,
metav1.UpdateOptions{},
)
if err != nil {
log.ErrorF("[DeploymentScale] - scale error %s", err.Error())
return false
}
log.InfoF("[DeploymentScale] - scale of [%s] [%s] to %d success !", updateScale.Namespace, updateScale.Name, scaleCount)
scale := &autoscalingv1.Scale{
ObjectMeta: metav1.ObjectMeta{
Name: deployment.Name,
Namespace: deployment.Namespace,
},
Spec: autoscalingv1.ScaleSpec{
Replicas: scaleCount,
},
}
updateScale, err := client.AppsV1().Deployments(deployment.Namespace).UpdateScale(
context.TODO(),
deployment.Name,
scale,
metav1.UpdateOptions{},
)
if err != nil {
log.ErrorF("[DeploymentScale] - scale error %s", err.Error())
return false
}
log.InfoF("[DeploymentScale] - scale of [%s] [%s] to %d success !", updateScale.Namespace, updateScale.Name, scaleCount)
return true
}
@@ -396,20 +394,76 @@ func (op *CmiiK8sOperator) DeploymentRestart(cmiiEnv, appName string) bool {
return result
}
func (op *CmiiK8sOperator) ReplicaSet(cmiiEnv, replicaSetName string) *v1.ReplicaSet {
func (op *CmiiK8sOperator) DeploymentStatusCheck(cmiiEnv, appName string, waitTimeOut int) bool {
op.changeOperatorEnv(cmiiEnv)
// 设置超时时间和时间间隔
timeout := time.After(time.Duration(waitTimeOut) * time.Second)
tick := time.Tick(2 * time.Second)
// 监控Pod状态
for {
select {
case <-timeout:
log.ErrorF("[DeploymentStatusCheck] - [%s] [%s] 状态: 失败!", cmiiEnv, appName)
return false
case <-tick:
// check deployment exists
deployment := op.DeploymentOneInterface(cmiiEnv, appName)
if deployment == nil {
log.ErrorF("[DeploymentStatusCheck] - [%s] [%s] not exists !", cmiiEnv, appName)
return false
}
if deployment.AvailableReplicas == deployment.Replicas {
log.InfoF("[DeploymentStatusCheck] - [%s] [%s] Available: %d, Total: %d success !", cmiiEnv, appName, deployment.AvailableReplicas, deployment.Replicas)
return true
}
log.DebugF("[DeploymentStatusCheck] - [%s] [%s] Available: %d, Total: %d waiting !", cmiiEnv, appName, deployment.AvailableReplicas, deployment.Replicas)
}
}
}
func (op *CmiiK8sOperator) ReplicaSetExists(cmiiEnv, replicaSetName string) *v1.ReplicaSet {
op.changeOperatorEnv(cmiiEnv)
client := op.CurrentClient
replicaSet, err := client.AppsV1().ReplicaSets(op.CurrentNamespace).Get(context.TODO(), replicaSetName, metav1.GetOptions{})
if err != nil {
log.ErrorF("[ReplicaSetExists] - [%s] [%s] not exists !", cmiiEnv, replicaSetName)
return nil
}
return replicaSet
}
func (op *CmiiK8sOperator) ReplicaSetByAppName(cmiiEnv, appName string) (replicaList []v1.ReplicaSet) {
deploy := op.DeploymentExist(cmiiEnv, appName)
if deploy == nil {
log.ErrorF("[ReplicaSetByAppName] - [%s] [%s] app not exists !", cmiiEnv, appName)
return nil
}
labelSelector := metav1.FormatLabelSelector(deploy.Spec.Selector)
//Get the replica sets that belong to the deployment.
replicaSets, err := op.CurrentClient.AppsV1().ReplicaSets(op.CurrentNamespace).List(context.TODO(), metav1.ListOptions{
LabelSelector: labelSelector,
})
if err != nil {
log.ErrorF("[ReplicaSetByAppName] - [%s] [%s] list replicaset error %s", cmiiEnv, appName, err.Error())
return nil
}
for _, replicaSet := range replicaSets.Items {
replicaSet.SetManagedFields(nil)
replicaList = append(replicaList, replicaSet)
}
return replicaList
}
func (op *CmiiK8sOperator) PodAll(cmiiEnv string) []corev1.Pod {
op.changeOperatorEnv(cmiiEnv)
@@ -533,10 +587,57 @@ func (op *CmiiK8sOperator) PodAllInterface(cmiiEnv string) []CmiiPodInterface {
return results[:index]
}
// PodAllInSpecificNode cmiiEnv aims to specific k8s cluster
func PodAllInSpecificNode(cmiiEnv, nodeName string) (podList []CmiiPodInterface) {
func (op *CmiiK8sOperator) PodByAppName(cmiiEnv, appName string) (podList []CmiiPodInterface) {
return nil
deploy := op.DeploymentExist(cmiiEnv, appName)
if deploy == nil {
log.ErrorF("[PodByAppName] - [%s] [%s] app not exists !", cmiiEnv, appName)
return nil
}
labelSelector := metav1.FormatLabelSelector(deploy.Spec.Selector)
//Get the replica sets that belong to the deployment.
pods, err := op.CurrentClient.CoreV1().Pods(op.CurrentNamespace).List(context.TODO(), metav1.ListOptions{
LabelSelector: labelSelector,
})
if err != nil {
log.ErrorF("[PodByAppName] - [%s] [%s] list pods error %s", cmiiEnv, appName, err.Error())
return nil
}
cmiiPodInterface := CmiiPodInterface{}
for _, pod := range pods.Items {
pod.SetManagedFields(nil)
podInterface := cmiiPodInterface.Convert(pod)
podList = append(podList, podInterface)
}
return podList
}
func (op *CmiiK8sOperator) PodByNodeName(cmiiEnv, nodeName string) (podList []CmiiPodInterface) {
node := op.NodeExists(cmiiEnv, nodeName)
if node == nil {
return nil
}
list, err := op.CurrentClient.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{
FieldSelector: "spec.nodeName=" + nodeName,
})
if err != nil {
log.ErrorF("[PodByNodeName] - [%s] [%s] list pod error %s !", cmiiEnv, nodeName, err.Error())
return nil
}
podInterface := CmiiPodInterface{}
for _, pod := range list.Items {
cmiiPodInterface := podInterface.Convert(pod)
podList = append(podList, cmiiPodInterface)
}
return podList
}
func (op *CmiiK8sOperator) PodFizz(cmiiEnv, appFizz string) (fizzPod []corev1.Pod) {
@@ -608,3 +709,21 @@ func (op *CmiiK8sOperator) NodeAllInterface(cmiiEnv string) (nodeList []CmiiNode
return nodeList
}
func (op *CmiiK8sOperator) NodeExists(cmiiEnv, nodeName string) (node *CmiiNodeInterface) {
op.changeOperatorEnv(cmiiEnv)
client := op.CurrentClient
nodeInterface := CmiiNodeInterface{}
nodeList, err := client.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{})
if err != nil {
log.ErrorF("[NodeExists] - [%s] [%s] not exists !", cmiiEnv, nodeName)
return nil
}
convert := nodeInterface.Convert(*nodeList)
return &convert
}

View File

@@ -3,6 +3,7 @@ package k8s_exec
import (
"agent-go/utils"
"fmt"
"github.com/magiconair/properties/assert"
"testing"
"time"
)
@@ -100,6 +101,28 @@ func TestCmiiK8sOperator_DeploymentOneInterface(t *testing.T) {
utils.BeautifulPrint(*deploy)
}
func TestCmiiK8sOperator_ReplicaSetExists(t *testing.T) {
cmiiEnv := "uavcloud-devflight"
appName := "cmii-admin-data-bf8f87cb7"
exists := CmiiOperator.ReplicaSetExists(cmiiEnv, appName)
utils.BeautifulPrint(*exists)
}
func TestCmiiK8sOperator_ReplicaSetByAppName(t *testing.T) {
cmiiEnv := "uavcloud-devflight"
appName := "cmii-admin-data"
exists := CmiiOperator.ReplicaSetByAppName(cmiiEnv, appName)
for _, replicaSet := range exists {
utils.BeautifulPrint(replicaSet)
}
}
func TestCmiiK8sOperator_PodAll(t *testing.T) {
start := time.Now()
podList := CmiiOperator.PodAll("devflight")
@@ -132,6 +155,17 @@ func TestCmiiK8sOperator_PodFizz(t *testing.T) {
}
func TestCmiiK8sOperator_PodByAppName(t *testing.T) {
cmiiEnv := "uavcloud-devflight"
nodeName := "dev-01.ecs.io"
exists := CmiiOperator.PodByNodeName(cmiiEnv, nodeName)
for _, podInterface := range exists {
utils.BeautifulPrint(podInterface)
}
}
func TestCmiiDeploymentInterface_Convert(t *testing.T) {
log.DebugF("dadasdadasd")
@@ -158,9 +192,30 @@ func TestCmiiK8sOperator_PodFizz2(t *testing.T) {
}
func TestCmiiK8sOperator_PodByNodeName(t *testing.T) {
cmiiEnv := "uavcloud-devflight"
appName := "cmii-admin-data"
exists := CmiiOperator.PodByAppName(cmiiEnv, appName)
for _, podInterface := range exists {
utils.BeautifulPrint(podInterface)
}
}
func TestCmiiK8sOperator_DeploymentStatusCheck(t *testing.T) {
cmiiEnv := "devflight"
appName := "cmii-uav-gateway"
check := CmiiOperator.DeploymentStatusCheck(cmiiEnv, appName, 180)
assert.Equal(t, check, true, "deployment run failed!")
}
func TestCmiiK8sOperator_NodeAll(t *testing.T) {
start := time.Now()
nodeList := CmiiOperator.NodeAll("uat")
nodeList := CmiiOperator.NodeAll("dev")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)

View File

@@ -7,3 +7,10 @@
2024-01-11-11-58-15 uavcloud-uavms uavms-lowaltitude-platform 5.1.0 5.2.0-011101
2024-01-11-14-00-34 uavcloud-uavms uavms-lowaltitude-platform 5.1.0-011102 5.1.0-011103
2024-01-11-14-49-53 uavcloud-demo cmii-uav-waypoint 5.2.0-011101 5.2.0-011102
2024-01-11-15-32-28 uavcloud-demo cmii-uav-platform 5.2.0-011101 5.2.0-011102
2024-01-11-17-09-44 uavcloud-feature cmii-uav-platform 5.2.0-validation 5.2.0-011102
2024-01-11-17-35-47 uavcloud-uavms cmii-uav-surveillance 5.1.0-LAIN05A 5.1.0-011101
2024-01-11-17-38-06 uavcloud-uavms uavms-lowaltitude-platform 5.1.0-011103 5.1.0-011102
2024-01-11-17-49-09 uavcloud-uavms uavms-lowaltitude-platform 5.1.0-011102 5.1.0-011104
2024-01-12-10-38-30 uavcloud-uavms uavms-lowaltitude-platform 5.1.0-011105 5.2.0-011201
2024-01-12-12-09-59 uavcloud-uavms uavms-lowaltitude-platform 5.2.0-011201 5.2.0-011202

View File

@@ -0,0 +1,295 @@
{
"metadata": {
"name": "cmii-admin-data-bf8f87cb7-8bz4l",
"generateName": "cmii-admin-data-bf8f87cb7-",
"namespace": "uavcloud-devflight",
"selfLink": "/api/v1/namespaces/uavcloud-devflight/pods/cmii-admin-data-bf8f87cb7-8bz4l",
"uid": "1cc7936f-0416-40aa-9d9f-811814a7a1ee",
"resourceVersion": "474134438",
"creationTimestamp": "2024-01-10T07:23:09Z",
"labels": {
"app.kubernetes.io/instance": "cmii-admin-data",
"app.kubernetes.io/managed-by": "Helm",
"cmii.app": "cmii-admin-data",
"cmii.modules": "cmlc.lcadm",
"cmii.type": "backend",
"cmii/managed-by": "jenkins-pipeline-standalone-job",
"pod-template-hash": "bf8f87cb7"
},
"ownerReferences": [
{
"apiVersion": "apps/v1",
"kind": "ReplicaSet",
"name": "cmii-admin-data-bf8f87cb7",
"uid": "f853fc51-894b-432f-8cc0-1f7acce715ff",
"controller": true,
"blockOwnerDeletion": true
}
]
},
"spec": {
"volumes": [
{
"name": "nfs-backend-log-volume",
"persistentVolumeClaim": {
"claimName": "nfs-backend-log-pvc"
}
},
{
"name": "elk-json-log",
"hostPath": {
"path": "/var/log/",
"type": ""
}
},
{
"name": "default-token-hzddz",
"secret": {
"secretName": "default-token-hzddz",
"defaultMode": 420
}
}
],
"containers": [
{
"name": "cmii-admin-data",
"image": "harbor.cdcyy.com.cn/cmii/cmii-admin-data:5.2.0-beta",
"ports": [
{
"name": "pod-port",
"containerPort": 8080,
"protocol": "TCP"
}
],
"env": [
{
"name": "GIT_BRANCH",
"value": "staging"
},
{
"name": "GIT_COMMIT",
"value": "378998cb81c98afc29ff327419e9449907a210d5"
},
{
"name": "K8S_NAMESPACE",
"value": "uavcloud-devflight"
},
{
"name": "APPLICATION_NAME",
"value": "cmii-admin-data"
},
{
"name": "CUST_JAVA_OPTS",
"value": "-Xms256m -Xmx512m -Dlog4j2.formatMsgNoLookups=true"
},
{
"name": "NACOS_REGISTRY",
"value": "helm-nacos:8848"
},
{
"name": "NACOS_USERNAME",
"value": "developer"
},
{
"name": "NACOS_PASSWORD",
"value": "Deve@9128"
},
{
"name": "NACOS_DISCOVERY_IP",
"valueFrom": {
"fieldRef": {
"apiVersion": "v1",
"fieldPath": "status.podIP"
}
}
},
{
"name": "NACOS_DISCOVERY_PORT",
"value": "8080"
},
{
"name": "IMAGE_VERSION",
"value": "5.2.0-beta"
},
{
"name": "BIZ_CONFIG_GROUP"
},
{
"name": "SYS_CONFIG_GROUP"
}
],
"resources": {
"limits": {
"cpu": "2",
"memory": "2Gi"
},
"requests": {
"cpu": "100m",
"memory": "200Mi"
}
},
"volumeMounts": [
{
"name": "nfs-backend-log-volume",
"mountPath": "/cmii/logs",
"subPath": "uavcloud-devflight/cmii-admin-data"
},
{
"name": "elk-json-log",
"mountPath": "/cmii/jsonlogs",
"subPath": "json_pv_logfile"
},
{
"name": "default-token-hzddz",
"readOnly": true,
"mountPath": "/var/run/secrets/kubernetes.io/serviceaccount"
}
],
"livenessProbe": {
"httpGet": {
"path": "/cmii/ping",
"port": "pod-port",
"scheme": "HTTP"
},
"initialDelaySeconds": 5,
"timeoutSeconds": 2,
"periodSeconds": 10,
"successThreshold": 1,
"failureThreshold": 3
},
"readinessProbe": {
"httpGet": {
"path": "/cmii/ping",
"port": "pod-port",
"scheme": "HTTP"
},
"initialDelaySeconds": 5,
"timeoutSeconds": 2,
"periodSeconds": 10,
"successThreshold": 1,
"failureThreshold": 3
},
"startupProbe": {
"httpGet": {
"path": "/cmii/ping",
"port": "pod-port",
"scheme": "HTTP"
},
"initialDelaySeconds": 120,
"timeoutSeconds": 2,
"periodSeconds": 10,
"successThreshold": 1,
"failureThreshold": 10
},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"imagePullPolicy": "Always"
}
],
"restartPolicy": "Always",
"terminationGracePeriodSeconds": 30,
"dnsPolicy": "ClusterFirst",
"serviceAccountName": "default",
"serviceAccount": "default",
"nodeName": "dev-04.ecs.io",
"securityContext": { },
"imagePullSecrets": [
{
"name": "harborsecret"
}
],
"affinity": {
"nodeAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms": [
{
"matchExpressions": [
{
"key": "uavcloud.affinity",
"operator": "In",
"values": [
"common"
]
}
]
}
]
}
}
},
"schedulerName": "default-scheduler",
"tolerations": [
{
"key": "node.kubernetes.io/not-ready",
"operator": "Exists",
"effect": "NoExecute",
"tolerationSeconds": 300
},
{
"key": "node.kubernetes.io/unreachable",
"operator": "Exists",
"effect": "NoExecute",
"tolerationSeconds": 300
}
],
"priority": 0,
"enableServiceLinks": true
},
"status": {
"phase": "Running",
"conditions": [
{
"type": "Initialized",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2024-01-10T07:23:09Z"
},
{
"type": "Ready",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2024-01-10T07:25:31Z"
},
{
"type": "ContainersReady",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2024-01-10T07:25:31Z"
},
{
"type": "PodScheduled",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2024-01-10T07:23:09Z"
}
],
"hostIP": "192.168.11.158",
"podIP": "10.244.32.143",
"podIPs": [
{
"ip": "10.244.32.143"
}
],
"startTime": "2024-01-10T07:23:09Z",
"containerStatuses": [
{
"name": "cmii-admin-data",
"state": {
"running": {
"startedAt": "2024-01-10T07:23:22Z"
}
},
"lastState": { },
"ready": true,
"restartCount": 0,
"image": "harbor.cdcyy.com.cn/cmii/cmii-admin-data:5.2.0-beta",
"imageID": "docker-pullable://harbor.cdcyy.com.cn/cmii/cmii-admin-data@sha256:5e8fc9a55ffd4bf9772e0f44142486d27f37aaca28d8fa920e7248aea89a7e28",
"containerID": "docker://4b6e5594d8a3a5202c1ecfb85dbfbcb5215926a21544f8f3646a1d605ce6e70c",
"started": true
}
],
"qosClass": "Burstable"
}
}

View File

@@ -0,0 +1,549 @@
{
"metadata": {
"name": "cmii-admin-data-bf8f87cb7",
"namespace": "uavcloud-devflight",
"selfLink": "/apis/apps/v1/namespaces/uavcloud-devflight/replicasets/cmii-admin-data-bf8f87cb7",
"uid": "f853fc51-894b-432f-8cc0-1f7acce715ff",
"resourceVersion": "474134441",
"generation": 3,
"creationTimestamp": "2023-12-28T03:10:25Z",
"labels": {
"app.kubernetes.io/instance": "cmii-admin-data",
"app.kubernetes.io/managed-by": "Helm",
"cmii.app": "cmii-admin-data",
"cmii.modules": "cmlc.lcadm",
"cmii.type": "backend",
"cmii/managed-by": "jenkins-pipeline-standalone-job",
"pod-template-hash": "bf8f87cb7"
},
"annotations": {
"deployment.kubernetes.io/desired-replicas": "2",
"deployment.kubernetes.io/max-replicas": "3",
"deployment.kubernetes.io/revision": "1",
"meta.helm.sh/release-name": "cmii-admin-data",
"meta.helm.sh/release-namespace": "uavcloud-devflight"
},
"ownerReferences": [
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"name": "cmii-admin-data",
"uid": "a3714e1c-ba59-4fc8-bdd6-fd27b676c943",
"controller": true,
"blockOwnerDeletion": true
}
],
"managedFields": [
{
"manager": "kube-controller-manager",
"operation": "Update",
"apiVersion": "apps/v1",
"time": "2024-01-10T07:25:31Z",
"fieldsType": "FieldsV1",
"fieldsV1": {
"f:metadata": {
"f:annotations": {
".": { },
"f:deployment.kubernetes.io/desired-replicas": { },
"f:deployment.kubernetes.io/max-replicas": { },
"f:deployment.kubernetes.io/revision": { },
"f:meta.helm.sh/release-name": { },
"f:meta.helm.sh/release-namespace": { }
},
"f:labels": {
".": { },
"f:app.kubernetes.io/instance": { },
"f:app.kubernetes.io/managed-by": { },
"f:cmii.app": { },
"f:cmii.modules": { },
"f:cmii.type": { },
"f:cmii/managed-by": { },
"f:pod-template-hash": { }
},
"f:ownerReferences": {
".": { },
"k:{\"uid\":\"a3714e1c-ba59-4fc8-bdd6-fd27b676c943\"}": {
".": { },
"f:apiVersion": { },
"f:blockOwnerDeletion": { },
"f:controller": { },
"f:kind": { },
"f:name": { },
"f:uid": { }
}
}
},
"f:spec": {
"f:replicas": { },
"f:selector": {
"f:matchLabels": {
".": { },
"f:cmii.app": { },
"f:cmii.type": { },
"f:cmii/managed-by": { },
"f:pod-template-hash": { }
}
},
"f:template": {
"f:metadata": {
"f:labels": {
".": { },
"f:app.kubernetes.io/instance": { },
"f:app.kubernetes.io/managed-by": { },
"f:cmii.app": { },
"f:cmii.modules": { },
"f:cmii.type": { },
"f:cmii/managed-by": { },
"f:pod-template-hash": { }
}
},
"f:spec": {
"f:affinity": {
".": { },
"f:nodeAffinity": {
".": { },
"f:requiredDuringSchedulingIgnoredDuringExecution": {
".": { },
"f:nodeSelectorTerms": { }
}
}
},
"f:containers": {
"k:{\"name\":\"cmii-admin-data\"}": {
".": { },
"f:env": {
".": { },
"k:{\"name\":\"APPLICATION_NAME\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"BIZ_CONFIG_GROUP\"}": {
".": { },
"f:name": { }
},
"k:{\"name\":\"CUST_JAVA_OPTS\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"GIT_BRANCH\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"GIT_COMMIT\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"IMAGE_VERSION\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"K8S_NAMESPACE\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"NACOS_DISCOVERY_IP\"}": {
".": { },
"f:name": { },
"f:valueFrom": {
".": { },
"f:fieldRef": {
".": { },
"f:apiVersion": { },
"f:fieldPath": { }
}
}
},
"k:{\"name\":\"NACOS_DISCOVERY_PORT\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"NACOS_PASSWORD\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"NACOS_REGISTRY\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"NACOS_USERNAME\"}": {
".": { },
"f:name": { },
"f:value": { }
},
"k:{\"name\":\"SYS_CONFIG_GROUP\"}": {
".": { },
"f:name": { }
}
},
"f:image": { },
"f:imagePullPolicy": { },
"f:livenessProbe": {
".": { },
"f:failureThreshold": { },
"f:httpGet": {
".": { },
"f:path": { },
"f:port": { },
"f:scheme": { }
},
"f:initialDelaySeconds": { },
"f:periodSeconds": { },
"f:successThreshold": { },
"f:timeoutSeconds": { }
},
"f:name": { },
"f:ports": {
".": { },
"k:{\"containerPort\":8080,\"protocol\":\"TCP\"}": {
".": { },
"f:containerPort": { },
"f:name": { },
"f:protocol": { }
}
},
"f:readinessProbe": {
".": { },
"f:failureThreshold": { },
"f:httpGet": {
".": { },
"f:path": { },
"f:port": { },
"f:scheme": { }
},
"f:initialDelaySeconds": { },
"f:periodSeconds": { },
"f:successThreshold": { },
"f:timeoutSeconds": { }
},
"f:resources": {
".": { },
"f:limits": {
".": { },
"f:cpu": { },
"f:memory": { }
},
"f:requests": {
".": { },
"f:cpu": { },
"f:memory": { }
}
},
"f:startupProbe": {
".": { },
"f:failureThreshold": { },
"f:httpGet": {
".": { },
"f:path": { },
"f:port": { },
"f:scheme": { }
},
"f:initialDelaySeconds": { },
"f:periodSeconds": { },
"f:successThreshold": { },
"f:timeoutSeconds": { }
},
"f:terminationMessagePath": { },
"f:terminationMessagePolicy": { },
"f:volumeMounts": {
".": { },
"k:{\"mountPath\":\"/cmii/jsonlogs\"}": {
".": { },
"f:mountPath": { },
"f:name": { },
"f:subPath": { }
},
"k:{\"mountPath\":\"/cmii/logs\"}": {
".": { },
"f:mountPath": { },
"f:name": { },
"f:subPath": { }
}
}
}
},
"f:dnsPolicy": { },
"f:imagePullSecrets": {
".": { },
"k:{\"name\":\"harborsecret\"}": {
".": { },
"f:name": { }
}
},
"f:restartPolicy": { },
"f:schedulerName": { },
"f:securityContext": { },
"f:terminationGracePeriodSeconds": { },
"f:volumes": {
".": { },
"k:{\"name\":\"elk-json-log\"}": {
".": { },
"f:hostPath": {
".": { },
"f:path": { },
"f:type": { }
},
"f:name": { }
},
"k:{\"name\":\"nfs-backend-log-volume\"}": {
".": { },
"f:name": { },
"f:persistentVolumeClaim": {
".": { },
"f:claimName": { }
}
}
}
}
}
},
"f:status": {
"f:availableReplicas": { },
"f:fullyLabeledReplicas": { },
"f:observedGeneration": { },
"f:readyReplicas": { },
"f:replicas": { }
}
}
}
]
},
"spec": {
"replicas": 2,
"selector": {
"matchLabels": {
"cmii.app": "cmii-admin-data",
"cmii.type": "backend",
"cmii/managed-by": "jenkins-pipeline-standalone-job",
"pod-template-hash": "bf8f87cb7"
}
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"app.kubernetes.io/instance": "cmii-admin-data",
"app.kubernetes.io/managed-by": "Helm",
"cmii.app": "cmii-admin-data",
"cmii.modules": "cmlc.lcadm",
"cmii.type": "backend",
"cmii/managed-by": "jenkins-pipeline-standalone-job",
"pod-template-hash": "bf8f87cb7"
}
},
"spec": {
"volumes": [
{
"name": "nfs-backend-log-volume",
"persistentVolumeClaim": {
"claimName": "nfs-backend-log-pvc"
}
},
{
"name": "elk-json-log",
"hostPath": {
"path": "/var/log/",
"type": ""
}
}
],
"containers": [
{
"name": "cmii-admin-data",
"image": "harbor.cdcyy.com.cn/cmii/cmii-admin-data:5.2.0-beta",
"ports": [
{
"name": "pod-port",
"containerPort": 8080,
"protocol": "TCP"
}
],
"env": [
{
"name": "GIT_BRANCH",
"value": "staging"
},
{
"name": "GIT_COMMIT",
"value": "378998cb81c98afc29ff327419e9449907a210d5"
},
{
"name": "K8S_NAMESPACE",
"value": "uavcloud-devflight"
},
{
"name": "APPLICATION_NAME",
"value": "cmii-admin-data"
},
{
"name": "CUST_JAVA_OPTS",
"value": "-Xms256m -Xmx512m -Dlog4j2.formatMsgNoLookups=true"
},
{
"name": "NACOS_REGISTRY",
"value": "helm-nacos:8848"
},
{
"name": "NACOS_USERNAME",
"value": "developer"
},
{
"name": "NACOS_PASSWORD",
"value": "Deve@9128"
},
{
"name": "NACOS_DISCOVERY_IP",
"valueFrom": {
"fieldRef": {
"apiVersion": "v1",
"fieldPath": "status.podIP"
}
}
},
{
"name": "NACOS_DISCOVERY_PORT",
"value": "8080"
},
{
"name": "IMAGE_VERSION",
"value": "5.2.0-beta"
},
{
"name": "BIZ_CONFIG_GROUP"
},
{
"name": "SYS_CONFIG_GROUP"
}
],
"resources": {
"limits": {
"cpu": "2",
"memory": "2Gi"
},
"requests": {
"cpu": "100m",
"memory": "200Mi"
}
},
"volumeMounts": [
{
"name": "nfs-backend-log-volume",
"mountPath": "/cmii/logs",
"subPath": "uavcloud-devflight/cmii-admin-data"
},
{
"name": "elk-json-log",
"mountPath": "/cmii/jsonlogs",
"subPath": "json_pv_logfile"
}
],
"livenessProbe": {
"httpGet": {
"path": "/cmii/ping",
"port": "pod-port",
"scheme": "HTTP"
},
"initialDelaySeconds": 5,
"timeoutSeconds": 2,
"periodSeconds": 10,
"successThreshold": 1,
"failureThreshold": 3
},
"readinessProbe": {
"httpGet": {
"path": "/cmii/ping",
"port": "pod-port",
"scheme": "HTTP"
},
"initialDelaySeconds": 5,
"timeoutSeconds": 2,
"periodSeconds": 10,
"successThreshold": 1,
"failureThreshold": 3
},
"startupProbe": {
"httpGet": {
"path": "/cmii/ping",
"port": "pod-port",
"scheme": "HTTP"
},
"initialDelaySeconds": 120,
"timeoutSeconds": 2,
"periodSeconds": 10,
"successThreshold": 1,
"failureThreshold": 10
},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"imagePullPolicy": "Always"
}
],
"restartPolicy": "Always",
"terminationGracePeriodSeconds": 30,
"dnsPolicy": "ClusterFirst",
"securityContext": { },
"imagePullSecrets": [
{
"name": "harborsecret"
}
],
"affinity": {
"nodeAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms": [
{
"matchExpressions": [
{
"key": "uavcloud.affinity",
"operator": "In",
"values": [
"common"
]
}
]
}
]
}
}
},
"schedulerName": "default-scheduler"
}
}
},
"status": {
"replicas": 2,
"fullyLabeledReplicas": 2,
"readyReplicas": 2,
"availableReplicas": 2,
"observedGeneration": 3
}
}