问题标签 [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.

0 投票
1 回答
123 浏览

go - 如何使用 k8s.io client-go rest API 请求传递容器名称

如何为 Kubernetes k8s.io client-go app 传递容器名称信息:

喜欢 -

如何通过 client-go 传递容器名称?

0 投票
1 回答
298 浏览

kubernetes - 如何使用 client-go API 返回的 Pod 条件数组?

我在 Go 中使用 client-go API 来访问给定控制器(部署)下的 Pod 列表。在使用选择器标签查询属于它的 pod 列表时,您会得到一个数组PodConditions- https://pkg.go.dev/k8s.io/api/core/v1?tab=doc#PodCondition

这与 pod 条件的官方文档非常一致 - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-conditions。但是文档并不清楚如何访问这个条目数组。它是按最近的条目排序的吗?例如,如果我只想访问 Pod 的最新状态,应该怎么做?从我在本地集群中进行的一项试验中,我获得了控制器 Pod 之一的更新(Pod 条件数组),如下所示

如您所见,给定的 Pod 几乎同时从 过渡ContainersReady到。但它们都不在第一个或最后一个索引中。Ready08:01:22 +0000 UTC

所以 TLDR,问题是如何从这个值数组中推断出最新的 Pod 条件类型和状态?

0 投票
1 回答
417 浏览

kubernetes - Kubernetes 为所有 Pod 提供服务,另一个只为领导者提供服务

在 Kubernetes 中,是否可以为单个部署提供 2 个服务,一个是“标准”服务,在所有准备好的 pod 前面代理,另一个服务只发送选定的领导者?如果有怎么办?我正在使用client-go进行领导者选举。这些是第 4 层服务。

我知道服务可以使用标签作为选择器,但 client-go 使用注释来标记领导者。使用没有选择器的服务并在领导者回调中创建/删除端点似乎是 hacky/buggy。谢谢你。

0 投票
1 回答
186 浏览

kubernetes - 如何在 k8s client-go 中使用 GKE IAM

我正在使用 k8s go 客户端(https://github.com/kubernetes/client-go)在 GKE 集群上创建作业(代码在 pod 内运行)。但我有这个错误:

看起来我正在使用system:serviceaccount:default:default,但我怎样才能使用 GCP IAM 帐户呢?

我已经按照https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform设置了 GOOGLE_APPLICATION_CREDENTIALS 。但看起来它只适用于 GCP 客户端而不适用于 k8s 客户端

0 投票
1 回答
2470 浏览

go - 使用 client-go 模拟 'kubectl wait' 等待 Pod 准备就绪

在 bash 脚本中,我通常使用 'kubectl wait' 来阻止,直到某个 pod 资源准备好,例如类似于以下内容:

这很好用,因为很多时候我不知道我需要等待的 pod 的确切名称,而“kubectl wait”允许我根据选择器定位 pod,然后阻塞直到它准备好。

现在我需要在 golang 代码中做类似的事情。我已经看到了使用client-go库来通过名称进行身份验证和“获取”特定 pod 的示例。但是我有几个关于如何最好地使这个例子适应我的需要的问题......

  1. 我不知道能够“获取()”它的 pod 的确切/全名,这就是为什么“kubectl wait”是完美的,因为它允许我使用选择器找到 pod。我假设我应该使用 client-go 库来代替执行 CoreV1().Pods().List() 调用而不是 Get() 以允许我使用选择器找到我想要的 pod?

  2. 此外,pod 可能不会立即存在,并且可能仅在 1 分钟左右后才创建,“kubectl wait”为我处理。在代码中,我是否需要循环/睡眠并继续执行 List() 直到 pod 存在?

  3. 与#2 类似的问题...一旦 List() 确实返回一个 pod 名称,golang 中“等待”该 pod 处于“就绪”状态的最佳方式是什么?如果可以避免的话,我不想对睡眠进行任何丑陋的民意调查......那么使用 golang 'wait' 包或类似包有更好的选择吗?你有什么建议吗?

0 投票
1 回答
43 浏览

go - Golang Api Kind Struct Creation 上的类型冲突

在 client-go 中创建 types.go 时遇到问题。

按照下面的“卡夫卡”种类......

我有 Kafka Kind 的架构如下

而当我需要定义 Spec.kafka 类型时

我面临两种 kafka 结构类型的问题。这是错误的。

0 投票
0 回答
312 浏览

go - 使用 client-go 列出 NodeMetrics

众所周知,我们可以通过代码获取节点列表: nodes, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{}) ,列表选项就像这样:

但是当我得到节点指标时:mc.MetricsV1beta1().NodeMetricses(metav1.NamespaceAll).List(metav1.ListOptions{})
我不知道列表选项只是关于节点或 NodeMetrics 结构本身。它让我很困惑。

0 投票
1 回答
246 浏览

go - go mod导入K8s Taints Api时出错

我想使用 api 向(从)k8s 节点添加(删除)污点,代码如下:

但是当我通过 GoLand 同步依赖项时,发生了错误:

go: 查找包 k8s.io/kubernetes/pkg/util/taints 的模块
go: 在 k8s.io/kubernetes v1.19.0 中找到 k8s.io/kubernetes/pkg/util/taints
go: k8s.io/kubernetes@v1. 19.0 需要
    k8s.io/api@v0.0.0:在修订 v0.0.0 读取 k8s.io/api/go.mod:未知修订 v0.0.0

go.mod在我的项目中是这样的:

我发现了一些关于这个错误的问题,但它似乎对我不起作用。(https://github.com/kubernetes/kubernetes/issues/79384

希望有人能提供帮助,谢谢~

0 投票
2 回答
584 浏览

go - 使用 k8s rest api 从特定节点获取 Pod

是否有任何 k8s rest api 端点来获取所有 pod 及其特定节点的详细信息。我使用 minikube 并使用kubectl proxy --port=7070 &. 我们有像 GET /api/v1/namespaces/{namespace-name}/pods. 我们是否有任何类似的端点来访问属于特定节点的 pod?我不想使用 kubectl 命令。

0 投票
1 回答
756 浏览

go - 是否可以解析 k8s 非结构化的状态字段。非结构化

我正在尝试编写一个 k8s 控制器,在控制器中我想将 YAML 文件从 Github 解析为unstructured. Unstructured. 解析后,我想跟踪应用实例的状态unstructured. Unstructured。如果存在特定的键值,跟踪将尝试捕获。

我没有这样做,因为unstructured. Unstructured没有获取状态的方法。然后我试图将它编组为 JSON 并找到状态,也失败了......

如果您知道实现这些目标的方法,那就太好了。