Docker Kubernetes暴露多个豆荚

Docker Kubernetes暴露多个豆荚,docker,dns,kubernetes,containers,Docker,Dns,Kubernetes,Containers,我有一个kubernetes集群,包含来自不同图像的多个豆荚 我希望能够公开这些吊舱中的每一个,以便能够使用外部DNS记录(在集群之外)访问它们 例如: 假设我有3个pod(pod1、pod2、pod3),我希望能够通过以下方式从集群外部访问它们: 有办法吗 感谢外部dns()就是为了实现这一点而设计的,您可以用您想要提供的dns名称对您的服务进行注释,外部dns会为您创建相关的dns条目 externaldns()就是为了实现这一点而设计的,您可以使用您想要提供的dns名称对您的服务进行

我有一个kubernetes集群,包含来自不同图像的多个豆荚

我希望能够公开这些吊舱中的每一个,以便能够使用外部DNS记录(在集群之外)访问它们

例如: 假设我有3个pod(pod1、pod2、pod3),我希望能够通过以下方式从集群外部访问它们:

有办法吗


感谢

外部dns()就是为了实现这一点而设计的,您可以用您想要提供的dns名称对您的服务进行注释,外部dns会为您创建相关的dns条目

externaldns()就是为了实现这一点而设计的,您可以使用您想要提供的dns名称对您的服务进行注释,然后外部dns为您创建相关的dns条目

在AWS中,您可以使用ELB轻松公开吊舱-Kubernetes可以自动为您创建合适的ELB。这意味着Kubernetes生成ELB,然后使用节点端口将其连接到适当的服务。当ELBs就位后,您可以使用GarMan提供的外部dns插件,该插件可以使用AWS Route53集成将dns记录附加到这些ELBs。因此,您需要:

  • 向Kubernetes添加适当的权限,以便他可以在Route53中创建ELBs和DNS记录(Kubernetes安装和外部DNS插件安装的一部分)
  • 将适当的服务附在吊舱上
  • 示例服务如下所示:

    apiVersion: v1
    kind: Service
    metadata:
      name: public-pod1
      namespace: your-deployment
      labels:
        app: pod1
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
        service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
        service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
        external-dns.alpha.kubernetes.io/hostname: pod1.mydomain.com.
    spec:
      type: LoadBalancer
      loadBalancerSourceRanges:
      - 0.0.0.0/0 # Ingress SG for your ELB
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80 #That should match your app's port
      selector:
        app: pod1
    

    在AWS中,您可以使用ELB轻松地公开吊舱-Kubernetes可以自动为您创建合适的ELB。这意味着Kubernetes生成ELB,然后使用节点端口将其连接到适当的服务。当ELBs就位后,您可以使用GarMan提供的外部dns插件,该插件可以使用AWS Route53集成将dns记录附加到这些ELBs。因此,您需要:

  • 向Kubernetes添加适当的权限,以便他可以在Route53中创建ELBs和DNS记录(Kubernetes安装和外部DNS插件安装的一部分)
  • 将适当的服务附在吊舱上
  • 示例服务如下所示:

    apiVersion: v1
    kind: Service
    metadata:
      name: public-pod1
      namespace: your-deployment
      labels:
        app: pod1
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
        service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
        service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
        external-dns.alpha.kubernetes.io/hostname: pod1.mydomain.com.
    spec:
      type: LoadBalancer
      loadBalancerSourceRanges:
      - 0.0.0.0/0 # Ingress SG for your ELB
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80 #That should match your app's port
      selector:
        app: pod1
    

    你是在云端还是在prem kubernetes部署中?我在使用AWS。如果有必要,我可以自己添加DNS记录。您是在云中还是在prem kubernetes部署中?我正在使用AWS。如果有必要,我可以自己添加DNS记录。