【问题标题】:Obtain pod labels of kubernetes deployment获取kubernetes部署的pod标签
【发布时间】:2020-12-17 05:05:56
【问题描述】:

我正在尝试在 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,我将能够获取部署的元数据,但我无法获取规范。有没有办法从资源的规范级别获取数据?

【问题讨论】:

  • 在问题中添加您的代码

标签: go kubernetes yaml


【解决方案1】:

使用 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)
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2020-07-27
    • 2021-12-24
    • 2018-10-30
    • 2021-09-21
    • 2017-07-05
    • 2019-02-22
    相关资源
    最近更新 更多