簡體   English   中英

如何將新的子域添加到現有的 kubernetes 集群

[英]How to add new subdomain to existing kubernetes cluster

完全是 Kubernetes 的初學者,我相信這對於任何 Kubernetes 專家來說都是一個簡單的問題

長話短說:在我的 CTO 辭職后,我繼承了一個 Kubernetes 集群。 我的目標是讓我們公司的新子域可以訪問新應用程序

語境:

  1. 有問題的應用程序具有已應用於集群的服務定義和部署定義(例如:kubectl apply -f new-service.yaml)
  2. 據我所知,pod 正在運行應用程序(在我的 kubectl get pods 輸出中顯示為准備就緒並正在運行)
  3. 我可以從集群中的其他 pod ping 那個 pod

我的問題:

我不知道如何使入口路由器“工作”......我通過添加主機和服務名稱更新了入口 yaml 配置,並且我使用了命令 kubectl apply -f ingress.yaml 來更新入口配置。 但新主機無法訪問。 我什至添加了一個新主機(我們公司的一個子域),它的 serviceName 是一個已經運行的服務,可以在不同的子域上訪問——希望我能在我的新子域上看到已經在工作的應用程序。 但是,這個新的子域並沒有將我引導到應用程序,chrome 給了我以下輸出:

server IP address could not be found.

ERR_NAME_NOT_RESOLVED

我在這里缺少什么嗎? 我不應該能夠在我的入口 yaml 的底部添加一個新主機並給它一個已經工作的服務的 serviceName 嗎? 然后能夠從不同的子域訪問已經運行的應用程序?

任何幫助都將非常感激 - 這是我漫長旅程的最后一步! 這是我添加到入口 yaml 的內容的片段——這與另一個條目完全匹配,除了主機名是 www3 而不是 www

- host: www3.changed-for-privacy.com
      http:
        paths:
          - path: /*
            backend:
              serviceName: changed-for-privacy-www
              servicePort: 80

我相信你在 Kubernetes 方面所做的一切都很好。 如果/當在您的 Ingress 中收到時,對某個域的請求被正確路由到后端服務。

值得注意的是您從Chrome顯示的錯誤。 這意味着地址解析問題出在您的客戶端,而不是集群。 您需要確保在筆記本電腦上設置本地 DNS 解析,以便您的www3.changed-for-privacy.com將解析為knownIPAddress 例如,如果您已將Ingress externalIP 設置為192.168.10.10 然后你必須在/etc/hosts/文件中添加一個條目(如果你在 linux 上),如下所示:

www3.changed-for-privacy.com 192.168.10.10

這將確保來自瀏覽器對您的域的請求落在Ingress外部 IP(當然應該是可路由的)上,並且您可能會發現您的集群工作正常!

作為一個更持久的解決方案,您當然會要求您的應用程序域已注冊,以便存在它的公共 DNS 記錄,該記錄將映射到您的Ingress對象的公共externalIP IP,您將不會遇到此問題。

問題已解決!

幸運的是,這與 Kubernetes 無關! 我的域指向 cloudflare 域名服務器……當時我沒有意識到。 我假設該域指向 AWS 名稱服務器。 我在 AWS 的 Route 53 中查看,當我嘗試在瀏覽器中訪問域時,我驚訝地發現添加新的 CNAME 記錄會導致 DNS 名稱解析錯誤。

在 cloudflare 中添加新的 A 記錄解決了我的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM