双栈集群切换webhook服务为ipFamily=IPv6时准入审核请求失败

问题描述

我一直在尝试在我的 v1.18.2 k8s 双栈集群中将 Istio 控制平面部署为 IPv6 服务。 Istio 目前不支持这一点,但据我所知,没有理由不支持

作为应用程序启动的一部分,istiod 尝试通过试运行创建无效资源并期望来自 apiserver 的回调来测试验证 webhook,然后它会拒绝。不幸的是,当我将 public final void runOnUiThread(Runnable action) { if (Thread.currentThread() != mUiThread) { mHandler.post(action); } else { action.run(); } } 字段添加到 istiod 服务规范时,验证 webhook 开始失败,或者说超时,并且应用程序没有收到回调。

我已确保 istiod ipFamily: IPv6 端点在 IPv4 和 IPv6 情况下均可从其他 pod 访问。当它是 IPv6 时,似乎只有 apiservers 无法(?)连接到 webhook 服务。

在这种情况下,apiserver 日志会重复以下几行,因为 istiod 会继续尝试创建无效的 CR:

/validate

有人能想出当 webhook 服务作为 IPv6 运行时准入审查请求可能超时的原因吗?

编辑:admissionReview 请求是否直接从 apiserver pod 发送? 我刚刚发现,至少在我的集群中,apiserver pod 没有 IPv4 和 IPv6 地址。这当然会使发送 IPv6 请求出现问题。

我部署的所有 Pod 通常都会获得任一 IP 系列的地址。 apiserver 预计会有所不同,还是我正在考虑可能/可能的错误配置?

$ k logs -n kube-system -lcomponent=kube-apiserver -f
I0122 14:47:28.493919       1 trace.go:116] Trace[1294786590]: "Call validating webhook" configuration:istiod-istio-system,webhook:validation.istio.io,resource:networking.istio.io/v1alpha3,Resource=gateways,subresource:,operation:CREATE,UID:47fc868c-ba8f-4c11-838e-d6fa805f0bad (started: 2021-01-22 14:46:58.492968374 +0000 UTC m=+254615.394818866) (total time: 30.000780641s):
Trace[1294786590]: [30.000780641s] [30.000780641s] END
W0122 14:47:28.494133       1 dispatcher.go:128] Failed calling webhook,failing open validation.istio.io: Failed calling webhook "validation.istio.io": Post https://istiod.istio-system.svc:443/validate?timeout=30s: context deadline exceeded
E0122 14:47:28.494271       1 dispatcher.go:129] Failed calling webhook "validation.istio.io": Post https://istiod.istio-system.svc:443/validate?timeout=30s: context deadline exceeded
I0122 14:47:28.514005       1 trace.go:116] Trace[1064104022]: "Create" url:/apis/networking.istio.io/v1alpha3/namespaces/istio-system/gateways,user-agent:pilot-discovery/v0.0.0 (linux/amd64) kubernetes/$Format,client:10.117.142.10 (started: 2021-01-22 14:46:58.48938819 +0000 UTC m=+254615.391238690) (total time: 30.024481551s):
Trace[1064104022]: [30.023708536s] [30.022993263s] Object stored in database

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)