client-go InClusterConfig方法
InClusterConfig方法
package main import ( "context" "test/signals" "time" "os" core_v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" klog "k8s.io/klog/v2" ) func testInClusterConfig(stopCh <-chan struct{}) { // 除了手动设置kube-apiserver ip+port环境变量,还要手动设置/var/run/secrets/kubernetes.io/serviceaccount/token和ca.crt // 如果没有ca.crt,那么报错tls: failed to verify certificate: x509: certificate signed by unknown authority os.Setenv("KUBERNETES_SERVICE_HOST", "127.0.0.1") os.Setenv("KUBERNETES_SERVICE_PORT", "42929") cfg, err := rest.InClusterConfig() if err != nil { klog.Fatalf("Error building kubeconfig: %s", err.Error()) } kubeClient, err := kubernetes.NewForConfig(cfg) if err != nil { klog.Fatalf("Error building kubernetes discoveryclient: %v", err) } ns := &core_v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "test", }, } if _, err := kubeClient.CoreV1().Namespaces().Create(context.Background(), ns, metav1.CreateOptions{}); err != nil { klog.Infof("create ns test failed, err is %v", err) } else { klog.Infof("create ns test success") } select { case <-stopCh: return case <-time.After(time.Hour): } } func main() { stopCh := signals.SetupSignalHandler() testInClusterConfig(stopCh) }
tlsTransportCache的get方法
获取Client的transport,使用ServiceAccount时tlsConfig不会跳过证书认证,但是客户端只有根证书,只能完成与kube-apiserver的https单向认证,后面由token继续完成认证和鉴权。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
2023-12-28 k8s限速队列不通过Get方法判断队列是否关闭