登录
首页 >  Golang >  Go问答

获取kubernetes部署的pod标签

来源:stackoverflow

时间:2024-04-08 19:06:25 354浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《获取kubernetes部署的pod标签》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我正在尝试在 go 中编写代码来获取部署中创建的 pod 的标签。例如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

我知道如果我使用 objectmeta,我将能够获取部署的元数据,但我无法获取规范。有没有办法从资源的规范级别获取数据?


解决方案


使用 kubernetes client-gothis example 我能够获取每个容器的标签

package main

import (
    "context"
    "flag"
    "fmt"
    "log"
    "path/filepath"

    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/tools/clientcmd"
    "k8s.io/client-go/util/homedir"
)

func main() {
    var kubeconfig *string
    if home := homedir.HomeDir(); home != "" {
        kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
    } else {
        kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
    }
    flag.Parse()

    // use the current context in kubeconfig
    config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
    if err != nil {
        log.Fatalf(err.Error())
    }

    // create the clientset
    clientset, err := kubernetes.NewForConfig(config)
    if err != nil {
        log.Fatalf(err.Error())
    }

  // get pods
    pods, err := clientset.CoreV1().Pods("your-namespace").List(context.TODO(), metav1.ListOptions{})
    if err != nil {
        log.Fatalf(err.Error())
    }

  // get labels
  for _, pod := range pods.Items {
    labels := pod.GetObjectMeta().GetLabels()
    fmt.Printf("%+v", labels)
  }
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《获取kubernetes部署的pod标签》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>