获取属于 kubernetes 复制控制器的 pods
get pods belonging to a kubernetes replication controller
我想知道是否有一种方法可以使用 kubernetes API 来获取属于给定复制控制器的 pods 的详细信息。我查看了参考资料,我看到的唯一方法是获取 pods 列表并通过分析 'annotations' 部分检查每个列表是否属于某个 RC。这又是一项艰巨的工作,因为 json 将整个 'kubernetes.io/created-by' 部分指定为单个字符串。
每个 Replication Controller 都有一个 selector,它定义了由它管理的 pods 的集合:
selector:
label_name_1: some_value
label_name_2: another_value
您可以使用选择器获取所有 pods 和相应的一组标签:
https://k8s.example.com/api/v1/pods?labelSelector=label_name_1%3Dsome_value,label_name_2%3Danother_value
要获取属于特定复制控制器的 pods 的详细信息,我们需要在定义复制控制器的 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
要列出 pod 名称,请使用命令:
pods=$(kubectl get pods --selector=app=nginx --output=jsonpath={.items..metadata.name})
echo $pods
在上面的命令中,--output=jsonpath 选项指定了仅获取每个 pod 名称的表达式。
我想知道是否有一种方法可以使用 kubernetes API 来获取属于给定复制控制器的 pods 的详细信息。我查看了参考资料,我看到的唯一方法是获取 pods 列表并通过分析 'annotations' 部分检查每个列表是否属于某个 RC。这又是一项艰巨的工作,因为 json 将整个 'kubernetes.io/created-by' 部分指定为单个字符串。
每个 Replication Controller 都有一个 selector,它定义了由它管理的 pods 的集合:
selector:
label_name_1: some_value
label_name_2: another_value
您可以使用选择器获取所有 pods 和相应的一组标签:
https://k8s.example.com/api/v1/pods?labelSelector=label_name_1%3Dsome_value,label_name_2%3Danother_value
要获取属于特定复制控制器的 pods 的详细信息,我们需要在定义复制控制器的 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
要列出 pod 名称,请使用命令:
pods=$(kubectl get pods --selector=app=nginx --output=jsonpath={.items..metadata.name})
echo $pods
在上面的命令中,--output=jsonpath 选项指定了仅获取每个 pod 名称的表达式。