Docker 如何创建Kubernetes入口以使用SparkJava端口4567?

Docker 如何创建Kubernetes入口以使用SparkJava端口4567?,docker,kubernetes,kubernetes-ingress,Docker,Kubernetes,Kubernetes Ingress,我创建了一个基于Java的web服务,它利用SparkJava。默认情况下,此web服务绑定并侦听端口4567。我的公司要求将其放在Docker容器中。我创建了一个Dockerfile并创建了图像,当我运行时,我暴露了端口4567 docker run -d -p 4567:4567 -t myservice 我可以调用我的web服务来测试调用CURL命令 curl -i -X "POST" -H "Content-Type: application/json" -d "{}" "http:/

我创建了一个基于Java的web服务,它利用SparkJava。默认情况下,此web服务绑定并侦听端口4567。我的公司要求将其放在Docker容器中。我创建了一个Dockerfile并创建了图像,当我运行时,我暴露了端口4567

docker run -d -p 4567:4567 -t myservice
我可以调用我的web服务来测试调用CURL命令

curl -i -X "POST" -H "Content-Type: application/json" -d "{}" "http://localhost:4567/myservice"
kubectl cluster-info
。。。这是有效的。然后我的公司说它想把这个放到亚马逊EKS Kubernetes上,所以我把我的Docker形象发布到公司的私人Dockerhub上。我创建了三个yaml文件

  • 部署.yaml
  • 服务中心
  • 亚马尔酒店
我看到我的对象被创建了,我可以在Kubernetes中运行一个/bin/bash命令行到我的容器,从那里测试本地主机对我的服务的访问是否正常工作,包括对外部web服务资源的引用,所以我知道我的服务是好的

我被入口弄糊涂了。我需要公开一个URI来访问我的服务,我不确定这应该如何工作。许多示例都显示了如何使用NGINX,但我没有使用NGINX

这是我的文件和我到目前为止测试的内容。感谢您的指导

服务中心 部署.yaml 亚马尔酒店 当我运行命令时

kubectl get ingress my-api-ingress
kubectl get service my-api-service
。。。显示

NAME                    HOSTS   ADDRESS   PORTS   AGE
my-api-ingress          *                 80      9s
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
my-api-service          ClusterIP   172.20.247.225   <none>        4567/TCP   16h
当我运行命令时

kubectl get ingress my-api-ingress
kubectl get service my-api-service
。。。显示

NAME                    HOSTS   ADDRESS   PORTS   AGE
my-api-ingress          *                 80      9s
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
my-api-service          ClusterIP   172.20.247.225   <none>        4567/TCP   16h
。。。我明白了

Kubernetes master is running at https://12CA0954AB5F8E1C52C3DD42A3DBE645.yl4.us-east-1.eks.amazonaws.com
因此,我试图通过发出

curl -i -X "POST" -H "Content-Type: application/json" -d "{}" "http://12CA0954AB5F8E1C52C3DD42A3DBE645.yl4.us-east-1.eks.amazonaws.com:4567/myservice"
一段时间后,我收到一个超时错误

curl: (7) Failed to connect to 12CA0954AB5F8E1C52C3DD42A3DBE645.yl4.us-east-1.eks.amazonaws.com port 4567: Operation timed out
我相信我的ingress是错误的,但我很难找到非NGINX的例子进行比较

思想?

巴利皮克

您的服务应该是“类型:NodePort” 这个例子非常相似(但是在GKE中进行了测试)

在ingress
kubectl get ingress
中,您应该看到一个外部ip地址


您可以找到特定的AWS实现。此外,有关公开服务的更多信息,您可以找到

查看入口格式。您安装了哪个入口控制器?@CharlesXu-我们使用的是AWS EKS。不确定安装了哪个入口控制器。我如何确定安装了哪个入口控制器?您可以通过code
kubectl get deploy--all namespace
获得所有部署,然后您可以查看nginx入口是否已经存在。