如何从外部访问在 EC2 的 Minikube 中部署为 NodePort 的服务
How to access a service deployed as NodePort in Minikube in EC2 from outside
我已经在 EC2 Linux 实例中安装了 minikube。
Minikube IP : 192.168.49.2,
EC2 Instance IP: 10.X.X.X
我已将应用程序部署为 NodePort 服务类型,其中
port: 80
targetPort: 80
nodePort: 32768
and able to access it with curl http://192.168.49.2:32768 within the cluster.
我应该如何将此应用程序暴露给外界?
如果可以选择端口转发,那么我尝试了以下方法:
kubectl port-forward --address <InstanceIP> svc/my-service 8888:80
这总是报错:
Unable to listen on port 5000:
Listeners failed to create with the following errors:
[unable to create listener] error:
unable to listen on any of the requested ports: [{8888 80}]
我确定 8888 端口上没有服务 运行。
kubectl port-forward --address <InstanceIP> svc/my-service 8888:32768
这表示,错误:
Service my-service does not have a service port 32768.
感谢任何帮助
How should I expose this application to the outside world?
你应该使用 Service
和 type: LoadBalancer
LoadBalancer
会给你一个外部 IP,允许你从集群外部连接到它。
如果您只需要它进行测试,这就是您使用 minikube
的原因,那么端口转发应该满足要求。
将 LoadBalancer
与 minikube
结合使用
为了在 minikube 中使用 LoadBalanacer
你应该打开一个新终端并执行 minikube tunnel
# Port forward to the desired service,
# dont forget to add the namespace if any
#
# You should forward to port 80 which is the port defined in your service
# port : 80
# targetPort : 80
kubectl port-forward svc/my-service 8888:80 -n <namespace>
# As you mentioned you tried it already and it's not working
# so follow below and try to expose your service with
kubectl expose
现在您应该可以连接到您的服务了。
这是生成 Service
的完整示例
https://github.com/nirgeier/KubernetesLabs/tree/master/Labs/02-Deployments-Imperative
示例使用
动态生成 Service
kubectl expose deployment -n codewizard multitool --port 80 --type NodePort
我已经在 EC2 Linux 实例中安装了 minikube。
Minikube IP : 192.168.49.2,
EC2 Instance IP: 10.X.X.X
我已将应用程序部署为 NodePort 服务类型,其中
port: 80
targetPort: 80
nodePort: 32768
and able to access it with curl http://192.168.49.2:32768 within the cluster.
我应该如何将此应用程序暴露给外界?
如果可以选择端口转发,那么我尝试了以下方法:
kubectl port-forward --address <InstanceIP> svc/my-service 8888:80
这总是报错:
Unable to listen on port 5000:
Listeners failed to create with the following errors:
[unable to create listener] error:
unable to listen on any of the requested ports: [{8888 80}]
我确定 8888 端口上没有服务 运行。
kubectl port-forward --address <InstanceIP> svc/my-service 8888:32768
这表示,错误:
Service my-service does not have a service port 32768.
感谢任何帮助
How should I expose this application to the outside world?
你应该使用 Service
和 type: LoadBalancer
LoadBalancer
会给你一个外部 IP,允许你从集群外部连接到它。
如果您只需要它进行测试,这就是您使用 minikube
的原因,那么端口转发应该满足要求。
将 LoadBalancer
与 minikube
结合使用
为了在 minikube 中使用 LoadBalanacer
你应该打开一个新终端并执行 minikube tunnel
# Port forward to the desired service,
# dont forget to add the namespace if any
#
# You should forward to port 80 which is the port defined in your service
# port : 80
# targetPort : 80
kubectl port-forward svc/my-service 8888:80 -n <namespace>
# As you mentioned you tried it already and it's not working
# so follow below and try to expose your service with
kubectl expose
现在您应该可以连接到您的服务了。
这是生成 Service
https://github.com/nirgeier/KubernetesLabs/tree/master/Labs/02-Deployments-Imperative
示例使用
动态生成Service
kubectl expose deployment -n codewizard multitool --port 80 --type NodePort