Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在kubernetes nginx控制器中公开80端口_Nginx_Kubernetes_Kubernetes Ingress_Nginx Ingress - Fatal编程技术网

如何在kubernetes nginx控制器中公开80端口

如何在kubernetes nginx控制器中公开80端口,nginx,kubernetes,kubernetes-ingress,nginx-ingress,Nginx,Kubernetes,Kubernetes Ingress,Nginx Ingress,我在几个raspberry pi 4中安装了kubernete,但没有使用cloud。 我按照教程部署mongodb和MongoExpress,我可以 使用节点端口模式进入mongo express网站。 然而,当我改用nignx控制器时,当我 键入ip地址:端口(192.168.1.194:30574它是我的主节点ip,端口是入口nginx控制器暴露的位置)或域:端口(mymongo.com:30574)。 但是如果我只使用没有端口的域名(mymongo.com),它就无法进入网站。我错过什么

我在几个raspberry pi 4中安装了kubernete,但没有使用cloud。 我按照教程部署mongodb和MongoExpress,我可以 使用节点端口模式进入mongo express网站。 然而,当我改用nignx控制器时,当我 键入ip地址:端口(192.168.1.194:30574它是我的主节点ip,端口是入口nginx控制器暴露的位置)或域:端口(mymongo.com:30574)。 但是如果我只使用没有端口的域名(mymongo.com),它就无法进入网站。我错过什么了吗?非常感谢。 这是我的yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: 
  name: mongo-express-ingress
spec:
  rules:
   - host: "mymongo.com"
   - http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: mongo-express-service
            port:
              number: 8081
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo-express
  labels:
    app: mongo-express
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo-express
  template:
    metadata:
      labels:
        app: mongo-express
    spec:
      containers:
        - name: mongo-express
          image: mongo-express
          ports:
            - containerPort: 8081
          env:
            - name: ME_CONFIG_MONGODB_ADMINUSERNAME
              valueFrom:
                secretKeyRef:
                  name: mongodb-secret
                  key: mongo-root-username
            - name: ME_CONFIG_MONGODB_ADMINPASSWORD 
              valueFrom:
                secretKeyRef:
                  name: mongodb-secret
                  key: mongo-root-password
            - name: ME_CONFIG_MONGODB_SERVER
              valueFrom:
                configMapKeyRef:
                  name: mongodb-configmap
                  key: database_url
---
apiVersion: v1
kind: Service
metadata:
  name: mongo-express-service
spec:
  selector:
    app: mongo-express
  ports:
    - protocol: TCP
      port: 8081
      targetPort: 8081

ubuntu@master:~/k8s config$kubectl获取服务--所有名称空间
命名空间名称类型CLUSTER-IP EXTERNAL-IP端口年龄
默认kubernetes ClusterIP 10.96.0.1 443/TCP 8d
默认mongo express服务群集IP 10.107.95.131 8081/TCP 6d19h
默认mongodb服务群集IP 10.101.118.57 27017/TCP 6d19h
ingress nginx ingress nginx控制器节点端口10.96.94.30 80:30574/TCP,443:31882/TCP 6d4h
ingress nginx ingress nginx控制器准入群集IP 10.104.121.41 443/TCP 6d4h
kube系统kube dns ClusterIP 10.96.0.10 53/UDP、53/TCP、9153/TCP 8d
kubernetes仪表板仪表板指标刮除器ClusterIP 10.99.4.159 8000/TCP 6d22h
kubernetes仪表板kubernetes仪表板节点端口10.98.92.238 443:31044/TCP

在当前配置中,它按预期工作

您的配置为

节点端口:在静态端口(节点端口)上公开每个节点IP上的
服务。自动创建NodePort服务路由到的ClusterIP服务。您可以通过请求从集群外部联系
节点端口服务

因此,如果您使用的是
NodePort
类型,则只有在指定时才能连接,在您的情况下
mymongo.com:30574
NodeIP
:mymongo.com,
NodePort
:30574)

如果您只想使用一个域,则需要考虑<代码> Service Type < /Cube >为<代码> LoadBalancer < /C> > < /P> 负载平衡器:使用云提供商的负载平衡器对外公开服务。自动创建外部负载平衡器路由到的NodePort和ClusterIP服务

要在不使用
云负载均衡器的情况下实现这一点,您可以使用

您当前的配置也在Nginx入口文档中描述为

<强>您也可以考虑使用< /强>作为<代码> BAREMAGE解决方案< /代码>。< /P> 在没有可用的外部负载平衡器但不使用NodePorts的设置中,可以将ingress nginx Pod配置为使用其运行的主机的网络,而不是专用的网络命名空间。这种方法的好处是,NGINX入口控制器可以将端口80和443直接绑定到Kubernetes节点的网络接口,而无需NodePort服务施加额外的网络转换


在当前配置中,它按预期工作

您的配置为

节点端口:在静态端口(节点端口)上公开每个节点IP上的
服务。自动创建NodePort服务路由到的ClusterIP服务。您可以通过请求从集群外部联系
节点端口服务

因此,如果您使用的是
NodePort
类型,则只有在指定时才能连接,在您的情况下
mymongo.com:30574
NodeIP
:mymongo.com,
NodePort
:30574)

如果您只想使用一个域,则需要考虑<代码> Service Type < /Cube >为<代码> LoadBalancer < /C> > < /P> 负载平衡器:使用云提供商的负载平衡器对外公开服务。自动创建外部负载平衡器路由到的NodePort和ClusterIP服务

要在不使用
云负载均衡器的情况下实现这一点,您可以使用

您当前的配置也在Nginx入口文档中描述为

<强>您也可以考虑使用< /强>作为<代码> BAREMAGE解决方案< /代码>。< /P> 在没有可用的外部负载平衡器但不使用NodePorts的设置中,可以将ingress nginx Pod配置为使用其运行的主机的网络,而不是专用的网络命名空间。这种方法的好处是,NGINX入口控制器可以将端口80和443直接绑定到Kubernetes节点的网络接口,而无需NodePort服务施加额外的网络转换

ubuntu@master:~/k8s-config$ kubectl get services --all-namespaces
NAMESPACE              NAME                                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
default                kubernetes                           ClusterIP   10.96.0.1       <none>        443/TCP                      8d
default                mongo-express-service                ClusterIP   10.107.95.131   <none>        8081/TCP                     6d19h
default                mongodb-service                      ClusterIP   10.101.118.57   <none>        27017/TCP                    6d19h
ingress-nginx          ingress-nginx-controller             NodePort    10.96.94.30     <none>        80:30574/TCP,443:31882/TCP   6d4h
ingress-nginx          ingress-nginx-controller-admission   ClusterIP   10.104.121.41   <none>        443/TCP                      6d4h
kube-system            kube-dns                             ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP       8d
kubernetes-dashboard   dashboard-metrics-scraper            ClusterIP   10.99.4.159     <none>        8000/TCP                     6d22h
kubernetes-dashboard   kubernetes-dashboard                 NodePort    10.98.92.238    <none>        443:31044/TCP             
template:
  spec:
    hostNetwork: true