问题标签 [kubernetes-go-client]

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 投票
2 回答
949 浏览

go - kubernetes client-go 将yaml转成go代码

是否有关于在 go-client 某处构建k8s 作业的文档?特别是我正在尝试将工作 yaml 转换为代码,并且在我的一生中找不到说明字段如何转换的参考文档

0 投票
1 回答
1550 浏览

kubernetes - 如何处理 K8s go client informer 错误事件

我编写了一个基于 Go 的 K8s 客户端应用程序来连接 K8s 集群。为了处理来自 K8s 集群的 Pod、Namespace 和 Node 的实时通知(添加、删除、更新),我编写了一个通知器。代码片段如下。

我想特别注意“runtime.HandleCrash()”函数,(我猜)它有助于将运行时恐慌/错误重定向到恐慌文件。

请参阅下面的一些错误,这些错误在恐慌文件中报告/收集。

我的问题是:有什么方法,我可以编写通知程序,它向我的应用程序报告/通知特定错误,而不是写入恐慌文件?这样,我的应用程序将能够更优雅地处理这个预期的事件。

有什么方法可以注册回调函数(类似于 Informer.AddEventHandler())。

在一个特定的用例中,我关闭了 K8s 集群,导致告密者将错误消息抛出到恐慌文件中,如下所示。

在我启动 K8s 集群节点的那一刻,它停止报告这些错误。

0 投票
1 回答
645 浏览

go - Kubernetes `client-go` - 如何在 pod 中获取容器状态

在遵循thisthis之后,如何在 Pod 中观察容器状态(如果容器崩溃、完成等)并在 Pod 中容器状态发生变化时触发事件?

假设我有一个带有 2 个容器的 Pod:

我想在busybox5容器完成执行而不是关于busybox50. 我使用告密者做了以下类似的事情:

这很简单。但它如何在多容器 Pod 中工作?如果我只想busybox5在 Pod 中处理有关容器的事件怎么办。我怎样才能在 Go 中实现这一点?

0 投票
1 回答
54 浏览

go - GCP:Go 中的存储桶创建

我正在尝试使用 Go 在 GCP 中创建一个存储桶,我尝试了这种创建方法,它在 Go 中创建了一个存储桶。这是同样的 围棋游乐场。当我尝试运行它时,它只是说 timeout running go buildand Go Build Failed。我知道它正在尝试下载一些软件包,但不确定为什么在下载软件包时它会超时?我是 Go 新手,想测试一下桶创建在 Go 中是如何工作的。我错过了什么吗?

0 投票
1 回答
9282 浏览

go - Kubernetes客户端找不到模块

我正在尝试连接到托管在我的本地 Kubernetes 集群minikube这是相同的代码,现在当我这样做时go run minikube.go,它给了我一个错误消息:

现在,我尝试使用手动安装该软件包,go get然后发现该软件包不存在。我怎样才能使它工作并解决这个问题?我的go.mod 文件以防万一有人想看到。

0 投票
0 回答
277 浏览

go - 实际功能与测试功能类型不匹配

我写了以下函数。它执行以下操作

  1. 遍历给定的命名空间并遍历所有 pod。
  2. 返回一个字符串切片,其中包含与命名约定匹配的 pod。

在上述情况下,客户端集的类型为*"k8s.io/client-go/kubernetes".Clientset

上述函数运行良好并返回所需的结果。

现在我正在为这个函数写一个测试。测试是

我正在利用假库来初始化假客户端,在命名空间中创建一个 pod,然后测试该功能。但我收到一个错误

所以似乎存在一个问题,我无法使用 调用该函数,clientset因为实际函数与测试函数的类型不同。我正在关注这个例子,他们似乎也在做同样的事情。有什么我错过的吗?

0 投票
1 回答
154 浏览

kubernetes - 使用动态客户端执行 SSA 创建时找不到资源错误

我正在关注@ymmt2005 优秀的动态客户指南。一切都很好,直到我进行实际 PATCH 调用的最后一步,我得到一个the server could not find the requested resource错误。几乎一切似乎都是正确的,除了我不确定 PathOptions 结构中的“FieldManager”字段。我不确定“进行这些更改的演员或实体”指的是什么。这是否需要匹配我的代码或系统中的某些内容?还有其他想法吗?

[编辑] 我确认我只能在已经存在的资源上使用“补丁”。我调整了代码以使用“创建”来创建资源,然后我能够成功地对其进行“补丁”以进行更改。为了克服 FieldManager 的不一致,我在文档中推荐的 PatchOptions 添加了 Force=true 。我仍然想知道如果资源不存在我如何创建并更新如果它存在 - 也许只是测试存在?

0 投票
1 回答
298 浏览

go - 使用“/”字符修补 kubernetes 标签

我有以下工作正常的代码。example: yes它在 kubernetes 对象中添加标签:

问题是我需要添加example/test包含字符的标签,/我认为这是我的问题的根源。使用有效负载执行前面的代码时:

我得到错误:"the server rejected our request due to an error in our request"

我知道另一种方法是使用Update而不是Patch. 但是有没有使用这个问题的任何解决方案Patch

0 投票
1 回答
723 浏览

configmap - 在 Golang K8s 客户端中为 Deployment 设置 ConfigMapRef 和 SecretRef

我已经被这个错误搞砸了几个小时,但仍然不知道为什么!

我创建了一个简单的 Configmap 和一个分别称为 config1 和 secret1 的 Secret。(这些的 Yaml 文件在这个 repo 中:https ://github.com/hoangphanthai/test )

之后,我创建了一个 Go 文件(上面的 test.go)来创建一个 Statefulset 和一个 Deployment。我希望所有 pod(由 Statefulset 和 Deployment 创建)在其 Env 变量中引用这些 Configmap 和 Secret。Statefulset 和 Deployment 的 Metadata 和 Spec 是相同的,只是它们的名称不同。

但是,只有Statefulset创建成功,而Deployment。错误是“Deployment.apps“d1”无效:spec.template.spec.containers[0].envFrom:无效值:“”:一次不能指定多个字段”

第二次运行,Statefulset 和 Deployment 都没有成功,它显示“无法继续 - 运行时错误:无效的内存地址或 nil 指针取消引用 [信号 SIGSEGV:分段违规] 无法将 EXC_BAD_ACCESS 信号传播到目标进程和恐慌(参见https ://github.com/go-delve/delve/issues/852)最后已知的即时堆栈跟踪(goroutine id 1):“”

重要的一段代码如下(完整代码在 Repo 中的 test.go 文件中):

起初我认为不可能同时设置 ConfigMapRef 和 SecretRef 但后来我尝试通过 yaml(上面的 dep.yaml)应用部署,这与代码中的完全相同,但它有效。

我也google了一下,不知道怎么解决。

如果有人告诉我如何解决这个问题,我将非常感激。

感谢您的阅读。

0 投票
1 回答
104 浏览

go - 使用 kubernetes/go-client 无法从集群配置中恢复数据

我用 kubernetes/go-client 做了一个演示,我尝试列出集群中的 pod。

我创建了 serviceaccount 令牌以分配给运行此代码的 pod。

但是当代码执行时 pods.Items 没有 pod。

我在 minikube 中部署了这个 pod。当我启动一些 kubectl 命令来列出 pod 时,我可以通过这种方式获取资源,因此不会出现权限问题。

我想知道发生了什么以及如何解决它。


存储库https://github.com/srpepperoni/inframanager.git

图像被推入:https ://hub.docker.com/r/jaimeyh/inframanager

我遇到问题的端点是这个: