Kubernetes入口出现问题

问题描述 投票:0回答:1

我有1个master和2个运行nginx的节点。这是节点的设置。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

然后我以此创建了服务。

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

我可以通过服务中的ClusterIP在两个节点上访问nginx。到目前为止一切顺利。

接下来,我想添加Ingress。我用过。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - http:
       paths:
        - path: /?(.*)
          backend:
            serviceName: nginx-service
            servicePort: 80

这是我遇到问题的地方。我曾以为我现在可以通过我的公共IP地址访问我的Nginx节点。我以为它将成为PUBLIC IP->服务群集IP-> Node IP。我的想法是正确的,但是我的Yaml文件中只有一个错误,还是我完全误解了应该发生的情况。我的目标是通过我的公共IP访问nginx。我正在使用数字海洋飞沫来做到这一点。我有3.用kubeadm初始化的集群。

kubernetes kubectl kubeadm
1个回答
0
投票

我想您尚未在入口规则文件中添加主机名,可以尝试一下-

apiVersion: extensions/v1beta1
kind: Ingress
 metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    -host:{replace-me-with-hostname}
     http:
       paths:
        - path: /?(.*)
          backend:
            serviceName: nginx-service
            servicePort: 80 

请参考this post,错误类似

© www.soinside.com 2019 - 2024. All rights reserved.