为其他端口和端点设置入口

时间:2019-05-13 15:06:13

标签: kubernetes kubernetes-ingress nginx-ingress

我在默认名称空间的Kubernetes中设置了一个测试服务。遵循此Kubernetes Tutorial

NAMESPACE     NAME                            TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
default       example-service                 NodePort       10.102.218.101   <none>        8080:30242/TCP               3h38m

卷曲到 curl http://my.server.com:30242返回正确的输出 ==> Hello Kubernetes! 现在,我想设置一个入口,使应用程序可在其他端点上使用,而无需使用30242端口。 所以我设置了一个入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: 5ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: my.server.com
    http:
      paths:
        - path: /testing
          backend:
            serviceName: example-service
            servicePort: 80

已部署Ingress,但新路径不起作用。 kubectl获取入口-所有命名空间

kube-system   5ingress            my.server.com             80, 443   16m

卷曲的卷发http://my.server.com/testing 返回

<html>
<head><title>308 Permanent Redirect</title></head>
<body>
<center><h1>308 Permanent Redirect</h1></center>
<hr><center>nginx/1.15.10</center>
</body>
</html

>

我的预期输出是curl http://my.server.com/testing返回Hello Kubernetes!我想念什么,我该如何解决?

2 个答案:

答案 0 :(得分:1)

第一步将是纠正入口规范中的servicePort。

您的example-service在端口 8080 上公开,而入口定义中的servicePort是 80

如果有的话,也很高兴看到您的入口控制器说明

答案 1 :(得分:0)

如果使用Nginx Ingress,则必须添加以下注释:

nginx.ingress.kubernetes.io/ssl-redirect: "false"