在 kubernetes 中创建使用 nginx 控制器的入口时如何生成外部 IP
How can I generate External IP when creating an ingress that uses nginx controller in kubernetes
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(不是 aws 或 google)。
在为服务创建入口时,我可以选择主机 url,但它在任何地方都不存在(该地址未注册 DNS 服务器之类的东西)所以我无法访问那个 url。访问这个 IP 只会给出 404。
如何获取或配置可以访问外部浏览器的 URL
:(...
这取决于您如何配置 nginx 控制器。
您应该配置一个服务,它是从外部访问时的入口点,请参阅文档 https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress。
所以基本上你有一个指向入口控制器的服务,这将根据入口对象将流量重定向到你的pods。
入口 -> 服务 -> 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
并且 DNS 需要使用您的域的任何内容进行管理才能解析,或者对于本地测试,您只需编辑 /etc/hostnames
基本上在 AWS 或 Google 中,您只需创建一个类型为 LoadBalancer 的服务,并将您的 dns 记录指向平衡器地址(aws 的 CNAME 和 google 的 IP)
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(不是 aws 或 google)。 在为服务创建入口时,我可以选择主机 url,但它在任何地方都不存在(该地址未注册 DNS 服务器之类的东西)所以我无法访问那个 url。访问这个 IP 只会给出 404。 如何获取或配置可以访问外部浏览器的 URL :(...
这取决于您如何配置 nginx 控制器。
您应该配置一个服务,它是从外部访问时的入口点,请参阅文档 https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress。
所以基本上你有一个指向入口控制器的服务,这将根据入口对象将流量重定向到你的pods。
入口 -> 服务 -> 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
并且 DNS 需要使用您的域的任何内容进行管理才能解析,或者对于本地测试,您只需编辑 /etc/hostnames
基本上在 AWS 或 Google 中,您只需创建一个类型为 LoadBalancer 的服务,并将您的 dns 记录指向平衡器地址(aws 的 CNAME 和 google 的 IP)