go mod init <项目名>
PS D:\Code\27ops-platform> go mod init 27ops-platform
go: creating new go.mod: module 27ops-platform
go: to add module requirements and sums:
go mod tidy
PS D:\Code\27ops-platform>
Tip
在项目的go.mod文件指定版本
require (
k8s.io/client-go v0.20.10
)
Tip:
go get <modues>下载的是最新版本
PS D:\Code\27ops-platform> go mod tidy
go: downloading k8s.io/client-go v0.20.10
go: downloading github.com/spf13/pflag v1.0.5
go: downloading golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0
go: downloading k8s.io/klog/v2 v2.4.0
go: downloading k8s.io/apimachinery v0.20.10
go: downloading github.com/imdario/mergo v0.3.5
go: downloading sigs.k8s.io/yaml v1.2.0
go: downloading golang.org/x/net v0.0.0-20201110031124-69a78807bb2b
go: downloading github.com/google/go-cmp v0.5.2
go: downloading k8s.io/api v0.20.10
go: downloading github.com/stretchr/testify v1.6.1
go: downloading github.com/google/gofuzz v1.1.0
go: downloading github.com/go-logr/logr v0.2.0
go: downloading gopkg.in/yaml.v2 v2.2.8
go: downloading github.com/davecgh/go-spew v1.1.1
go: downloading golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
go: downloading golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e
go: downloading k8s.io/utils v0.0.0-20201110183641-67b214c5f920
go: downloading github.com/gogo/protobuf v1.3.2
go: downloading sigs.k8s.io/structured-merge-diff/v4 v4.1.2
go: downloading github.com/json-iterator/go v1.1.10
go: downloading github.com/modern-go/reflect2 v1.0.1
go: downloading github.com/pmezard/go-difflib v1.0.0
go: downloading gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
go: downloading golang.org/x/sys v0.0.0-20201112073958-5cba982894dd
go: downloading gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15
go: downloading gopkg.in/inf.v0 v0.9.1
go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
go: downloading golang.org/x/text v0.3.4
go: downloading github.com/kr/pretty v0.2.0
go: downloading google.golang.org/appengine v1.6.5
go: downloading github.com/kr/text v0.1.0
go: downloading github.com/golang/protobuf v1.4.3
go: downloading google.golang.org/protobuf v1.25.0
go: downloading golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
PS D:\Code\goproject\27ops-platform>
//获取pod列表
podList, err := K8s.ClientSet.CoreV1().Pods(namespace).List(context.TODO(),
metav1.ListOptions{})
//获取pod详情
pod, err = K8s.ClientSet.CoreV1().Pods(namespace).Get(context.TODO(), podName,
metav1.GetOptions{})
//删除pod
err = K8s.ClientSet.CoreV1().Pods(namespace).Delete(context.TODO(), podName,
metav1.DeleteOptions{})
//更新pod(完整yaml)
pod, err = K8s.ClientSet.CoreV1().Pods(namespace).Update(context.TODO(), pod,
metav1.UpdateOptions{})
//获取deployment副本数
scale, err := K8s.ClientSet.AppsV1().Deployments(namespace).GetScale(context.TODO(),
deploymentName, metav1.GetOptions{})
//创建deployment
deployment, err =
K8s.ClientSet.AppsV1().Deployments(data.Namespace).Create(context.TODO(), deployment,
metav1.CreateOptions{})
//更新deployment(部分yaml)
deployment, err = K8s.ClientSet.AppsV1().Deployments(namespace).Patch(context.TODO(),
deploymentName, "application/strategic-merge-patch+json", patchByte,
metav1.PatchOptions{})
Tip:
Cannot use 'err' (type error) as the type any。工具版本bug,更新版本可修复。
<img src="https://note.27ops.com/img/go/client-go.png" style="zoom:67%;" />
package main
import (
"context"
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
func main() {
// 将kubeconfig文件转换成rest.config类型对象
// 从/root/.kube/config复制k8s集群配置到windows上
// 注意windows是两个"\"
conf, err := clientcmd.BuildConfigFromFlags("", "D:\\Code\\goproject\\27ops-platform\\config")
if err != nil {
panic(err)
}
// 根据rest.config类型的对象,new一个clientset
clientset, err := kubernetes.NewForConfig(conf)
if err != nil {
panic(err)
}
// 使用clientset获取podList列表
podList, err := clientset.CoreV1().Pods("kube-system").List(context.TODO(), metav1.ListOptions{})
if err != nil {
panic(err)
}
//
for _, pod := range podList.Items {
fmt.Println(pod.Name, pod.Namespace)
//fmt.Println(pod)
}
}
<img src="https://note.27ops.com/img/go/client-run.png" style="zoom:67%;" />
PS D:\Code\goproject\27ops-platform> go run main.go
coredns-558bd4d5db-qv2w6 kube-system
coredns-558bd4d5db-vcdrk kube-system
etcd-master kube-system
kube-apiserver-master kube-system
kube-controller-manager-master kube-system
kube-flannel-ds-77wrw kube-system
kube-flannel-ds-l2hd8 kube-system
kube-flannel-ds-wwptq kube-system
kube-proxy-jzvg5 kube-system
kube-proxy-lcwm9 kube-system
kube-proxy-qs4kq kube-system
kube-scheduler-master kube-system
PS D:\Code\goproject\27ops-platform>
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。