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