Domain-Name-System

如何在 Kubernetes 中為服務和 Pod 配置 DNS?

  • November 17, 2021

我一直在閱讀關於服務和 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 隧道)來完成這項工作。可以在此處找到有關隧道的完整配置文件。我希望有類似問題的人覺得這很有用。

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