From 9827f73e922a5eba800bf7782a73b8eacb749c24 Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期一, 05 六月 2023 18:20:38 +0800 Subject: [PATCH] fix k8s create createDeployment add port --- src/k8s/create.go | 53 ++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 42 insertions(+), 11 deletions(-) diff --git a/src/k8s/create.go b/src/k8s/create.go index 84db8a8..aa5884d 100644 --- a/src/k8s/create.go +++ b/src/k8s/create.go @@ -129,15 +129,22 @@ return err } + nodePort1, nodePort2, err := getTwoNodePort(clientset) + if err != nil { + return err + } + + port1 := fmt.Sprint(nodePort1) + port2 := fmt.Sprint(nodePort2) // 鍒涘缓 Deployment - err = createDeployment(clientset, namespace, deploymentName) + err = createDeployment(clientset, namespace, deploymentName, port1, port2) if err != nil { return err } log.Printf("Waiting for Deployment %s to be ready...\n", deploymentName) // 鍒涘缓 Service - err = createService(clientset, namespace, serviceName) + err = createService(clientset, namespace, serviceName, nodePort1, nodePort2) if err != nil { return err } @@ -168,7 +175,7 @@ return nil } -func createDeployment(clientset *kubernetes.Clientset, namespace, deploymentName string) error { +func createDeployment(clientset *kubernetes.Clientset, namespace, deploymentName, port1, port2 string) error { fmt.Println("\033[1;37;40mCreating Deployment:", deploymentName, "\033[0m") deployment := &appsv1.Deployment{ @@ -206,6 +213,14 @@ Name: namespace, Image: "192.168.20.119/apsserver/apsserver:v0.5", Env: []apiv1.EnvVar{ + { + Name: "NODE_PORT1", + Value: port1, + }, + { + Name: "NODE_PORT2", + Value: port2, + }, { Name: "DB_HOST", Value: "localhost", @@ -249,13 +264,8 @@ } // createService 鍒涘缓鎸囧畾鐨� Service -func createService(clientset *kubernetes.Clientset, namespace, serviceName string) error { +func createService(clientset *kubernetes.Clientset, namespace, serviceName string, port1, port2 int32) error { fmt.Println("\033[1;37;40mCreating Service:", serviceName, "\033[0m") - - //nodePort, err := getRandomNodePort(clientset) - //if err != nil { - // return err - //} service := &apiv1.Service{ ObjectMeta: metav1.ObjectMeta{ @@ -272,14 +282,14 @@ Protocol: apiv1.ProtocolTCP, Port: port, // 闆嗙兢鍐呴儴璁块棶绔彛 TargetPort: intstr.FromInt(int(port)), // 瀹瑰櫒瀵瑰绔彛 - NodePort: 0, // 澶栭儴璁块棶绔彛 + NodePort: port1, // 澶栭儴璁块棶绔彛 }, { Name: "tcp", Protocol: apiv1.ProtocolTCP, Port: rpcPort, TargetPort: intstr.FromInt(int(rpcPort)), - NodePort: 0, + NodePort: port2, }, }, }, @@ -299,6 +309,27 @@ return nil } +func getTwoNodePort(client *kubernetes.Clientset) (nodePort1, nodePort2 int32, err error) { + nodePort1, err = getRandomNodePort(client) + if err != nil { + return 0, 0, err + } + + for { + nodePort2, err = getRandomNodePort(client) + if err != nil { + return 0, 0, err + } + + if nodePort2 != nodePort1 { + break + } + + } + + return nodePort1, nodePort2, nil +} + // getRandomNodePort 鑾峰彇涓�涓湭浣跨敤鐨勯殢鏈� NodePort func getRandomNodePort(clientset *kubernetes.Clientset) (int32, error) { // 鑾峰彇涓�涓殢鏈虹殑 NodePort -- Gitblit v1.8.0