无法使用服务节点端口访问Kubernetes中的应用程序

mwg9r5ms  于 2024-01-06  发布在  Kubernetes
关注(0)|答案(1)|浏览(163)

我尝试发送请求192.168.49.2:31083,但没有成功。我正在使用Kubernetes和Docker。

kubectl expose deployment k8s-web-hello --port=3000 --type=NodePort

kubectl get service
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
k8s-web-hello   NodePort    10.109.32.222   <none>        3000:31083/TCP   9m54s
kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP          7d

minikube ip
192.168.49.2

字符串
我该怎么补救?
编辑:

minikube service k8s-web-hello

|-----------|---------------|-------------|---------------------------|
| NAMESPACE |     NAME      | TARGET PORT |            URL            |
|-----------|---------------|-------------|---------------------------|
| default   | k8s-web-hello |    3000     | http://192.168.49.2:31083 |
|-----------|---------------|-------------|---------------------------|
🏃  Starting tunnel for service k8s-web-hello.
|-----------|---------------|-------------|------------------------|
| NAMESPACE |     NAME      | TARGET PORT |          URL           |
|-----------|---------------|-------------|------------------------|
| default   | k8s-web-hello |             | http://127.0.0.1:45767 |
|-----------|---------------|-------------|------------------------|
🎉  Opening service default/k8s-web-hello in default browser...
❗  Because you are using a Docker driver on linux, the terminal needs to be open to run it.
Opening in existing browser session.


我不明白为什么我不能通过第一个URL访问Minikube虚拟机的IP地址,但第二个URL与本地IP可以?

j2datikz

j2datikz1#

参考这个官方文档,根据这个,你需要在yaml中使用“type:NodePort”来指定一个NodePort值,你只需要用这个nodeport值来做curl。
下面是示例:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app.kubernetes.io/name: MyApp
  ports:
      # By default and for convenience, the `targetPort` is set to the same value as the `port` field.
    - port: 80
      targetPort: 80
      # Optional field
      # By default and for convenience, the Kubernetes control plane will allocate a port from a range (default: 30000-32767)
      nodePort: 30007

字符串
请注意,当您使用minikube IP时,您需要通过隧道进入Minikube进行访问。
我能知道你是如何发送请求的,无论是通过 curl 或浏览与HTTP?你能分享你的yaml也可以很容易回答。

相关问题