如何在kubernetes中创建使用nginx控制器的入口时生成外部IP

时间:2017-12-07 16:58:35

标签: kubernetes kubernetes-go-client

apiVersion: extensions/v1beta1
kind: Ingress 
metadata:
  name: helloworld-rules
spec:
  rules:
  - host: helloworld-v1.example.com
http:
  paths:
  - path: /
    backend:
      serviceName: helloworld-v1
      servicePort: 80
  - host: helloworld-v2.example.com
http:
  paths:
  - path: /
    backend:
           serviceName: helloworld-v2
           servicePort: 80

我正在制作kubernetes群集,我将应用cloudPlatform Isolated(不是aws或google)。 在为服务创建入口时,我可以选择主机URL,但这在任何地方都不存在(该地址没有注册到像DNS服务器那样)所以我无法访问该URL。访问此IP只会给出404。 如何获取或配置可以访问外部浏览器的URL :( ...

1 个答案:

答案 0 :(得分:2)

这取决于你如何配置你的nginx控制器。

您应该配置一个服务,这是从外部访问时的入口点,请参阅文档https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress

所以基本上你有一个指向入口控制器的服务,这会根据Ingress Objects将流量重定向到你的pod。

Ingress - >服务 - >豆荚

由于您不在aws或google上运行,您必须使用externalIp或NodePort并相应地配置服务

kind: Service
apiVersion: v1
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app: ingress-nginx
spec:
  selector:
    app: ingress-nginx
  ports:
  - name: http
    port: 80
    targetPort: http
  - name: https
    port: 443
    targetPort: http
  externalIPs:
  - 80.11.12.10

DNS需要使用您的域名管理来解决,或者为了进行本地测试,您只需编辑/ etc / hostnames

基本上在AWS或Google中,您只需创建一个类型为:LoadBalancer的服务,并将您的DNS记录指向平衡器地址(适用于aws的CNAME和适用于Google的IP)