Documentation
¶
Overview ¶
Package k8s 提供 Kubernetes 客户端封装:RESTConfig/Clientset/DynamicClient 构建(in-cluster 自动优先,回退 kubeconfig)与 Lease 选主简化封装 (leaderelection 子包,适配主备/单活场景)。
零可观测性副作用:不自动注入任何 tracing/logger 后端,SDK 内部统一 logx.Delegating("k8s") 懒解析。
快速接入 ¶
// 集群内(Pod)自动走 ServiceAccount;开发机走 KUBECONFIG/~/.kube/config
cs, err := k8s.NewClientset(k8s.Config{})
// 显式 kubeconfig
cs, err := k8s.NewClientset(k8s.Config{KubeconfigPath: "/path/to/kubeconfig"})
选主(同 kube-apiserver Lease 协议,二进制/多副本单活):
err := k8s.leaderelection.Run(ctx, cs, k8s.leaderelection.Config{
LeaseName: "my-app",
OnStartedLeading: func(ctx context.Context) { serve(ctx) },
OnStoppedLeading: func() { log.Fatal("lost leadership") },
})
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultKubeconfigPath ¶
func DefaultKubeconfigPath() string
DefaultKubeconfigPath 返回当前用户家目录下的默认 kubeconfig 路径 (HOME 不可用时返回空串)。
func InCluster ¶
func InCluster() bool
InCluster 判断当前进程是否运行在集群内(POD 环境注入了非空的 KUBERNETES_SERVICE_HOST/PORT)。
func NewClientset ¶
func NewClientset(cfg Config) (*kubernetes.Clientset, error)
NewClientset 构建带全部内置资源组的客户端(典型入口)。
func NewDynamicClient ¶
NewDynamicClient 构建非资源型动态客户端(CRD/GVR 操作)。
Types ¶
type Config ¶
type Config struct {
// KubeconfigPath 显式指定 kubeconfig 路径;设置后不再探测 in-cluster。
// 为空时:集群内环境(POD)自动使用 ServiceAccount,本机回退
// KUBECONFIG 环境变量,再回退 ~/.kube/config。
KubeconfigPath string `yaml:"kubeconfigPath"`
// QPS/Burst 是客户端限流(默认 50/100——client-go 默认 5/10 对
// controller 类负载偏保守)。
QPS float32 `yaml:"qps"`
Burst int `yaml:"burst"`
// Timeout 是单请求超时;0 表示不设(Watch/长流式调用必须保持 0)。
Timeout time.Duration `yaml:"timeout"`
// UserAgent 是请求 UA(默认 "oekit-k8s",便于 apiserver 审计归因)。
UserAgent string `yaml:"userAgent"`
// InsecureSkipTLSVerify 跳过 TLS 校验(仅开发/联调,勿用于生产)。
InsecureSkipTLSVerify bool `yaml:"insecureSkipTLSVerify"`
}
Config 是客户端构建配置。
Directories
¶
| Path | Synopsis |
|---|---|
|
Package leaderelection 提供基于 Kubernetes Lease 的选主简化封装: 一个二进制多副本部署时单活运行(定时任务分片、controller、缓存刷新等 场景的兜底互斥),底层即 kube-controller-manager 同款 leader election 协议(coordination.k8s.io/lease),对 apiserver 仅有 Lease 的 get/create/update 权限要求。
|
Package leaderelection 提供基于 Kubernetes Lease 的选主简化封装: 一个二进制多副本部署时单活运行(定时任务分片、controller、缓存刷新等 场景的兜底互斥),底层即 kube-controller-manager 同款 leader election 协议(coordination.k8s.io/lease),对 apiserver 仅有 Lease 的 get/create/update 权限要求。 |
Click to show internal directories.
Click to hide internal directories.