问题标签 [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 投票
0 回答
997 浏览

go - 当我使用客户端去 kubernetes 监视列表时的一些问题

当我使用 StackOverflow 中的代码时,我有一些。如

它有一些错误:

  1. 我找不到包裹"k8s.io/client-go/pkg/api/v1""k8s.io/client-go/pkg/fields"我不知道如何找到它:

    https://github.com/kubernetes/client-go

  2. 编码

有错误:

无法使用“clientSet.CoreV1().RESTClient()”(类型 rest.Interface)作为类型 Getter 类型不实现“Getter”,因为缺少某些方法:Get() *restclient.Request

谁能告诉我如何解决它?提前致谢。

0 投票
1 回答
150 浏览

kubernetes - 将 K8s yaml 规范解析为 client-go 数据结构

我写了一些代码但它不起作用,似乎client-go不支持将K8s yaml规范解析为client-go数据结构,谁能告诉我该怎么做。

0 投票
2 回答
4986 浏览

go - 在单个 YAML 文件中使用多种类型直接针对 Kubernetes API 使用 client-go 到 `kubectl apply`

我正在使用https://github.com/kubernetes/client-go并且一切正常。

我有官方 Kubernetes 仪表板的清单 (YAML):https ://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml

我想kubectl apply在 Go 代码中模仿这个清单,使用 client-go。

我知道我需要将 YAML 字节编组到包中定义的正确 API 类型中:https ://github.com/kubernetes/api

我已经成功地Create将单个 API 类型编辑到我的集群中,但是如何为包含不同类型列表的清单执行此操作?是否有kind: List*支持这些不同类型的资源?

我目前的解决方法是使用csplitwith --- 作为分隔符来拆分 YAML 文件

接下来,我循环创建新的 (14) 部分,读取它们的字节,打开 UniversalDeserializer 解码器返回的对象类型,并使用我的 k8s 客户端集调用正确的 API 方法。

我想以编程方式执行此操作,以将仪表板的任何新版本更新到我的集群中。我还需要为 Metrics Server 和许多其他资源执行此操作。另一种(可能更简单)的方法是将安装了 kubectl 的代码发送到容器映像并直接调用kubectl apply -f -; 但这意味着我还需要将 kube 配置写入磁盘,或者内联传递它,以便 kubectl 可以使用它。

我发现这个问题很有帮助:https ://github.com/kubernetes/client-go/issues/193 解码器住在这里:https ://github.com/kubernetes/apimachinery/tree/master/pkg/runtime/串行器

它在 client-go 中公开:https ://github.com/kubernetes/client-go/blob/master/kubernetes/scheme/register.go#L69

我还查看了 kubectl 使用的 RunConvert 方法:https ://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/convert/convert.go#L139并假设我可以提供我自己的genericclioptions.IOStreams来获取输出吗?

看起来 RunConvert 处于弃用路径

我还查看了标记为 [client-go] 的其他问题,但大多数使用旧示例或使用带有单个kind定义的 YAML 文件,此后 API 发生了变化。

编辑:因为我需要为多个集群执行此操作,并且正在以编程方式创建集群(AWS EKS API + CloudFormation/ eksctl),所以我想尽量减少ServiceAccount跨多个 AWS 账户创建跨多个集群上下文的开销。理想情况下,创建我的客户端集所涉及的唯一身份验证步骤是使用aws-iam-authenticator使用集群数据(名称、区域、CA 证书等)获取令牌。有一段时间没有发布aws-iam-authenticator,但是内容master允许使用第三方角色跨账户角色和外部ID传递。IMO,这比使用ServiceAccount(和IRSA) 因为应用程序(创建附加组件并将其应用到这些集群的后端 API)需要与之交互的其他 AWS 服务。

编辑:我最近发现了https://github.com/ericchiang/k8s。在高层次上,它绝对比 client-go 更简单,但不支持这种行为。

0 投票
2 回答
1444 浏览

kubernetes - kubernetes Client-go kubectl rollout 示例

谁能给我一个关于如何使用的例子

在客户端去?我找不到任何关于它的例子。谢谢~

0 投票
1 回答
327 浏览

go - 带有客户端 Go 资源的 MarshalYAML

我正在用 CRD 编写一个k8s 运算符。该资源的状态字段的一部分是枚举值,使用 iota 如下:

我有一个附加到枚举的函数,将其转换为字符串表示形式。当客户端将枚举编组到状态 yaml 时,我希望将该字符串表示形式用作值。

但是,当我实现时MarshalYAML(就像我在这个操场上所做的那样:https: //play.golang.org/p/qtfFNoOQ-Dz),客户端 go 返回一个错误:

status.test.phase是枚举的位置)

如果没有该函数,它会正确编组,而只是使用整数值。

gopkg.in/yaml.v2在操场上(运行良好)和客户端 go 的编组系统之间有什么不同?

0 投票
3 回答
592 浏览

go - 通过client-go在端口转发中升级连接错误

这是我编写的代码的一个易于运行的版本,用于通过 client-go 进行端口转发。有硬编码的 pod 名称、命名空间和端口。你可以用你正在运行的那个来改变它们。

版本 golang 1.13:

我得到的错误是

升级连接出错:

但是之后什么都没有:。你对这个话题有什么经验吗?谢谢

0 投票
0 回答
95 浏览

kubernetes - 我可以使用 client-go 来获取 kubelet 信息,例如“ps -ef | grep kubelet”吗?

我可以使用 client-go 来获取 kubelet 信息ps -ef | grep kubelet吗?谢谢~

0 投票
1 回答
2417 浏览

kubernetes - Helm 从 pod 内部使用“x509:由未知机构签名的证书”获取错误

我正在尝试使用 client-go 编写一个 helm 操作符,并希望使用RepoURLchartname从我的控制器中获取图表。我编写了一段示例代码,在我的本地机器上运行良好。但是当我在容器内运行相同的代码时,相同的代码会引发错误。请找到以下代码:

上述函数在获取 chartURL 时抛出以下错误:

我知道它要求一些 ca 证书,但我不确定哪个 ca 证书,因为我已经初始化了没有 tls 证书的 helm。

我还尝试在 pod 中复制 helm 二进制文件并尝试运行:

我在那里也面临同样的问题。有没有人遇到过类似的问题?

0 投票
1 回答
49 浏览

kubernetes - 如何通过 Client-go 为 kubernetes Loadbalancer Service 设置 EXTERNAL-IP?

我想通过client-go自定义一个负载均衡器控制器,现在我只是尝试为服务设置一个地址,但它不起作用。这是我的代码:</p>

然后我得到服务配置,没有设置ip。

如何为 LoadBalancer 服务设置 ip?

0 投票
2 回答
9669 浏览

kubernetes - 如何使用 Kubernetes fieldSelector 查询 ownerReferences

Kubernetes GET API 是否真的支持fieldSelector参数来查询数组字段的值?

例如,我有一个像这样的 Pod:

我可以做类似的事情:

此命令失败 ( field label not supported: metadata.ownerReferences.uid)。我怀疑原因是ownerReferences数组字段本身。我也尝试过,但没有奏效:

  • metadata.ownerReferences[*].uid=
  • metadata.ownerReferences[].uid=

我可能会尝试用于 Kubernetes API 的 client-go SDK,但我怀疑出于同样的原因它不会工作。

有没有一种服务器端的方式来查询?非常感谢。