问题标签 [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.
go - kubernetes client-go 将yaml转成go代码
是否有关于在 go-client 某处构建k8s 作业的文档?特别是我正在尝试将工作 yaml 转换为代码,并且在我的一生中找不到说明字段如何转换的参考文档
kubernetes - 如何处理 K8s go client informer 错误事件
我编写了一个基于 Go 的 K8s 客户端应用程序来连接 K8s 集群。为了处理来自 K8s 集群的 Pod、Namespace 和 Node 的实时通知(添加、删除、更新),我编写了一个通知器。代码片段如下。
我想特别注意“runtime.HandleCrash()”函数,(我猜)它有助于将运行时恐慌/错误重定向到恐慌文件。
请参阅下面的一些错误,这些错误在恐慌文件中报告/收集。
我的问题是:有什么方法,我可以编写通知程序,它向我的应用程序报告/通知特定错误,而不是写入恐慌文件?这样,我的应用程序将能够更优雅地处理这个预期的事件。
有什么方法可以注册回调函数(类似于 Informer.AddEventHandler())。
在一个特定的用例中,我关闭了 K8s 集群,导致告密者将错误消息抛出到恐慌文件中,如下所示。
在我启动 K8s 集群节点的那一刻,它停止报告这些错误。
go - 实际功能与测试功能类型不匹配
我写了以下函数。它执行以下操作
- 遍历给定的命名空间并遍历所有 pod。
- 返回一个字符串切片,其中包含与命名约定匹配的 pod。
在上述情况下,客户端集的类型为*"k8s.io/client-go/kubernetes".Clientset
上述函数运行良好并返回所需的结果。
现在我正在为这个函数写一个测试。测试是
我正在利用假库来初始化假客户端,在命名空间中创建一个 pod,然后测试该功能。但我收到一个错误
所以似乎存在一个问题,我无法使用 调用该函数,clientset
因为实际函数与测试函数的类型不同。我正在关注这个例子,他们似乎也在做同样的事情。有什么我错过的吗?
kubernetes - 使用动态客户端执行 SSA 创建时找不到资源错误
我正在关注@ymmt2005 优秀的动态客户指南。一切都很好,直到我进行实际 PATCH 调用的最后一步,我得到一个the server could not find the requested resource
错误。几乎一切似乎都是正确的,除了我不确定 PathOptions 结构中的“FieldManager”字段。我不确定“进行这些更改的演员或实体”指的是什么。这是否需要匹配我的代码或系统中的某些内容?还有其他想法吗?
[编辑] 我确认我只能在已经存在的资源上使用“补丁”。我调整了代码以使用“创建”来创建资源,然后我能够成功地对其进行“补丁”以进行更改。为了克服 FieldManager 的不一致,我在文档中推荐的 PatchOptions 添加了 Force=true 。我仍然想知道如果资源不存在我如何创建并更新如果它存在 - 也许只是测试存在?
go - 使用“/”字符修补 kubernetes 标签
我有以下工作正常的代码。example: yes
它在 kubernetes 对象中添加标签:
问题是我需要添加example/test
包含字符的标签,/
我认为这是我的问题的根源。使用有效负载执行前面的代码时:
我得到错误:"the server rejected our request due to an error in our request"
。
我知道另一种方法是使用Update
而不是Patch
. 但是有没有使用这个问题的任何解决方案Patch
?
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了一下,不知道怎么解决。
如果有人告诉我如何解决这个问题,我将非常感激。
感谢您的阅读。
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
我遇到问题的端点是这个: