pca*_*ana 3 client go kubernetes
我正在尝试使用golang client扩展部署。我发现的问题是golang 客户端没有用于部署的缩放方法。我不知道我该怎么做。我的想法是进行部署,修改副本,然后进行更新。
package main
import (
"context"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
appsv1 "k8s.io/api/apps/v1"
"flag"
"fmt"
"os"
"path/filepath"
)
func main() {
var kubeconfig *string
if home := homedir.HomeDir(); home != "" {
kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
} else {
kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
}
flag.Parse()
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
if err != nil {
panic(err)
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err)
}
//get and update replicas
deploymentsClient := clientset.AppsV1().Deployments(apiv1.NamespaceDefault)
deployment, _ := deploymentsClient.Get(context.TODO(), "demo-deployment", metav1.GetOptions{})
deploymentsClient.Update(context.TODO(), deployment, metav1.UpdateOptions{})
}
Run Code Online (Sandbox Code Playgroud)
(示例取自kubernetes 客户端 go github 存储库)
但我不知道这是否是最好的方法。
小智 5
package main
import (
"context"
"log"
"path/filepath"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
)
func main() {
kubeconfig := filepath.Join(homedir.HomeDir(), ".kube", "config")
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
if err != nil {
config, err = rest.InClusterConfig()
if err != nil {
log.Fatal(err)
}
}
client, err := kubernetes.NewForConfig(config)
if err != nil {
log.Fatal(err)
}
s, err := client.AppsV1().
Deployments("default").
GetScale(context.TODO(), "nginx", metav1.GetOptions{})
if err != nil {
log.Fatal(err)
}
sc := *s
sc.Spec.Replicas = 10
us, err := client.AppsV1().
Deployments("default").
UpdateScale(context.TODO(),
"nginx", &sc, metav1.UpdateOptions{})
if err != nil {
log.Fatal(err)
}
log.Println(*us)
}
Run Code Online (Sandbox Code Playgroud)