首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nginx-ingress公开服务

使用nginx-ingress公开服务
EN

Stack Overflow用户
提问于 2020-02-06 16:54:42
回答 3查看 118关注 0票数 0

我所有的pod都在服务器上工作。

代码语言:javascript
复制
NAMESPACE       NAME                                              READY   STATUS    RESTARTS   AGE
default         user-api-66fc4fc9d-igqnj                          3/3     Running   0          25s
ingress-nginx   nginx-ingress-controller-5556bd698f-qgw8r         1/1     Running   0          12h
kube-system     coredns-6955765f44-4xnhh                          1/1     Running   1          40h
kube-system     coredns-6955765f44-6tb8p                          1/1     Running   1          40h
kube-system     etcd-izbp1dyjigsfwmw0dtl85gz                      1/1     Running   1          40h
kube-system     kube-apiserver-izbp1dyjigsfwmw0dtl85gz            1/1     Running   1          40h
kube-system     kube-controller-manager-izbp1dyjigsfwmw0dtl85gz   1/1     Running   1          40h
kube-system     kube-flannel-ds-amd64-8b5pc                       1/1     Running   0          40h
kube-system     kube-flannel-ds-amd64-jq4kl                       1/1     Running   1          40h
kube-system     kube-proxy-9zx7c                                  1/1     Running   1          40h
kube-system     kube-proxy-lh55j                                  1/1     Running   0          40h
kube-system     kube-scheduler-izbp1dyjigsfwmw0dtl85gz            1/1     Running   1          40h

我创建的入口。

代码语言:javascript
复制
NAME          HOSTS                ADDRESS   PORTS   AGE
app-ingress   example.com                    80      5h16m

我为我的单个部署创建了ClusterIP服务,并使用带有资源文件的loadBalance ingress-nginx controller来公开内部服务。相关代码如下所示。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: user-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: user-api
  strategy: {}
  template:
    metadata:
      labels:
        app: user-api
    spec:
      dnsPolicy: ClusterFirstWithHostNet
      hostNetwork: true
      containers:
      - name: user-api
        image: doumeyi/user-api-amd64:1.0
        ports:
        - name: user-api
          containerPort: 3000
        resources: {}
---
apiVersion: v1
kind: Service
metadata:
  name: user-api
spec:
  selector:
    app: user-api
  ports:
  - name: user-api
    port: 3000
    targetPort: 3000
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: example.com
      http:
        paths:
        - path: /user-api
          backend:
            serviceName: user-api
            servicePort: 3000

ingress nginx服务似乎有问题,外部ip总是挂起。

代码语言:javascript
复制
NAMESPACE       NAME            TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                        AGE
ingress-nginx   ingress-nginx   LoadBalancer   10.104.176.152   <pending>     80:31612/TCP,443:30097/TCP                     13h
EN

回答 3

Stack Overflow用户

发布于 2020-02-06 17:59:52

请参阅:Access kubernetes service externally

您可以使用以下命令公开:

  • NodePort服务类型
  • LoadBalancer服务类型(如果您在云上托管)
票数 0
EN

Stack Overflow用户

发布于 2020-02-06 18:12:07

入口中指定的80端口为kubernetes服务端口。将不会有任何进程在该端口上侦听。在pod spec中指定的容器端口上应该有一个监听进程。它将位于部署pod的节点中。另外,对于您在nginx入口控制器本身的部署中指定的端口80和443,应该有nginx进程侦听,但您需要在部署nginx控制器pod的节点中进行检查。

票数 0
EN

Stack Overflow用户

发布于 2020-02-20 19:31:23

请更改服务定义并指定正确的端口:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: user-api
spec:
  selector:
    app: user-api
  ports:
    - name: user-api
    - port: 3000
      targetPort: 80
  type: LoadBalancer

来自外部负载均衡的流量指向后端Pod。云提供商决定如何实现负载平衡。

对于LoadBalancer类型的服务,如果定义了多个端口,则所有端口必须具有相同的协议,并且该协议必须是TCP、UDP和SCTP之一。

一些云提供商允许您指定loadBalancerIP。在这些情况下,将使用用户指定的loadBalancerIP创建负载均衡器。如果未指定loadBalancerIP字段,则使用临时IP地址设置loadBalancer。如果您指定了loadBalancerIP,但您的云提供商不支持该功能,则会忽略您设置的loadbalancerIP字段。

此外,如果您正在使用nginx入口控制器,请从部署配置文件中删除,然后应用更改( $ kubectl apply -f your-deployment-conf-file.yaml)。

更多信息可以在这里找到:nginx-troubleshootingnginx-ingress

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60091010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档