问题标签 [client-go]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - k8s.io/client-go/pkg/api/v1 已退役,如何解析 event.Object?
我正在观看 pod 并从通道 ResultChan() 获取事件,现在我想解析 event.Object。我看到一段代码是这样的:event.Object.(*apiv1.Pod),请看下面的代码,可惜k8s.io/client-go/pkg/api/v1已经退役了,这段代码没有不工作。
我的问题是,如何从 event.Object 中获取 Pod 信息?什么新的 API 可以访问或解析 event.Object?
kubernetes - 特定 pod 的 client-go 监视事件
我正在通过 clientset 观看事件,但我想观看特定 Pod 的事件,所以我添加了 labellselector 来过滤它们,不幸的是它不起作用。添加 LabelSelector 是查看 pod 状态的好方法,但它不适用于事件。
我想知道如何过滤事件的好方法,以便我只想查看仅与特定标签选择器相关的事件。
go - client-go 创建一个以 configmap 作为卷的 Pod
我正在实现一个admission webhook,它应该添加一个sidecar 容器,需要从a 中选择配置configmap
作为当前流程,configmap
假设它存在于集群中,我只需要VolumeMounts
它。我正在 client-go 中尝试以下代码:
但是我收到一个too few values in "k8s.io/api/core/v1".ConfigMapVolumeSource literal
错误由于该configmap
对象已经存在于集群中,我不想/不需要提供除了
我在这里缺少什么Name
之外的任何其他字段?configmap
ps:文档中提到所有其他字段ConfigMapVolumeSource
都是可选的。我想实现一些简单的事情:
YAML 清单只是一个例子。我想要达到的目标
kubernetes - 如何在client-go中使用当前上下文以外的上下文来访问多个集群?
我按照 Kubernetes 文档使用 client-go 访问集群: https ://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#accessing-the-api-from-within-a-pod
现在,就我而言,在我的 kubeconfig 中,我有不止一个集群。它们的上下文名称是 cluster-1 和 cluster-2,而 cluster-1 是默认集群。
上面的代码默认使用当前上下文。
我希望能够根据我的需要将 cluster-1 或 cluster-2 作为上下文传递。
我怎样才能做到这一点?
go - 有没有更好的方法来列出属于特定 K8s 对象的 K8s 事件?
有没有更好的方法来列出属于特定 K8s 对象的 K8s 事件?
例如,如果我想列出属于名为“podname”的 Pod 的所有事件,我会执行以下操作:
Go 中是否有另一种/更惯用的方法来按 kube 对象的名称进行过滤(而不是在 FieldSelector 中使用类似 json 的字符串)?
kubernetes - client-go 动态补丁不能去掉 nodeSelector 标签?
客户端版本:v0.15.10
当 PatchType 为 MergePatchType 或 StrategicMergePatchType 时,无法从 Deployment nodeSelector 中删除 lebels?
这是原始 yaml 文件“test1.yaml”:
补丁代码:
补丁yaml:
当我从 test1.yaml 中删除“CLUSTER: WX”行并执行 patch() 方法时,部署资源仍然具有“CLUSTER: WX”标签,但添加新标签可以工作。
看了官方文档https://kubernetes.io/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/,上面写着Notice that the tolerations list in the PodSpec was replaced, not merged. This is because the Tolerations field of PodSpec does not have a patchStrategy key in its field tag. So the strategic merge patch uses the default patch strategy, which is replace.
所以我检查了Kubernetes源代码中NodeSelector的字段标签,:
没有“patchStrategy”标签,那么为什么 patch() 不做替换?
kubernetes - 用于客户端的版本化客户端集
我读了一些代码https://github.com/openshift/router/blob/master/pkg/router/controller/factory/factory.go。
在这个 go 文件中,它引用了 3 个客户端集,我使用了标准的 K8s 客户端集 - k8s.io/client-go/kubernetes,但我不明白为什么很多项目喜欢生成新的客户端集?为什么标准的 K8s 客户端集没有提供足够的 API 或功能?任何人都可以给出想法或示例为什么某些项目想要生成新的客户集吗?它是干什么用的?
kubernetes - 地图类型字段的客户端合并逻辑是什么?
MergePatch 或 StragegyMergePatch 在修补地图类型字段(如标签)时有什么作用?
当我使用 MergePatch 或 StragegyMergePatch 时,如果我在 yaml 文件中添加一些标签,然后将整个 yaml 文件的数据传输到 patch 方法,它可以工作。但是如果我从 yaml 文件中删除一些标签,然后打补丁,它就不起作用了。
go - 如何通过 client-go 使用复杂的 LabelSelector 列出我的 k8s 作业?
我想通过client-go使用标签选择器列出我的 k8s 作业,如下所示:
我查看了client-go的源代码,然后我写了一些这样的代码:
然后我得到了错误:
我哪里做错了?如何使用复杂表达式的标签选择器列出我的作业?