Minikube 入口出现连接拒绝错误

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

我在 Ubuntu VM(Digital Ocean)上安装了 Minikube 实例。我还为我的部署配置了入口,但是当我卷曲主机名时,出现错误:

curl myserver.xyz
curl: (7) Failed to connect to myserver.xyz port 80: Connection refused

我的部署:

apiVersion: v1
kind: Service
metadata:
  name: echo2
spec:
  ports:
  - port: 80
    targetPort: 5678
  selector:
    app: echo2
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo2
spec:
  selector:
    matchLabels:
      app: echo2
  replicas: 1
  template:
    metadata:
      labels:
        app: echo2
    spec:
      containers:
      - name: echo2
        image: hashicorp/http-echo
        args:
        - "-text=echo2"
        ports:
        - containerPort: 5678

以及入口资源(部署在同一命名空间中):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: echo-ingress
  annotations: 
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: myserver.xyz
    http:
        paths:
        - pathType: Prefix
          path: "/"
          backend:
            service:
              name: echo1
              port:
                number: 80

我的入口是使用以下方式部署的:

 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/do/deploy.yaml

到目前为止我已经尝试过的 --> 1. 将 nginx 服务更改为 LoadBalancer :

 kubectl patch svc ingress-nginx-controller -n ingress-nginx -p '{"spec": {"type": "LoadBalancer", "externalIPs":["146.190.XXX.XXX"]}}'
  1. 检查入口状态

     kubectl get ingress
     NAME              CLASS    HOSTS              ADDRESS        PORTS   AGE
     echo-ingress      <none>   myserver.xyz       192.168.XX.X   80      2d9h
     example-ingress   nginx    hello-world.info   192.168.XX.X   80      61d
    
  2. 检查服务状态

        kubectl get svc --namespace=ingress-nginx
        NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)                      AGE
      ingress-nginx-controller             LoadBalancer   10.108.xxx.XXX   146.190.XXX.XXX   
      80:317XX/TCP,443:320XX/TCP   2d23h
      ingress-nginx-controller-admission   ClusterIP      10.101.xxx.XXX   <none>            443/TCP 2d23h
  1. 检查入口定义
kubectl describe ingress echo-ingress
Name:             echo-ingress
Labels:           <none>
Namespace:        default
Address:          192.168.XX.X
Ingress Class:    <none>
Default backend:  <default>
Rules:
  Host             Path  Backends
  ----             ----  --------
  myserver.xyz
                   /   echo1:80 (XX.XXX.X.XXX:5678)
Annotations:       kubernetes.io/ingress.class: nginx
Events:
  Type    Reason  Age                  From                      Message
  ----    ------  ----                 ----                      -------
  Normal  Sync    131m                 nginx-ingress-controller  Scheduled for sync
  Normal  Sync    126m (x2 over 126m)  nginx-ingress-controller  Scheduled for sync
  Normal  Sync    108m                 nginx-ingress-controller  Scheduled for sync

我已经将域名和 DNS A 记录指向 DigitalOcean VM 的外部 IP 地址。

我还检查了 /etc/hosts 并添加了一个域条目,如下所示:

146.190.XXX.XXX    myserver.xyz

我错过了什么?

我需要安装 metalb Minikube 插件还是它在这种情况下不适用?

PS:我正在遵循here

给出的示例教程
kubernetes minikube nginx-ingress
2个回答
1
投票

每@jordanm

如果您使用 LoadBalancer 的服务类型,您将连接到负载均衡器 IP,而不是虚拟机 IP。如果您想直接连接到虚拟机,您的 nginx 入口应该是 NodePort 的服务类型。


0
投票

也许资源定义来自不同的时间点,但来自所提供的内容:

  • 您的服务名为
    echo2
  • 您的部署名为
    echo2
  • 您的入口目标是名为
    echo1
  • 的服务

除非您的完整应用程序中没有

echo1
服务,否则我认为这可能是问题的一部分。

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