无法在 minikube 中创建扳手实例模拟器

Can't create spanner instance emulator in minikube

在本地环境中,使用spanner的docker模拟器创建开发工具。

如果使用minikube,运行它的docker在kubernetes环境下,可以启动它的容器

minikube start
eval $(minikube docker-env)
docker run -p 9010:9010 -p 9020:9020 gcr.io/cloud-spanner-emulator/emulator

但是无法通过gcloud命令创建实例

gcloud spanner instances create test-env --config=emulator-config --description="Local dev instance" --nodes=1

它变成了待处理。

当使用没有 minikube 的环境时,我可以启动 docker 并创建一个实例

docker run -p 9010:9010 -p 9020:9020 gcr.io/cloud-spanner-emulator/emulator
gcloud spanner instances create test-env --config=emulator-config --description="Local dev instance" --nodes=1
gcloud spanner instances list

在 minikube 的 docker-env 下似乎不能 运行 gcloud spanner 命令。为什么?

执行 eval $(minikube docker-env) 配置环境以使用 minikube 的 Docker 守护进程 (https://minikube.sigs.k8s.io/docs/commands/docker-env/)。

因此,模拟器 运行 docker 域“内部”,即 运行 minikube 集群“内部”。

您可以通过使用 ssh minikube sshing 进入 minikube 集群来查看 运行 进程列表来验证这一点。然后,您可以对 http://localhost:9020/v1/projects/test-project/instances 进行卷曲,这应该会立即 return 结果。

这似乎是因为端口没有被公开。

默认情况下,minikube 只暴露端口 30000-32767。您可以通过以下方式更改它:

minikube start --extra-config=apiserver.service-node-port-range=1-65535

https://minikube.sigs.k8s.io/docs/handbook/accessing/#increasing-the-nodeport-range