首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx Ingress服务失败

Nginx Ingress服务失败
EN

Stack Overflow用户
提问于 2019-06-29 15:05:51
回答 2查看 265关注 0票数 1

我是k8s新手,我有一个部署文件,如下所示

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      component: web
  template:
    metadata:
      labels:
        component: web
    spec:
      containers:
        - name: jenkins
          image: jenkins
          ports:
            - containerPort: 8080
            - containerPort: 50000

我的服务文件如下:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
   name: jenkins-svc
spec:
   type: ClusterIP
   ports:
   - port: 80
     targetPort: 8080
     name: http
   selector:
      component: web

我的入口文件是

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: jenkins-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: jenkins.xyz.com
    http:
      paths:
      - path: /
        backend:
          serviceName: jenkins-svc
          servicePort: 80

我使用的是nginx ingress项目,我的集群是使用kubeadm创建的,其中包含3个节点nginx ingress

我首先运行了强制命令

代码语言:javascript
复制
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

当我尝试点击jenkins.xyz.com时,当我尝试命令时,它不起作用

代码语言:javascript
复制
  kubectl get ing

ing资源未获得分配给它的IP地址

EN

回答 2

Stack Overflow用户

发布于 2019-06-30 16:30:49

入口资源只是反向代理( Ingress controller)的配置。

Ingress没有获得分配的IP地址是正常的。

您需要做的是连接到入口控制器实例。

为此,您需要了解它们在集群中是如何公开的。

考虑到您声称用来运行入口控制器的YAML,没有向外部网络公开的迹象。

您至少需要定义一个Service来公开您的控制器(如果您放置集群的提供者支持它,则可能是一个负载均衡器),您可以使用HostNetwork: trueNodePort

要使用最新选项(NodePort),您可以应用以下YAML:

https://github.com/kubernetes/ingress-nginx/blob/master/deploy/static/provider/baremetal/service-nodeport.yaml

我建议您阅读Ingress文档页面,以便更清楚地了解所有这些东西是如何工作的。

https://kubernetes.io/docs/concepts/services-networking/ingress/

票数 1
EN

Stack Overflow用户

发布于 2019-07-01 21:56:12

为了进行访问,您需要创建本地Kubernetes集群PODs NodePortNodePort将使用其公网IP和端口在每个节点上发布您的服务。然后,您可以使用任意集群IP和分配的端口访问服务。

在Kubernetes中定义NodePort

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: nginx-service-np
  labels:
    name: nginx-service-np
spec:
  type: NodePort
  ports:
    - port: 8082        # Cluster IP, i.e. http://10.103.75.9:8082
      targetPort: 8080  # Application port
      nodePort: 30000   # (EXTERNAL-IP VirtualBox IPs) i.e. http://192.168.50.11:30000/ http://192.168.50.12:30000/ http://192.168.50.13:30000/
      protocol: TCP
      name: http
  selector:
    app: nginx 

Building a Kubernetes Cluster with Vagrant and Ansible (without Minikube)上查看完整的示例和源代码。

如果您想从以下服务网格架构中获益,也可以使用Istio替换nginx入口控制器:

  • 负载平衡流量、外部或内部
  • 控制故障、重试、routing
  • 应用限制并监控services
  • Secure communication

之间的网络流量

参见Installing Istio in Kubernetes under VirtualBox (without Minikube)

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

https://stackoverflow.com/questions/56815727

复制
相关文章

相似问题

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