【问题标题】:microk8s ingress results in operation time outmicrok8s 入口导致操作超时
【发布时间】:2021-07-14 06:12:03
【问题描述】:

为什么每次我尝试连接到 MicroK8s 上的 nodeport 暴露服务时,连接都会被拒绝?

下面是部署、服务和入口:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-container
        image: 'nginx'
        ports:
        - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  selector:
    app: nginx
  type: NodePort
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx.info
  labels:
    app: 'nginx'
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: 'nginx.plz'
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: 'nginx'
            port:
              number: 80

我的/etc/hosts 文件中也包含以下行:

127.0.0.1 nginx.plz

但是,当我尝试访问该站点时,我继续收到以下错误:

 curl -v -H "host: nginx.plz" 10.152.183.60 

*   Trying 10.152.183.60...
* TCP_NODELAY set
* Connection failed
* connect to 10.152.183.60 port 80 failed: Operation timed out
* Failed to connect to 10.152.183.60 port 80: Operation timed out
* Closing connection 0
curl: (7) Failed to connect to 10.152.183.60 port 80: Operation timed out

有人熟悉在 microk8s 上设置这个吗?我确实看到了一些其他问题,例如这个:https://serverfault.com/questions/1032572/microk8s-deploy-application-not-working 但它没有解决方案

编辑:我也启用了 microk8s 入口。

【问题讨论】:

    标签: nginx kubernetes kubernetes-ingress kubernetes-service microk8s


    【解决方案1】:

    我刚刚在我的本地 microk8s 上部署了您的配置,并且能够访问端点。我看到的唯一区别是我启用了 Microk8s 入口 (https://microk8s.io/docs/addon-ingress),启用了入口添加,它创建了一个名为入口的命名空间,带有入口控制器,它监视新的入口规则(你已经定义了它们)和配置其底层代理以制定相应的路由。

    要在 microk8s 上启用入口,请执行以下操作,其他一切都由 Microk8s 负责。我们的入口资源有规则,入口控制器将映射它。

    microk8s enable ingress
    
    k get all  -n ingress
    NAME                                          READY   STATUS    RESTARTS   AGE
    pod/nginx-ingress-microk8s-controller-rmgs4   1/1     Running   1          1d
    
    NAME                                               DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/nginx-ingress-microk8s-controller   1         1         1       1            1           <none>          1d
    
    

    另外,请注意您的入口插件可以配置为公开 TCP 和 UDP 服务,方法是分别编辑 nginx-ingress-tcp-microk8s-conf 和 nginx-ingress-udp-microk8s-conf ConfigMap,然后在入口控制器。

    k get cm -n ingress
    NAME                                DATA   AGE
    nginx-load-balancer-microk8s-conf   0      1d
    nginx-ingress-udp-microk8s-conf     0      1d
    nginx-ingress-tcp-microk8s-conf     8      1d
    ingress-controller-leader-public    0      1d
    
    

    启用流量的另一个解决方案是启用 metallb 负载平衡器。 (https://microk8s.io/docs/addon-metallb)。完成后,检查您的入口/服务(kubectl get svc/ingress),它应该会显示您的端点,任何一个解决方案都应该可以在没有太多人工干预的情况下工作。

    curl http://10.152.183.102:80
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
            width: 35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>
    

    【讨论】:

    • 我忘了说,我确实启用了入口。我可以发布任何可能有帮助的其他信息。我已经尝试删除/卸载并重新启动电脑,因为你说它适合你
    • 检查入口控制器日志,你看到流量进来了吗?还要检查 ingress 命名空间中的配置映射,以查看是否映射了 80。此外,请检查以确保端口 80(apache2 或任何其他应用程序等)或任何其他应用程序在端口 80 上的任何其他命名空间上运行。
    猜你喜欢
    • 2021-04-17
    • 2022-07-02
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多