Domain-Name-System
如何在 Kubernetes 中為服務和 Pod 配置 DNS?
我一直在閱讀關於服務和 Pod 的 DNS 的K8s 文件。我要解決的主要任務是我的 K8s 部署具有
NodePort
服務類型。這意味著,我使用來自節點的外部 IP 地址將服務公開到 Internet。當我這樣做時,我的 IP 地址被暴露,我寧願擁有一個主機名$$ a DNS name $$. 通過上面連結的文件,由於我是 K8s 的新手,我不太了解這些概念。 我從 NGINX 為 Bare Metal K8s 設置了 Ingress Controller,因為我的雲提供商不提供負載平衡服務。
所以我的問題是:如何在我的 K8s 集群中設置 ExternalDNS?
僅供參考,這些是我在 K8s 集群中的資源。
Namespaces NAME STATUS AGE default Active 3d12h ingress-nginx Active 5h53m kube-node-lease Active 3d12h kube-public Active 3d12h kube-system Active 3d12h
基本上,我的所有部署都在
default
命名空間內。kubectl get all -n default NAME READY STATUS RESTARTS AGE pod/hello-docker-cc749b757-qfctr 1/1 Running 0 70m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/hello-docker NodePort 10.xxx.xxx.xxx <none> 3000:30072/TCP 70m service/kubernetes ClusterIP 10.xxx.xxx.xxx <none> 443/TCP 3d12h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/hello-docker 1/1 1 1 70m NAME DESIRED CURRENT READY AGE replicaset.apps/hello-docker-cc749b757 1 1 1 70m
這是我用於
hello-docker
應用程序服務和部署的清單文件:apiVersion: v1 kind: Service metadata: name: hello-docker labels: app: hello-docker spec: type: NodePort ports: - port: 3000 targetPort: 8000 protocol: TCP name: http selector: app: hello-docker --- apiVersion: apps/v1 kind: Deployment metadata: name: hello-docker labels: app: hello-docker spec: replicas: 1 selector: matchLabels: app: hello-docker template: metadata: labels: app: hello-docker spec: imagePullSecrets: - name: regcred containers: - name: hello-docker image: sebastian/hello-docker:1.1 imagePullPolicy: Always ports: - containerPort: 8000
任何回饋和建議將不勝感激。
我通過創建 Cloudflare 隧道(以前稱為 Argo 隧道)來完成這項工作。可以在此處找到有關隧道的完整配置文件。我希望有類似問題的人覺得這很有用。