1

我试图使用 Kubernetes 在本地设置服务。我正在使用 ingress-nginx 进行路由。我正在使用 Ubuntu 18.04。这是我的 ingress.yaml 文件:

apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec: 
  rules:
    - host: ecommerce.dev
      http:   
        paths: 
          - path: /api/users/?(.*) 
            backend: 
              serviceName: auth-srv
              servicePort: 3000

另外,我在我的/etc/hosts/文件中映射了这个:

127.0.0.1   localhost
127.0.1.1   TALHA

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

127.0.0.1 ecommerce.dev

当我尝试从浏览器访问“ecommerce.dev”时,我无法访问它,因为它显示“无法访问站点”。有人可以帮我吗?

4

2 回答 2

2

我看到你提到你正在使用带有 nginx 入口插件的 minikube。

这些信息有很大帮助。以后尽量不要跳过这类信息。我假设说“我试图使用 Kubernetes 在本地设置服务”意味着你运行的是裸机 k8s。

Minikube 很可能在 VM 中运行,这就是您无法访问它的原因。

运行minikube ip会为您提供 VM 的 IP 地址:

$ minikube ip
192.168.39.67

您的 ip 可能不同,所以不要使用我的 IP,检查您分配的 IP。

现在您有了 minikube 虚拟机的 IP,在/etc/hosts. 就我而言,它如下所示:

192.168.39.67 ecommerce.dev
于 2021-02-16T08:08:30.573 回答
0

如果你使用 Helm 安装了 nginx-ingress,你可以:

  1. 添加--service-node-port-range=80-32767/etc/kubernetes/manifests/kube-apiserver.yaml

  2. 将服务类型设置为,NodePort以便您可以通过端口 80 和 443 公开它。

kubectl patch svc ingress-nginx-controller -p '{"spec": {"type": "NodePort"}}'
  1. 将服务的默认生成端口更改nginx-ingress-controller为 80 和 443。
kubectl patch svc ingress-nginx-controller -p '{"spec": {"ports": [{"name": "http", "nodePort": 80, "port": 80, "protocol": "TCP", "targetPort": "http"}, {"name": "https", "nodePort": 443, "port": 443, "protocol": "TCP", "targetPort": "https"}]}}'

此步骤只会打开您nginx-ingress-controller服务的端口 80 和 443。如果它不能解决您的问题,那么它可能与您的代理有关。

于 2021-02-16T00:29:30.397 回答