背景

紧跟client-go连接kubernetes集群-connect and listclient-go连接kubernetes集群-create相关操作client-go连接kubernetes集群-update相关操作。现在操作一下删除deployment 与namespace。当然了也想看一下操作集群crud的操作都有哪些动作!

client-go连接kubernetes集群-delete相关操作

删除deployment

main.go

  1. package main
  2. import (
  3. "context"
  4. "flag"
  5. "fmt"
  6. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  7. "k8s.io/client-go/kubernetes"
  8. "k8s.io/client-go/tools/clientcmd"
  9. "k8s.io/client-go/util/homedir"
  10. "path/filepath"
  11. )
  12. func main() {
  13. var kubeconfig *string
  14. if home := homedir.HomeDir(); home != "" {
  15. kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
  16. } else {
  17. kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
  18. }
  19. flag.Parse()
  20. config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
  21. if err != nil {
  22. panic(err.Error())
  23. }
  24. // create the clientset
  25. clientset, err := kubernetes.NewForConfig(config)
  26. if err != nil {
  27. panic(err.Error())
  28. }
  29. DeploymentName := "nginx"
  30. if err = clientset.AppsV1().Deployments("zhangpeng").Delete(context.TODO(), DeploymentName, metav1.DeleteOptions{}); err != nil {
  31. fmt.Println(err)
  32. return
  33. }
  34. }

image.png

  1. kubectl get deploymnt -n zhangpeng


image.png

删除namespace

main.go

  1. package main
  2. import (
  3. "context"
  4. "flag"
  5. "fmt"
  6. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  7. "k8s.io/client-go/kubernetes"
  8. "k8s.io/client-go/tools/clientcmd"
  9. "k8s.io/client-go/util/homedir"
  10. "path/filepath"
  11. )
  12. func main() {
  13. var kubeconfig *string
  14. if home := homedir.HomeDir(); home != "" {
  15. kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
  16. } else {
  17. kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
  18. }
  19. flag.Parse()
  20. config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
  21. if err != nil {
  22. panic(err.Error())
  23. }
  24. // create the clientset
  25. clientset, err := kubernetes.NewForConfig(config)
  26. if err != nil {
  27. panic(err.Error())
  28. }
  29. NamespaceName := "zhangpeng"
  30. if err = clientset.CoreV1().Namespaces().Delete(context.TODO(), NamespaceName, metav1.DeleteOptions{}); err != nil {
  31. fmt.Println(err.Error())
  32. return
  33. } else {
  34. fmt.Printf("Deleted Namespaces %s\n", NamespaceName)
  35. }
  36. }

image.png

  1. kubectl get ns

image.png
zhangpeng namespace删除成功!

其他的:

  1. 当然了除了常用的List delete update and create还有很多操作方法,比如namespace 与 deployment的一些其他操作:

8fedb4d5459537791525966359be5bc.jpg
f48df2cf6b3a55950e473928d2fce89.jpg

  1. 接下来要做的:把客户端单独提取出来,跟gin整合做一些简单的crud操作……