问题标签 [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.
go - 当我使用客户端去 kubernetes 监视列表时的一些问题
当我使用 StackOverflow 中的代码时,我有一些。如
它有一些错误:
我找不到包裹
"k8s.io/client-go/pkg/api/v1"
,"k8s.io/client-go/pkg/fields"
我不知道如何找到它:编码
有错误:
无法使用“clientSet.CoreV1().RESTClient()”(类型 rest.Interface)作为类型 Getter 类型不实现“Getter”,因为缺少某些方法:Get() *restclient.Request
谁能告诉我如何解决它?提前致谢。
kubernetes - 将 K8s yaml 规范解析为 client-go 数据结构
我写了一些代码但它不起作用,似乎client-go不支持将K8s yaml规范解析为client-go数据结构,谁能告诉我该怎么做。
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*
支持这些不同类型的资源?
我目前的解决方法是使用csplit
with --- 作为分隔符来拆分 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来获取输出吗?
我还查看了标记为 [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 更简单,但不支持这种行为。
kubernetes - kubernetes Client-go kubectl rollout 示例
谁能给我一个关于如何使用的例子
在客户端去?我找不到任何关于它的例子。谢谢~
go - 带有客户端 Go 资源的 MarshalYAML
我正在用 CRD 编写一个k8s 运算符。该资源的状态字段的一部分是枚举值,使用 iota 如下:
我有一个附加到枚举的函数,将其转换为字符串表示形式。当客户端将枚举编组到状态 yaml 时,我希望将该字符串表示形式用作值。
但是,当我实现时MarshalYAML
(就像我在这个操场上所做的那样:https: //play.golang.org/p/qtfFNoOQ-Dz),客户端 go 返回一个错误:
(status.test.phase
是枚举的位置)
如果没有该函数,它会正确编组,而只是使用整数值。
gopkg.in/yaml.v2
在操场上(运行良好)和客户端 go 的编组系统之间有什么不同?
go - 通过client-go在端口转发中升级连接错误
这是我编写的代码的一个易于运行的版本,用于通过 client-go 进行端口转发。有硬编码的 pod 名称、命名空间和端口。你可以用你正在运行的那个来改变它们。
版本 golang 1.13:
我得到的错误是
升级连接出错:
但是之后什么都没有:
。你对这个话题有什么经验吗?谢谢
kubernetes - 我可以使用 client-go 来获取 kubelet 信息,例如“ps -ef | grep kubelet”吗?
我可以使用 client-go 来获取 kubelet 信息ps -ef | grep kubelet
吗?谢谢~
kubernetes - Helm 从 pod 内部使用“x509:由未知机构签名的证书”获取错误
我正在尝试使用 client-go 编写一个 helm 操作符,并希望使用RepoURL和chartname从我的控制器中获取图表。我编写了一段示例代码,在我的本地机器上运行良好。但是当我在容器内运行相同的代码时,相同的代码会引发错误。请找到以下代码:
上述函数在获取 chartURL 时抛出以下错误:
我知道它要求一些 ca 证书,但我不确定哪个 ca 证书,因为我已经初始化了没有 tls 证书的 helm。
我还尝试在 pod 中复制 helm 二进制文件并尝试运行:
我在那里也面临同样的问题。有没有人遇到过类似的问题?
kubernetes - 如何通过 Client-go 为 kubernetes Loadbalancer Service 设置 EXTERNAL-IP?
我想通过client-go自定义一个负载均衡器控制器,现在我只是尝试为服务设置一个地址,但它不起作用。这是我的代码:</p>
然后我得到服务配置,没有设置ip。
如何为 LoadBalancer 服务设置 ip?
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,但我怀疑出于同样的原因它不会工作。
有没有一种服务器端的方式来查询?非常感谢。