client-go 各个包的详细使用demo
client-go是Kubernetes的Go语言客户端,它提供了丰富的API来操作Kubernetes集群。下面是一些client-go的常用包的简单使用示例:
- 使用
kubernetes/client-go/kubernetes
包操作Pod:
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
func main() {
// 创建配置
config, err := rest.InClusterConfig()
if err != nil {
panic(err.Error())
}
// 创建客户端
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
// 列出默认命名空间的所有Pods
pods, err := clientset.CoreV1().Pods("").List(metav1.ListOptions{})
if err != nil {
panic(err.Error())
}
for _, pod := range pods.Items {
fmt.Printf(" %s\n", pod.Name)
}
}
- 使用
kubernetes/client-go/tools/clientcmd
包来从kubeconfig文件中获取配置:
import (
"fmt"
"k8s.io/client-go/tools/clientcmd"
)
func main() {
// 从kubeconfig文件中加载配置
config, err := clientcmd.BuildConfigFromFlags("", "/path/to/kubeconfig")
if err != nil {
panic(err.Error())
}
fmt.Printf("API Server: %s\n", config.Host)
}
- 使用
kubernetes/client-go/dynamic
包操作资源:
import (
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest"
)
func main() {
// 创建配置
config, err := rest.InClusterConfig()
if err != nil {
panic(err.Error())
}
// 创建dynamic客户端
dynamicClient, err := dynamic.NewForConfig(config)
if err != nil {
panic(err.Error())
}
// 定义GroupVersionResource
gvr := schema.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"}
// 列出默认命名空间的所有Pods
pods, err := dynamicClient.Resource(gvr).Namespace("").List(metav1.ListOptions{})
if err != nil {
panic(err.Error())
}
for _, pod := range pods.Items {
fmt.Printf(" %s\n", pod.GetName())
}
}
这些例子展示了如何使用client-go的不同包来操作Kubernetes资源。在实际应用中,你需要根据自己的需求选择合适的包和API。
评论已关闭