client-go开发示例
1. 查看 node列表
package mainimport ("fmt"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/client-go/kubernetes""k8s.io/client-go/tools/clientcmd""log""os""path/filepath"
)func main() {// kubernetesの設定ファイルのパスを組み立てるkubeconfig := filepath.Join(os.Getenv("HOME"), ".kube", "config")// BuildConfigFromFlags is a helper function that builds configs from a master url or // a kubeconfig filepath.config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)if err != nil {log.Fatal(err)}// NewForConfig creates a new Clientset for the given config.// https://godoc.org/k8s.io/client-go/kubernetes#NewForConfigclientset, err := kubernetes.NewForConfig(config)if err != nil {log.Fatal(err)}// https://godoc.org/k8s.io/client-go/kubernetes/typed/core/v1nodes, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get nodes:", err)}for i, node := range nodes.Items {fmt.Printf("[%d] %s\n", i, node.GetName())}
}
$ go run nodelist.go
[0] kube-01
[1] kube-02
[2] kube-03
[3] kube-04
2. 查看pod列表
// https://godoc.org/k8s.io/client-go
package mainimport ("fmt"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/client-go/kubernetes""k8s.io/client-go/tools/clientcmd""log""os""path/filepath"
)func main() {kubeconfig := filepath.Join(os.Getenv("HOME"), ".kube", "config")config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)if err != nil {log.Fatal(err)}// NewForConfig creates a new Clientset for the given config.// https://godoc.org/k8s.io/client-go/kubernetes#NewForConfigclientset, err := kubernetes.NewForConfig(config)if err != nil {log.Fatal(err)}// We need to create a serializer client to let us access API objects.// Type Clientset, from package kubernetes, provides access to generated serializer clients// to access versioned API objects// https://godoc.org/k8s.io/client-go/kubernetes#Clientset.CoreV1pods, err := clientset.CoreV1().Pods("").List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get pods:", err)}// print pods// pods.Items: []v1.Podfor i, pod := range pods.Items {fmt.Printf("[%d] %s\n", i, pod.GetName())}
}
3. service列表
services, err := clientset.CoreV1().Services("").List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get services:", err)}for i, svc := range services.Items {fmt.Printf("[%d] %s\n", i, svc.GetName())}
4. 获取sa列表
serviceAccounts, err := clientset.CoreV1().ServiceAccounts("").List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get service accounts:", err)}for i, sa := range serviceAccounts.Items {fmt.Printf("[%d] %s\n", i, sa.GetName())}
5. 查看deploy列表
// https://godoc.org/k8s.io/client-go/kubernetes/typed/apps/v1#AppsV1Interfacedeployments, err := clientset.AppsV1().Deployments("").List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get deployments:", err)}for i, deployment := range deployments.Items {fmt.Printf("[%d] %s\n", i, deployment.GetName())}
6. 查看pv列表
pvs, err := clientset.CoreV1().PersistentVolumes().List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get persistent volumes:", err)}for i, pv := range pvs.Items {fmt.Printf("[%d] %s\n", i, pv.GetName())}
7. 查看PVC列表
pvcs, err := clientset.CoreV1().PersistentVolumeClaims("").List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get persistent volume claim:", err)}for i, pvc := range pvcs.Items {fmt.Printf("[%d] %s\n", i, pvc.GetName())}
8. 查看ns列表
namespaces, err := clientset.CoreV1().Namespaces().List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get name space:", err)}for i, ns := range namespaces.Items {fmt.Printf("[%d] %s\n", i, ns.GetName())}
9. 查看ingress列表
// https://godoc.org/k8s.io/client-go/kubernetes/typed/extensions/v1beta1#IngressesGetter// https://godoc.org/k8s.io/client-go/kubernetes/typed/extensions/v1beta1ingresses, err := clientset.ExtensionsV1beta1().Ingresses("").List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get ingress:", err)}for i, ingress := range ingresses.Items {fmt.Printf("[%d] %s\n", i, ingress.GetName())}
10. 查看Secret列表
secrets, err := clientset.CoreV1().Secrets("").List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get secret:", err)}for i, secret := range secrets.Items {fmt.Printf("[%d] %s\n", i, secret.GetName())}
11. 创建secret
data := make(map[string][]byte)data["user"] = []byte("admin")data["password"] = []byte("password")// https://godoc.org/k8s.io/api/core/v1// https://godoc.org/k8s.io/client-go/kubernetes/typed/core/v1#SecretInterfacesecrets, err := clientset.CoreV1().Secrets("default").Create(&v1.Secret{TypeMeta: metav1.TypeMeta{Kind: "Secret",},ObjectMeta: metav1.ObjectMeta{Name: "generic-secret",Namespace: "default",},Data: data,})fmt.Println(secrets)
12. 查看configmap
configMaps, err := clientset.CoreV1().ConfigMaps("").List(metav1.ListOptions{})if err != nil {log.Fatalln("failed to get config map:", err)}for i, cm := range configMaps.Items {fmt.Printf("[%d] %s\n", i, cm.GetName())}
13. 查看ingress详细信息
ingress, err := clientset.ExtensionsV1beta1().Ingresses("jx").Get("docker-registry", metav1.GetOptions{})if err != nil {log.Fatalln("failed to get ingresses:", err)}fmt.Println(reflect.TypeOf(ingress)) // *v1beta1.Ingressfmt.Println(ingress) fmt.Println(ingress.ObjectMeta.Name) // docker-registry
参考链接:
https://pizi.netlify.app/posts/delete-existing-deployment-in-kubernetes-using-golang/
client-go开发示例相关推荐
- SharePoint 2013 APP 开发示例 (三)使用远程的web资源
在这个示例里我们将详细介绍 TokenHelper 类, 我们将看到它是怎么简单地从远程web站点访问SharePoint的.我们还将取到它的一些值.这将帮助我们理解连接是怎么被构造的,同时也方便我们 ...
- EJB+JSF开发示例(附源码)
刚到公司时没有接触过EJB3和JSF,为了熟悉一下做了个EJB+JSF开发示例来入门.一个比较简单的JSF的web工程做页面展现,一个简单的EJB3工程做业务操作,分别部署到Tomcat下和JBoss ...
- 仪表板 ajax实例,CQD 开发示例 - Skype for Business Server 2015 | Microsoft Docs
CQD 开发示例 2021/7/29 本文内容 摘要: 查看通话质量仪表板的教程和开发示例. 通话质量仪表板是 Skype for Business Server 的工具. 本文提供了有关通话质量仪表 ...
- Serverless 多函数开发示例
01. 什么是 Serverless? Serverless 的定义和理解在不同的角度和场景会有不同的解读,AWS 将 Serverless(在 AWS 云上) 定义为 "是一种用于描述服务 ...
- 用户自定义协议client/server代码示例
用户自定义协议client/server代码示例 代码参考链接:https://github.com/sogou/workflow message.h message.cc server.cc cli ...
- TWaver Flex开发示例及license下载
做电信项目的朋友一定知道TWaver,而Flex版具有很好的跨平台性,很适合做B/S模式的应用. Flex版的在线DEMO:http://twaver.servasoft.com/demo/twave ...
- SharePoint 2013 APP 开发示例 系列
SharePoint 2013 APP 安全: SharePoint 2013 APP 开发示例 (一)List 读写 SharePoint 2013 APP 开发示例 (二)获取用户信息 Share ...
- SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)
上个示例(SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API))是基于JavaScript,运行在web browser内去访问REST AP ...
- web前端开发示例_40多个针对Web开发人员HTML5教程和示例
web前端开发示例 HTML 5 offers a lot of new features to help web developers. In the last few days, I have r ...
- SharePoint 2013 APP 开发示例 (二)获取用户信息
这个示例里,我们将演示如何获取用户信息: 1. 打开 Visual Studio 2012. 2. 创建一个新的 SharePoint 2013 app: UserProfileTest. 3. 选 ...
最新文章
- Python dataframe指定列顺序输出 + 列数据转化成字符 + 数据框转化成列表
- 开源项目哪家强?Github年终各大排行榜超级盘点(内附开源项目学习资源)
- dev控件中LookUpEdit的数据绑定问题
- ant 安装及基础教程 !
- 公里与英里的换算c语言函数_60迈=60码=60公里?这三者天壤之别,可别搞错了
- web之表单form
- mongodb,spring data api常用总结
- 水晶报表-推拉模式实例
- 艾滋病多学科协作诊治模式的实施与成效
- sm缩写代表什么意思_狗狗各种表情都分别代表着什么意思
- 彻底解决2440触摸屏跳点以及抖动问题
- 若a,b互素,则a必然存在模b的逆元;若a,b不互素,则a必然不存在模b的逆元
- 2019云计算机峰会,计算机学院师生参加“2019华为云城市峰会”
- 【笔记】 欧几里得(扩展欧几里得)
- 转:关于正太分布和多维正态分布的理解(知乎)
- mysql中的left和right
- 一个专业跨境电商人才需要做哪些数据分析
- 动态IP和拨号的区别是什么?
- PHP网盘挂载,raidrive--网盘挂载本地硬盘工具的应用与利与弊
- DSP28335 epwm使用