kubernetes volcano 客户端

server/2024/11/29 6:10:35/

kubernetes__0">kubernetes 客户端

package mainimport ("context""fmt""os"appsv1 "k8s.io/api/apps/v1"corev1 "k8s.io/api/core/v1"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/apimachinery/pkg/util/intstr""k8s.io/client-go/kubernetes""k8s.io/client-go/tools/clientcmd"
)// https://www.cnblogs.com/guangdelw/p/17574575.html
func main() {clientset, error := GetK8sClient()if error != nil {os.Exit(-1)}//GetPods(clientset)//CreateNamespace(clientset, "test-namespace")// _, err := GetNamespace(clientset, "test-namespace")// if err != nil {// 	return// }// DeleteNamespace(clientset, "test-namespace")//GetAllNamespace(clientset)// GetSecret(clientset, "default", "ops-alert-bcm-config-d16")matchLabels := map[string]string{"app": "nginx",}objectMetaLabels := map[string]string{"app": "nginx",}var ports = []corev1.ContainerPort{{ContainerPort: 80,},}var image = "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:alpine"CreateDeployment(clientset, "default", "nginx-web", matchLabels, objectMetaLabels, "nginx", image, ports)fmt.Println("===============================================")selector := map[string]string{"app": "nginx",}portsExt := []corev1.ServicePort{{Name:       "http",Port:       80,TargetPort: intstr.FromInt(80),Protocol:   corev1.ProtocolTCP,NodePort:   31111,},}CreateService(clientset, "default", "nginx-web", selector, portsExt)
}// 获取 k8s apiServer 客户端
func GetK8sClient() (*kubernetes.Clientset, error) {kubeconfigPath := "./conf/local_k8s.config"config, err := clientcmd.BuildConfigFromFlags("", kubeconfigPath)if err != nil {fmt.Println("BuildConfigFromFlags error :", err.Error())return nil, err}clientset, err := kubernetes.NewForConfig(config)if err != nil {fmt.Println("NewForConfig error :", err.Error())return nil, err}fmt.Printf("%#v\n", clientset)return clientset, nil
}// 获取集群中所有pod
func GetPods(clientset *kubernetes.Clientset) (*corev1.PodList, error) {pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})if err != nil {fmt.Println("CoreV1 pod list error :", err.Error())return nil, err}for _, pod := range pods.Items {fmt.Printf("Pod Name: %-40s\tNamespace: %-10s\t%s\n", pod.Name, pod.Namespace, pod.Status.Phase)}return pods, nil
}// 创建namespace
func CreateNamespace(clientset *kubernetes.Clientset, namespaceName string) (*corev1.Namespace, error) {// 创建一个namespace的客户端namespacesClient := clientset.CoreV1().Namespaces()// 构建一个namespacenamespace := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespaceName,},Status: corev1.NamespaceStatus{Phase: corev1.NamespaceActive,},}// 创建namespaceres, err := namespacesClient.Create(context.Background(), namespace, metav1.CreateOptions{})if err != nil {fmt.Println("Create Namespace error :", err.Error())return nil, err}fmt.Printf("Created Namespace %s on %s\n", res.ObjectMeta.Name, res.ObjectMeta.CreationTimestamp)return res, nil
}// 获取Namespace
func GetNamespace(clientset *kubernetes.Clientset, namespaceName string) (*corev1.Namespace, error) {// 创建namespace的客户端namespacesClient := clientset.CoreV1().Namespaces()// 用客户端来查询对应的namespaceres, err := namespacesClient.Get(context.Background(), namespaceName, metav1.GetOptions{})if err != nil {fmt.Println("GetNamespace error :", err.Error())return nil, err}fmt.Printf("Get Namespace %s on %s\n", res.ObjectMeta.Name, res.ObjectMeta.CreationTimestamp)return res, nil
}// 删除 Namespace
func DeleteNamespace(clientset *kubernetes.Clientset, namespaceName string) error {namespacesClient := clientset.CoreV1().Namespaces()var err = namespacesClient.Delete(context.Background(), namespaceName, metav1.DeleteOptions{})if err != nil {fmt.Println("Delete Namespace error :", err.Error())return err}fmt.Printf("删除成功")return nil
}// 获取所有的 Namespace
func GetAllNamespace(clientset *kubernetes.Clientset) (*corev1.NamespaceList, error) {namespacesClient := clientset.CoreV1().Namespaces()res, err := namespacesClient.List(context.Background(), metav1.ListOptions{})if err != nil {fmt.Println("Get All Namespace error :", err.Error())return nil, err}fmt.Println("==========================================")for _, v := range res.Items {fmt.Printf("%s\t%s\n", v.Name, v.CreationTimestamp)}fmt.Println("==========================================")return res, nil
}// 获取 Secret
func GetSecret(clientset *kubernetes.Clientset, namespaceName string, secretName string) (*corev1.Secret, error) {secretClient := clientset.CoreV1().Secrets(namespaceName)res, err := secretClient.Get(context.Background(), secretName, metav1.GetOptions{})if err != nil {fmt.Println("Get Secret error :", err.Error())return nil, err}fmt.Printf("%#v\n", res)fmt.Printf("data : %s\n", res.Data["KUBE_CONFIG"])return res, nil
}// 创建Deployment
func CreateDeployment(clientset *kubernetes.Clientset, namespaceName string, objectMateName string, matchLabels map[string]string, objectMetaLabels map[string]string, containerName string, image string, ports []corev1.ContainerPort) (*appsv1.Deployment, error) {var replicas int32 = 3deployment := &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: objectMateName,},Spec: appsv1.DeploymentSpec{Replicas: &replicas,Selector: &metav1.LabelSelector{MatchLabels: matchLabels,},Template: corev1.PodTemplateSpec{ObjectMeta: metav1.ObjectMeta{Labels: objectMetaLabels,},Spec: corev1.PodSpec{Containers: []corev1.Container{{Name:  containerName,Image: image,Ports: ports,},},},},},}// 创建Deployment资源res, err := clientset.AppsV1().Deployments(namespaceName).Create(context.TODO(), deployment, metav1.CreateOptions{})if err != nil {fmt.Println("Create Deployment error :", err.Error())return nil, err}fmt.Printf("Deployment created successfully %#v\n", res)return res, nil
}// 创建Service
func CreateService(clientset *kubernetes.Clientset, namespaceName string, objectMetaName string, selector map[string]string, ports []corev1.ServicePort) (*corev1.Service, error) {service := &corev1.Service{ObjectMeta: metav1.ObjectMeta{Name: objectMetaName,},Spec: corev1.ServiceSpec{Selector: selector,Ports:    ports,Type:     corev1.ServiceTypeNodePort,},}// 创建Service资源res, err := clientset.CoreV1().Services(namespaceName).Create(context.TODO(), service, metav1.CreateOptions{})if err != nil {fmt.Println("Create Service error :", err.Error())return nil, err}fmt.Printf("Create Service successfully %#v\n", res)return res, nil
}

