牧场主2.x通过入口控制器返回404

时间:2018-09-21 11:34:54

标签: kubernetes rancher

牧场服务:

$ kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
rancher      ClusterIP   10.10.17.245   <none>        80/TCP,443/TCP   1h

入口控制器服务:

NAMESPACE       NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                      AGE
nginx-ingress   nginx-ingress          LoadBalancer   10.10.15.181   <ext-IP>   80:30324/TCP,443:31022/TCP   3h

入口角色:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: rancher-ing
  annotations:
    kubernetes.io/ingress.class: "rancher"
spec:
  rules:
  - host: api.sample.com
    http:
      paths:
      - path: /
        backend:
          serviceName: rancher
          servicePort: 443

入口:

$ kubectl get ingress
NAME      HOSTS            ADDRESS   PORTS     AGE
rancher   api.sample.com             80        19s

当我试图通过入口控制器ext-IP与牧场主联系时:

  

$ curl http://api.sample.com

作为回应,我有一些未编码的字符串。如果通过网络浏览器执行此操作,则将下载此字符串,并且我得到了404。
通过http(不使用https)进行某些随机服务的类似角色也可以正常工作,因此这与错误的入口控制器配置无关。

2 个答案:

答案 0 :(得分:1)

如果要使用kubernetes.io/ingress.class: "rancher",则必须部署带有--ingress-class=rancher批注的入口控制器。

有很多 https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/multiple-ingress-controllershttps://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/

欢呼

答案 1 :(得分:0)

如果我遵循默认的入口控制器安装:
 https://github.com/nginxinc/kubernetes-ingress/blob/master/docs/installation.md
并应用rancher ingress角色,例如:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    app: rancher
  name: rancher
  namespace: cattle-system
spec:
  tls:
  - hosts:
    - api.sample.com
    secretName: default-server-secret
  rules:
  - host: api.sample.com
    http:
      paths:
      - path: /
        backend:
          serviceName: rancher
          servicePort: 80

此解决方案启用了通过Ingress控制器通过https到Rancher UI的https,而没有注释。