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

go - 无法从客户端连接到 kubectl - /serviceaccount/token:没有这样的文件

我正在使用 golang lib client-go连接到正在运行的本地 kubrenets。首先,我从示例中获取代码:out-of-cluster-client-configuration

运行这样的代码: $ KUBERNETES_SERVICE_HOST=localhost KUBERNETES_SERVICE_PORT=6443 go run ./main.go导致以下错误:

我不太确定我缺少配置的哪一部分。我研究了以下链接:

但没有运气。我想我需要让客户端知道要使用哪个令牌/服务帐户,或者以每个人都可以连接到它的 api 的方式配置 kubectl。

这是我的 kubectl 的状态,虽然有一些命令结果:

$ kubectl 配置视图

$ kubectl 获取服务帐户

$ kubectl 描述 serviceaccount 测试用户

$ kubectl 获取秘密 test-user-token-hxcsk -o yaml

0 投票
2 回答
1015 浏览

kubernetes - 如何使用 client-go 获取有关节点创建的 AWS 元数据

我正在为我们的 kubernetes 集群编写自定义控制器,它将监听节点事件并在节点上执行一些操作。我正在使用 kubernetes client-go 库,并且能够在连接或删除节点时捕获 kubernetes 事件从集群。但是是否可以获得已创建的 Kubernetes 节点的 AWS 实例详细信息,例如实例 ID、标签等?提前致谢。

PS:我已经使用kops安装了kubernetes集群

0 投票
3 回答
4109 浏览

go - 如何使用 kubernetes client-go 将文件复制到容器?

我想使用https://github.com/kubernetes/client-go将文件从我的文件系统复制到容器,反之亦然。

go 客户端中是否有包装调用的函数?或者我可以使用类似RESTClient的东西吗?

0 投票
0 回答
719 浏览

go - go中如何使用runtime.Object创建CRD泛型函数

我正在编写一个 Kubernetes 控制器,在其中我需要在不同类型的资源上运行一个函数,包括我的自定义资源和其他类型的资源(这个函数只对资源名称感兴趣)。

我的理解是这是可行的,runtime.Object但我无法让它工作。
这是函数签名:

调用该函数时,我传递了一个类型化对象,并期望它可以分配给runtime.Object

我收到编译器错误:

查看 的定义runtime.Object

MyCRD类型是嵌入metav1.TypeMeta的,因此它具有所需的GetObjectKind()功能。

它还注释:

所以它也有所需的DeepCopyObject()(在生成的文件中可以看到)。

我已经为此苦苦挣扎了一段时间,我认为这可能与注册类型有关,scheme但我不确定它是如何工作的,也找不到任何文档。我尝试从我发现的其他项目中复制类型注册代码,但并没有真正理解它的作用(正如我所说,找不到关于此的文档).. 仍然不起作用。


有关的:

0 投票
2 回答
1843 浏览

go - 如何使用客户端 go 库检查 kubernetes 作业是成功还是失败

图书馆里有很多字段,但基本上都是关于工作是否完成,但是如何检查工作是否完成并成功或工作是否完成和失败

这就是我现在检查的方式,我不完全确定这是正确的

0 投票
2 回答
3457 浏览

go - What's the best way to get notified when kubernetes Deployments change using the k8s.io/client-go library?

Context

I'm writing a script that uses the k8s.io/client-go library (godocs here) to manipulate Deployments. In particular, I want to add a label selector to every Deployment in my cluster. Deployment label selectors are immutable. So my approach is to:

  1. Create a copy of each Deployment with the only difference being the name is suffixed with "-temp". This is to minimize downtime of existing Deployments.
  2. Delete the original Deployments.
  3. Recreate the original Deployments with the only difference being an additional label selector.
  4. Delete the temporary Deployments.

I can't just use the client-go library to go through steps 1-4 sequentially because I only want to go onto the next step when the API server considers the previous step to be done. For example, I don't want to do step 3 until the API server says the original Deployments have been deleted. Otherwise, I'll get the error that the Deployment with the same name already exists.

Question

What's the best way to use the client-go library to detect when a Deployment is done being created and deleted and to attach callback functions? I came across the following packages.

But I'm not sure what the differences are between them and which one to use.

I read examples of watch here and informer here. Here's two related SO questions.

Update

It seems like watch provides a lower-level way to watch for changes to resources and receive events about changes. Seems like using the SharedInformerFactory to create a SharedInformer is the way to go.

So far I have

0 投票
2 回答
6540 浏览

kubernetes - 如何使用 client-go 向 Kubernetes API 提交通用“runtime.Object”

我正在使用 AWS 的 EKS,它是 Kubernetes v1.10,我正在使用 client-go v7.0.0。

我要做的是解析一个文件中包含多个 Kubernetes 资源定义的 .yml 文件,并将这些资源提交给 Kubernetes API。我可以使用此代码成功解析文件scheme.Codecs.UniversalDeserializer().Decode,并返回一个runtime.Object.

我知道所有的 Kubernetes 资源都符合runtime.Object接口,但是我找不到将通用接口提交给 API 的方法。我见过的大多数方法都使用具体类型的方法,如 Deployment、Pod 等。

我已经看到了一些围绕这样的通用 RESTClient 的代码clientset.RESTClient().Put().Body(obj).Do(),但这不起作用,我无法弄清楚。

我知道我的客户端配置正确,因为我可以成功列出所有 Pod。

0 投票
1 回答
124 浏览

docker - kube-addon-manager 中的 kubectl 超时

我正在调试集群中的一个问题,似乎kubectlkube-addon-manager pod 内的命令超时,而等效的 curl 命令工作正常。

等效 curl 命令输出

还尝试使用主机网络模式运行 docker 容器,kubectl 命令仍然超时。

kube-addon-manager.yaml

0 投票
2 回答
614 浏览

go - 在集群配置中部署在非默认命名空间中时无法获取 pod

当我将我的 golang 服务部署到命名空间以外的任何命名default空间时,该服务无法检索任何命名空间上的 pod。default使用 golang client-go api部署在命名空间上的相同服务完美运行。

这是一个安全问题吗?

谢谢。

0 投票
2 回答
2326 浏览

kubernetes - Kubernetes client-go 创建服务和 enpdoints

我正在寻找有关如何使用 client-go API 创建/更新服务和端点的指针。似乎找不到任何有关如何执行此操作的示例或文档。

谢谢!萨蒂什