Google Kubernetes Engine应用自定义域名配置及多应用部署问题
GKE自定义域名配置问题解答
问题1:域名DNS设置与集群重建后的IP变化
- 不要将域名的域名服务器(NS记录)设置为
30.31.32.33/api:DNS的NS记录用于指定管理该域名的DNS服务器地址,而非应用访问地址。你需要配置的是A记录(或AAAA记录),将mydomain.com或products.mydomain.com指向应用的外部IP(注意不要带/api路径,DNS仅负责解析IP,路径由应用或Ingress层处理)。 - 关于IP变化:你当前使用的
30.31.32.33大概率是NodePort节点IP或临时LoadBalancer IP。如果是NodePort,重建集群后节点IP必然改变;如果是临时LoadBalancer IP,集群重建或LoadBalancer资源删除后IP也会丢失。解决方法是创建静态外部IP地址,将其绑定到GKE的LoadBalancer(或Ingress)上,这样即使重建集群,只要重新绑定该静态IP,域名解析就不会失效。
问题2:同一集群部署多应用并使用不同域名
通过Kubernetes Ingress 资源实现基于域名的路由,步骤如下:
- 为新应用创建对应的Deployment和Service(和现有示例应用的配置逻辑一致,确保Service能正常访问应用)。
- 定义Ingress资源,在规则中为不同域名指定对应Service:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: multi-domain-ingress annotations: kubernetes.io/ingress.class: "gce" # GKE默认Ingress类 kubernetes.io/ingress.global-static-ip-name: "your-static-ip-name" # 绑定静态IP spec: tls: - hosts: - mydomain.com - products.mydomain.com # 若需HTTPS,配置对应TLS Secret名称 # secretName: mydomain-tls rules: - host: mydomain.com http: paths: - path: /api pathType: Prefix backend: service: name: existing-app-service # 现有示例应用的Service名称 port: number: 80 - host: products.mydomain.com http: paths: - path: / pathType: Prefix backend: service: name: new-app-service # 新应用的Service名称 port: number: 80 - 将两个域名的A记录都指向该静态IP,Ingress会根据请求的域名自动路由到对应的应用Service。
内容的提问来源于stack exchange,提问作者barteloma
相关产品推荐
相关产品推荐

