每期一个小窍门: 使用client-go 操作k8s (上)

33 篇文章 8 订阅
25 篇文章 0 订阅

身边要有一个k8s集群 阿里云ask可以免费使用 注意是ask 不是ack
然后把apiserver公网暴露出来 并拿到apiserver的远程conf文件

conf如下

apiVersion: v1
clusters:
- cluster:
    server: https://47.98.1x8.xxx:6443
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURUakNDQWphZ0F3SUJBZ0lVQ3hIc0Q1OW9VNFluV2pBRnZXRkFMNWxZanZtLQo=
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: "kubernetes-admin"
  name: kubernetes-admin-c2a3d10703de144b0bfab94cab33d81c8
current-context: kubernetes-admin-c2a3d10703de144b0bfab94cab33d81c8
kind: Config
preferences: {}
users:
- name: "kubernetes-admin"
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJHUnZ1UmJzZ1o1K292anQzK0FZaThzVG4yVFZieAp1d01hNFJNK0pNUFI3UjJaOU9ucmwwWURaT1prNkhndjdXZXBLNlp5RlBUdGlrUnpSODJoZWN4OExjcGFRczdYCmlSanVwQWU1RnBDdUNqZVV5YnhPZDZnclVBclN2VEU9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBazFib0E5VWhNa1ZURTRSNHM2LzcxMGtVaUlkUmxKRWZXQXBRQ1kyMU5GSkczYkJDClVtMHVxbjFSYUhOTVZEQmFnRGlEMk9ZbXNYYUpBU1pxZiswR1lOdVlMU1NtTXlxdDkrajRad0JHams



把这个代码粘进去 然后对应目录 go mod tidy 一下 加入client-go 相关依赖 我的go版本是1.23的
```go
package main

import (
	"context"
	"fmt"
	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
	"sync"
)

var (
	client *kubernetes.Clientset = nil
	lock                         = sync.Mutex{}
)

func getClient() *kubernetes.Clientset {
	kubeconfig := "/Users/haoxuanli/GolandProjects/bookstore/superclient/conf/kubeconf"
	config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
	if err != nil {
		panic(err.Error())
	}
	if client == nil {
		lock.Lock()
		if client == nil {
			defer lock.Unlock()
			client, err = kubernetes.NewForConfig(config)
		}
	}
	return client
}

func test() {
	clientset := getClient()
	pods, err := clientset.CoreV1().Pods("kube-public").List(context.Background(), v1.ListOptions{})
	if err != nil {
		panic(err.Error())
	}

	for _, pod := range pods.Items {
		fmt.Printf("Pod: %s\n", pod.Name)
	}
}
func main() {
	test()
}

运行结果: 可以通的
在这里插入图片描述

好了 各位再见 下次再会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静谧之心

感谢您的鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值