如何使用go语言在k8s上添加node节点
用client-go操作就好了呀
package main
import (
"context"
"fmt"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func main() {
// 加载 kubeconfig 文件(通常位于 ~/.kube/config)
kubeconfig := "/path/to/your/kubeconfig"
// 构造 Kubernetes 客户端
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
if err != nil {
panic(fmt.Errorf("failed to build kubeconfig: %v", err))
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(fmt.Errorf("failed to create kubernetes client: %v", err))
}
// 构造 Node 对象 这里你也可以直接读取一个nodeyaml的模版序列化
node := &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "example-node", // 设置节点名称,必须唯一
},
Spec: v1.NodeSpec{
// 这里可以设置其他 node spec 的参数,比如调度标签等
Taints: []v1.Taint{
{
Key: "example-taint-key",
Value: "example-taint-value",
Effect: v1.TaintEffectNoSchedule, // 节点调度策略示例
},
},
},
Status: v1.NodeStatus{
// 自定义 Node 的状态字段(通常由 kubelet 自动管理)
Capacity: v1.ResourceList{
v1.ResourceCPU: "4", // 设置该 Node 提供的 CPU 容量
v1.ResourceMemory: "16Gi", // 设置该 Node 提供的内存容量
},
Allocatable: v1.ResourceList{
v1.ResourceCPU: "4",
v1.ResourceMemory: "16Gi",
},
Conditions: []v1.NodeCondition{
{
Type: v1.NodeReady,
Status: v1.ConditionTrue,
Reason: "NodeCreatedManually",
},
},
},
}
// 调用 Kubernetes API 创建 Node
nodeClient := clientset.CoreV1().Nodes()
_, err = nodeClient.Create(context.TODO(), node, metav1.CreateOptions{})
if err != nil {
panic(fmt.Errorf("failed to create node: %v", err))
}
fmt.Println("Node created successfully!")
}
2 回答1.1k 阅读✓ 已解决
1 回答770 阅读✓ 已解决
2 回答1.4k 阅读
1 回答600 阅读✓ 已解决
1 回答965 阅读✓ 已解决
2 回答1.4k 阅读
2 回答1.3k 阅读
go是编程语言,k8s只是用go开发的应用而已。节点这些概念都属于k8s,那么对应的功能自然由他接口提供,不需要操go的心。去搜文档就好了。云服务的话,在管理后台也有对应的目录。