连接时 Minikube 入口挂起

问题描述 投票:0回答:1

我已使用

minikube addons enable ingress
添加了入口,并验证了它正在运行:

$ kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-pzhzn        0/1     Completed   0          53m
ingress-nginx-admission-patch-k9xdn         0/1     Completed   0          53m
ingress-nginx-controller-7c6974c4d8-rkcrp   1/1     Running     0          53m

然后我得到 minikube ip:

$ minikube ip
192.168.49.2

这是我的部署/服务/入口定义:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: karpenter-test-deployment
  labels:
    app: karpenter-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: karpenter-test
  template:
    metadata:
      labels:
        app: karpenter-test
    spec:
      containers:
      - name: karpenter-test-manager
        image: localhost/test-karpenter-manager:latest
        imagePullPolicy: Never
        ports:
        - containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
  name: karpenter-test-service
spec:
  selector:
    app: karpenter-test
  ports:
    - protocol: TCP
      port: 8000
      targetPort: 8000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: karpenter-test-service
            port:
              number: 8000

我可以验证它是否正在运行,因为它显示在 Pod 中:

$ kubectl get pods -o wide
NAME                                        READY   STATUS    RESTARTS   AGE   IP           NODE       NOMINATED NODE   READINESS GATES
karpenter-test-deployment-945ff8f95-fbv24   1/1     Running   0          95m   10.244.0.3   minikube   <none>           <none>

但是当我尝试在浏览器中转到

http://192.168.49.2/api
时,它只是无限期地挂起。为了完全确定,我直接公开了该服务:

$ kubectl port-forward service/karpenter-test-service 8000:8000
Forwarding from 127.0.0.1:8000 -> 8000
Forwarding from [::1]:8000 -> 8000
Handling connection for 8000

然后我就可以访问

http://localhost:8000/api
的服务了。

为什么当我尝试直接访问入口时它总是挂起?

kubernetes kubernetes-ingress minikube nginx-ingress
1个回答
0
投票

您描述的行为可能是因为使用 Docker 驱动程序时,

ingress
ingress-dns
附加组件目前仅支持 由于 Linux 系统(而非 MacOS)上的一些复杂性,如已知问题中所述minikube 文档的部分。

您还可以尝试使用此解决方法在 MacOS 上公开服务。

© www.soinside.com 2019 - 2024. All rights reserved.