问题标签 [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 go-client 获取与 kubectl 相同的 Pod 状态信息
使用 kubernetes go-client ( k8s.io/client-go/kubernetes),我知道如何获取pod.Status并且发现pod.Status.Phase有用 ( docs )。例如,我可以使用以下命令输出所有 Pod 的 Pod 状态阶段:
但是,phase它有点简单,因为它只显示 5 个值(Pending、Running、Succeeded、Failed、Unknown)。我宁愿获得与kubectl get podsStatus 列中相同的信息,例如:
Init:0/1特别是,我对PodInitializing状态感兴趣。处于这些状态的 Pod 在使用 时只会显示为“Pending” pod.Status.Phase。
Init:0/1表示 Pod 有 1 个 Init 容器,到目前为止 0 个已成功完成。init 容器在应用容器启动之前运行。PodInitializing表示 Pod 已经完成了 Init Containers 的执行。
有没有办法获得状态,例如Init:0/1using k8s.io/client-go/kubernetes?还是没有捷径,我需要像 kubectl 一样重新计算它?我猜它使用 Pod 状态条件和容器状态来构建信息。如果我需要重新计算它,也许我可以使用kubectl 源代码?有谁知道我在哪里可以找到相关位?(我的golang经验非常有限)
go - 使用 Kubernetes go-client 向 Pod 添加标签的最短方法是什么
我有一个演示 golang 程序来列出没有特定标签的 Pod。我想对其进行修改,以便它也可以为每个 pod 添加一个标签。
(我使用的是 AWS 托管的 Kubernetes 服务 EKS,所以有一些特定于 EKS 的样板代码)
我知道 kubectl 可以用来添加标签,例如
我希望通过 go-client 有一个等效的方法?
kubernetes - 使用 k8s client-go 获取命名空间配额
我正在寻找一种使用 client-go 获取命名空间资源配额的方法,类似于kubectl describe ns my-namespace-name.
我已经尝试过ns, err := k8client.CoreV1().Namespaces().Get("my-namespace-name", metav1.GetOptions{}),但它没有提供配额信息。
也尝试过ns, err := k8client.CoreV1().ResourceQuotas("my-namespace-name").Get("name", metav1.GetOptions{}),但我不知道name在.Get() 中将什么作为参数。尝试了命名空间名称,尝试了https://kubernetes.io/docs/reference/kubectl/overview/#resource-types中的几种资源类型,但没有遇到类似resourcequotas "namespaces" not found或
resourcequotas "limits.cpu" not found
也试过ns, err := k8client.CoreV1().ResourceQuotas("my-namespace-name").List(metav1.ListOptions{})了,但没有返回结果。
任何关于如何获得它的想法将不胜感激!
kubernetes - 如何让运行在 pod 中的代码知道它的 pod 名称
我有一些在 pod 内运行的 go 程序。我将如何编写代码以使用 go-client 库让它知道其 pod 名称?
kubernetes - Kubernetes API 调用是否是秘密更新和 configmap 更新原子调用?
client.Secrets(namespace).Update(secret) 是原子调用吗?如果此调用以某种方式失败,存储在 Kubernetes API 服务器中的原始机密是否会损坏?
同样, core.ConfigMaps(namespace).Update(configmap) 是原子调用吗?如果此调用失败,现有的 configmap 是否会损坏?
kubernetes - Kubernetes client-go:watch.Interface vs. cache.NewInformer vs. cache.NewSharedIndexInformer?
我需要我的 Go 应用程序来监控 Kubernetes 集群中的一些资源并对它们的变化做出反应。基于大量文章和示例,我似乎找到了一些方法来做到这一点;但是,我对 Kubernetes 比较陌生,而且它们的描述对我来说太复杂了,以至于我仍然无法掌握它们之间的区别——因此,要知道使用哪一个,所以我不要出现一些意想不到的行为......特别是:
watch.Interface.ResultChan()—(通过 eg 获得rest.Request.Watch())— 这似乎已经让我通过提供 // 事件来对资源发生的变化做出Added反应;ModifiedDeletedcache.NewInformer()— 当我实现 a 时cache.ResourceEventHandler,我可以将它作为最后一个参数传递:— 然后,该
myHandler对象将接收//OnAdd()调用。OnUpdate()OnDelete()对我来说,这似乎或多或少等同于
ResultChan我在上面的(1.)中得到的;一个区别是,显然现在我得到了资源的“之前”状态作为奖励,而ResultChan我只会得到它的“之后”状态。另外,IIUC,这实际上是建立在
watch.Interface上面提到的(通过NewListWatchFromClient)之上的——所以我想它带来了一些价值,和/或修复了 raw 的一些(什么?)缺陷watch.Interface?cache.NewSharedInformer()并且cache.NewSharedIndexInformer()—— (呃哇,现在这些都是满口的......)我试图深入研究 godocs,但我觉得完全被我不理解的术语所淹没,以至于我似乎无法掌握其中的微妙之处(?)“常规”NewInformer与...之间的差异NewSharedInformer。NewSharedIndexInformer
有人可以帮我理解Kubernetes client-go 包中上述 API 之间的区别吗?
go - 无法在 Kubernetes Go 客户端中覆盖 Kubernetes 配置
我想使用 Kubernetes Go 客户端在集群中执行各种操作。我正在加载kubeconfig包含多个集群和上下文的本地。默认上下文是prod,我要覆盖的配置值之一是CurrentContext
当我检查RawConfig()当前上下文时仍然是“prod”而不是“stage”。为什么配置覆盖不起作用?
另外 AuthInfo 等的覆盖是如何工作的?覆盖只接受一个AuthInfo,而配置包含一个AuthInfo等的映射。
GitHub 相关问题https://github.com/kubernetes/client-go/issues/735
go - 将 CreationTimeStamp 类型转换为字符串
我正在获取时间pod.CreationTimeStamp并尝试将其存储在变量中。我如何将时间存储到字符串中。
它给出了这个错误:cannot convert pod.ObjectMeta.CreationTimestamp (type "k8s.io/apimachinery/pkg/apis/meta/v1".Time) to type string
go - 使用 Kubernetes Go 客户端的部署列表的返回类型
当我尝试运行此代码时,它给出了错误:
语法错误:意外文字“k8s.io/api/apps/v1”,预期类型
我想使用 deploymnets 函数返回部署列表。我不知道要使用什么返回类型,以便我成功返回部署列表。
