无法通过 envtest 的内部 IP 访问 k8s pod

时间:2021-01-15 16:29:08

标签: testing kubernetes devops kubernetes-operator kubernetes-networking

我使用 envtest 和本地 Minikube 集群为我的 Kubernetes 操作员编写了一个集成测试。

我正在测试的控制器正在通过 IP 地址向其中一个 Pod 发出 http 请求。 我得到的地址是这样的:

endpoints := &corev1.Endpoints{}
client.Get(context.TODO(), types.NamespacedName{Namespace: "ns", Name: "cluster"}, endpoints)
url = fmt.Sprintf("%s:%s", endpoints.Subsets[0].Addresses[0].IP, "8081")

如果我将操作员部署到 Kubernetes 集群,则此代码有效。

但是在运行测试时出现错误:

Post \"http://172.17.0.3:8081": dial tcp 172.17.0.3:8081: connect: no route to host

这是因为之前 http 调用是从 pod 与操作员进行的,但现在来自 envtest?

如何正确编写控制器测试?

1 个答案:

答案 0 :(得分:0)

我的解决方法:

我使用 this 示例将端口转发到目标 pod。

为了让代码转到 localhost,我会稍微修改一下。