我正在尝试在本地 Kubernetes 集群上设置 Knative(没有外部 IP)。
Kubernetes: v1.28
Knative: v1.13
1 master node and 2 workers
https://knative.dev/docs/install/yaml-install/serving/install-serving-with-yaml/
在配置 DNS 部分,我选择了无 DNS,因为 Magic DNS 需要外部 IP。现在注册函数后我无法通过 HTTP 请求调用它。
$ kubectl get kservice fibonacci-single -n knative-serverless
NAME URL LATESTCREATED LATESTREADY READY REASON
fibonacci-single http://fibonacci-single.knative-serverless.svc.cluster.local fibonacci-single-00001 fibonacci-single-00001 True
我还尝试创建私有集群本地服务。 https://knative.dev/docs/serving/services/private-services/
curl http://fibonacci-single.knative-serverless.svc.cluster.local
curl: (6) Could not resolve host: fibonacci-single.knative-serverless.svc.cluster.local
我无法使用外部IP。我如何访问我的功能?
用 Knative 的话来说,实施 IPv6 以及带有“真实 DNS”的您自己的域名。
Kubernetes 支持 IPv6,这些 Knative 文档为多个 Kubernetes 入口选项提供了参考。当然有一种方法可以让服务地址使用现代IP。
默认域,即通过 sslip.io 提供的“magic DNS”,是生产用例中不必要的演示。显然它使用了 IP 地址嵌入式名称服务?我认为这是为了不使用 IP 地址主题进行证书而进行的。如果您没有“外部”IP,那么任何 IPv6 都没有任何好处。
使用您的域名和通配符,解析为入口。.local 是为 mDNS 保留的,这里不要使用它。
当然,如果服务不打算供 Internet 使用,则不要使名称可解析或 IP 可路由。但是,您仍然可以执行适当的命名服务。组成值,也许
*.knative.example.net
在您的私有 DNS 中解析为 的入口2001:db8:115:5995::285
。此 v6 网络会根据您所需的安全策略在防火墙处进行过滤。我尝试使用此处解释的 Magic DNS 设置网络。我相信官方安装指南中没有提供这一点。
现在无需域名和外部 IP 即可运行:
curl http://fibonacci-single.knative-serverless.10.96.30.55.nip.io?x=1000