volcano 客户端

package mainimport ("fmt""k8s.io/client-go/tools/clientcmd"volcanoclient "volcano.sh/apis/pkg/client/clientset/versioned"
)// https://blog.51cto.com/u_16099347/11106753
// https://zhuanlan.zhihu.com/p/903166664
// 获取 volcano 客户端
func GetVolcanoclient() (*volcanoclient.Clientset, error) {kubeconfigPath := "./conf/local_k8s.config"config, err := clientcmd.BuildConfigFromFlags("", kubeconfigPath)if err != nil {fmt.Printf("Failed to BuildConfigFromFlags from kubeconfig file. filePath: %s, err: %s", kubeconfigPath, err.Error())return nil, err}volcanoClientset, err := volcanoclient.NewForConfig(config)if err != nil {fmt.Printf("Unable to create a volcano client from kubeconfig file. filePath: %s, err: %s", kubeconfigPath, err.Error())return nil, err}return volcanoClientset, nil
}

http://www.ppmy.cn/server/145833.html

相关文章

当前就业形势下C++方向后端开发学习指南

文章目录 1. C后端开发的职业方向1.1 C的应用领域1.2 后端开发的职业选择 2. 当前就业形势分析2.1 C开发者的市场需求2.2 C开发者的薪资水平 3. 学习路线3.1 入门阶段:掌握基础知识3.2 进阶阶段:掌握后端开发的核心技术3.2.1 数据库与C3.2.2 网络编程 3.…

【Java 学习】面向程序的三大特性:封装、继承、多态

引言 1. 封装1.1 什么是封装呢?1.2 访问限定符1.3 使用封装 2. 继承2.1 为什么要有继承?2.2 继承的概念2.3 继承的语法2.4 访问父类成员2.4.1 子类中访问父类成员的变量2.4.2 访问父类的成员方法 2.5 super关键字2.6 子类的构造方法 3. 多态3.1 多态的概…

深度学习模型:卷积神经网络(CNN)

一、前言 CNN 的发展历程可以追溯到 20 世纪 80 年代和 90 年代。受生物视觉系统的启发,研究人员开始探索如何构建专门用于处理图像数据的神经网络。早期的一些研究奠定了基础,例如 Fukushima 提出的 Neocognitron 模型。 随着时间的推移,到…

DICOM医学影像应用篇——窗宽窗位概念、原理及实现详解

目录 窗宽窗位调整(Windowing)在DICOM医学影像中的应用 窗宽窗位的基本概念 窗宽(Window Width, WW) 窗位(Window Level, WL) 窗宽窗位调整的基本原理 映射逻辑 数学公式 窗宽窗位调整的C实现 代码…

操作系统之文件系统

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

七牛云AIGC内容安全方案助力企业合规创新

随着人工智能生成内容(AIGC)技术的飞速发展,内容审核的难度也随之急剧上升。在传统审核场景中,涉及色情、政治、恐怖主义等内容的标准相对清晰明确,但在AIGC的应用场景中,这些界限变得模糊且难以界定。用户可能通过交互性引导AI生成违规内容,为审核工作带来了前所未有的不可预测…

黑马程序员Java项目实战《苍穹外卖》Day02

苍穹外卖-day02 课程内容 新增员工员工分页查询启用禁用员工账号编辑员工导入分类模块功能代码 **功能实现:**员工管理、菜品分类管理。 员工管理效果: 菜品分类管理效果: 1. 新增员工 1.1 需求分析和设计 1.1.1 产品原型 一般在做需求…

铲除数据安全三大“顽疾”,安全GPT如何“开药方”?

近年来,数据安全事件频发,业务数据不可见、不可视,导致业务数据被第三方利用、泄露的风险长期存在且无解。同时,随着监管力度的加大,数据安全处罚事件逐年变多,2023年更是呈现出爆发式增长的趋势。 在这样…