获取属于kubernetes复制控制器的pod

时间:2015-12-13 19:23:45

标签: api kubernetes

我想知道是否有办法使用kubernetes API来获取属于给定复制控制器的pod的详细信息。我查看了参考文献,我看到的唯一方法就是获取pods列表并通过分析“注释”来检查每个列表是否属于某个RC。部分。自从json指定整个' kubernetes.io/created-by'之后,这又是一项艰苦的工作。部分作为单个字符串。

2 个答案:

答案 0 :(得分:3)

每个Replication Controller都有一个selector,用于定义由其管理的pod集:

selector:
    label_name_1: some_value
    label_name_2: another_value

您可以使用选择器获取具有相应标签集的所有窗格:

https://k8s.example.com/api/v1/pods?labelSelector=label_name_1%3Dsome_value,label_name_2%3Danother_value

答案 1 :(得分:1)

要获取属于特定复制控制器的Pod的详细信息,我们需要在yaml文件中包括选择器字段,该字段定义复制控制器,并在要创建的Pod模板中匹配标签字段。下面给出了复制控制器yaml文件的示例:

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    app: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80 

要列出窗格名称,请使用以下命令:

pods=$(kubectl get pods --selector=app=nginx --output=jsonpath={.items..metadata.name})
echo $pods

在上面的命令中,--output = jsonpath选项指定仅获取每个pod名称的表达式。