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

pre*_*123 0 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
Run Code Online (Sandbox Code Playgroud)

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

jhe*_*dez 5

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

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

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

入口 -> 服务 -> Pods

由于您不在 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
Run Code Online (Sandbox Code Playgroud)

并且 DNS 需要使用您拥有的域的任何内容进行管理以进行解析,或者对于本地测试,您只需编辑您的 /etc/hostnames

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