Domain-Name-System

Kubernetes 子域上的訪問服務

  • February 26, 2021

我有以下設置:

  • 私有 OpenStack 雲- o̲n̲l̲y̲ Web UI (Horizo​​n) 可訪問

(API 受到限制,但也許我可以訪問)

  • 我使用CoreOS設置了一個節點和三個節點
  • 資源是標準化的(作為 OpenStack 的預設設置)
  • 我遵循了GitHub 上的 CoreOS 入門指南(即,我使用預設的 YAML 來提供雲配置)

當我閱讀諸如 Web UI (kube-ui) 之類的擴展時,可以將其添加為 Add-On - 我已添加(僅 kube-ui)。

現在,如果我執行諸如 simple-nginx 之類的測試,我會得到以下輸出:

創建豆莢:

$ kubectl run my-nginx --image=nginx --replicas=2 --port=80

創建服務:

$ kubectl expose rc my-nginx --port=80 --type=LoadBalancer          
NAME       LABELS         SELECTOR       IP(S)     PORT(S)
my-nginx   run=my-nginx   run=my-nginx             80/TCP

獲取服務資訊:

$ kubectl describe service my-nginx                                                                                                
Name:           my-nginx
Namespace:      default
Labels:         run=my-nginx
Selector:       run=my-nginx
Type:           LoadBalancer
IP:             10.100.161.90
Port:           <unnamed>   80/TCP
NodePort:       <unnamed>   31170/TCP
Endpoints:      10.244.19.2:80,10.244.44.3:80
Session Affinity:   None
No events.

我可以從節點的每個(!)外部 IP 訪問我的服務。

我現在的問題如下:

如何使用子域訪問任何已啟動的服務乙太網,因此如何設置此配置(例如,我有 domain.com 作為範例)或者是否可以將它列印在我必須訪問我的服務的節點 IP 上(儘管我有只有兩個副本(?!))?

為了更容易理解地描述我的想法,我的意思是:

  • 給定域:domain.com(指向主控)
  • 啟動服務simple-nginx
  • 可以使用simple-nginx.domain.com訪問服務

這是所有這些人在提出問題 5 年後看到它的答案。

技術變得更好了,現在我們在 k8s 中有了入口:D。

要使用子域,請部署入口控制器,例如nginx 入口控制器

並創建一個入口對象:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: ingress
spec:
 rules:
 - host: "simple-nginx.domain.com"
   http:
     paths:
     - pathType: Prefix
       path: "/"
       backend:
         service:
           name: simple-nginx
           port:
             number: 80

現在剩下要做的就是創建一個 dns 記錄*.domain.com並將其指向 ADDRESS 列中看到的入口 IP。

$ kubectl get ingress
NAME          CLASS    HOSTS                      ADDRESS           PORTS   AGE
ingress       <none>   simple-nginx.domain.com    xxx.yyy.zzz.kkk   80      2d20h

引用自:https://serverfault.com/questions/747276