如何解决Kubernetes javascript 客户端 - 无法按标签选择器过滤
我从 Kubernetes 官方 javascript 客户端运行以下函数,例如:
<link
rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css"
integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l"
crossorigin="anonymous"
/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<script
src="https://unpkg.com/react-bootstrap@next/dist/react-bootstrap.min.js"
crossorigin></script>
<div id="react"></div>
或任何其他函数。
现在我想使用以下标签选择器查找 Pod(如 HTTP 请求中的一样):
.listNamespacedPod("default",null,"false","smth=test",null)
但我无法将 smth=test
作为字符串发送。
如何按标签选择器过滤?
这是我来自 YAML 的元数据:
smth=test
我可以通过 Metadata:
name: label-demo
labels:
smth: test
app: Nginx
运行:
kubectl
所以它只会返回匹配的标签。
解决方法
基于CoreV1API和this sample,应该是:
.listNamespacedPod("default",undefined,"false","smth=test")
它将列出 smth=test
命名空间中所有标签为 default
的 Pod。
我完全同意 Arnaud Develay 提供的答案,但我想补充一下我在调查这个问题时的发现。
要使您的代码响应带有此标签的 Pods
,还需要将其包含在 spec.selector.matchLabels
(和 .spec.template. metadata.labels
中)。
通过使用以下 Deployment
定义:
apiVersion: apps/v1
kind: Deployment
metadata:
name: label-demo
labels:
smth: test # <-- IMPORTANT
app: nginx
spec:
replicas: 1
selector:
matchLabels:
search: here
template:
metadata:
labels:
search: here
spec:
containers:
- name: nginx
image: nginx
以及来自官方 github 页面的以下代码片段:
const k8s = require('@kubernetes/client-node');
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
k8sApi.listNamespacedPod("default","smth=test").then((res) => {
console.log(res.body);
});
代码生成以下输出(以及 Pods
的空列表):
V1PodList {
apiVersion: 'v1',items: [],kind: 'PodList',metadata: V1ListMeta {
_continue: undefined,remainingItemCount: undefined,resourceVersion: '990955',selfLink: '/api/v1/namespaces/default/pods'
}
}
使用 search=here
中的 .spec
标签进行查询时,响应为:
V1PodList {
apiVersion: 'v1',items: [
V1Pod {
apiVersion: undefined,kind: undefined,metadata: [V1ObjectMeta],spec: [V1PodSpec],status: [V1PodStatus]
}
],resourceVersion: '991498',selfLink: '/api/v1/namespaces/default/pods'
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。