首页 文章

Azure上的Kubernetes:为不同的服务分配不同的外部IP

提问于
浏览
0

我使用Azure容器服务在Azure上创建了一个Kubernets集群的示例设置,它完成了它的工作 . 我在Kubernetes中设置了几个容器和服务,没问题 .

让我模糊的是,如果我说 several nginx containers and want to expose it via different external IPs ,我不能为我所知道和理解的那样做 .

Azure approach是我可以设置服务并设置 type: LoadBalancer ,因为我创建Azure将"connect" LoadBalancer附加到客户端节点到我的服务 .

但是这样我只能将 one 外部IP附加到我的服务 all 这不是我需要的东西 . 在我的例子中,当我运行几个nginx容器时,我想在不同的IP上公开它的80 / tcp端口,所以我可以在DNS中使用这些IP,而不是在单个IP的不同端口上 .

我怎么能克服这个? Please help!

2 回答

  • 2

    查看您链接的Azure文档,它似乎与它在任何 Cloud 上应该做的不同 . 我想你错过了解它应该如何使用 .

    当您创建任何类型的服务时,它旨在提供不相同的 service . 如果它指向多个 endpoints ,则会对LoadBalance流量执行此操作并提供HA . 没有理由在每个 endpoints 的IP基础上向外部暴露 .

    但是,如果您需要在不同的IP上公开 different 服务,您只需将这两种服务创建为LoadBalancer服务类型,并且每个svc都应该接收其唯一的外部负载均衡器(即IP) .

    您描述的行为(一个负载均衡器,外部暴露的多个服务)听起来更接近您使用Ingress / IngressController可以完成的任务 .

  • 1

    在Azure容器服务中,要将kubernetes服务公开给Internet,我们应该使用Azure负载均衡器 . 正如拉德克所说,一个容器中有几个容器,并使用相同的负载 balancer 器来保持HA .

    如果要将多个容器暴露给具有不同公共IP地址的Internet,我们可以创建多个容器,并以这种方式将它们暴露给具有不同公共IP地址的容器 .

    关于pod,容器和节点的关系,如下所示:
    enter image description here

    我们在一个pod中创建了几个容器,在一个节点(主机)中创建了几个pod,多个pod用于一个服务 . 服务作为集群工作,一个服务具有一个公共IP地址 .

    因此,如果您想创建具有不同公共IP地址的多个nginx容器,我们可以创建多个服务来存档:

    在一个服务中创建一个或两个nginx容器,并向Internet公开多个服务 .

    root@k8s-master-7273A780-0:~# kubectl run jasonnginx --replicas=1 --image nginx
    root@k8s-master-7273A780-0:~# kuberctl run mynginx --replicas=2 --image nginx
    root@k8s-master-7273A780-0:~# kubectl expose deployments mynginx --port=80 --type=LoadBalancer
    root@k8s-master-7273A780-0:~# kubectl expose deployments jasonnginx --port=80 --type=LoadBalancer
    root@k8s-master-7273A780-0:~# kubectl get svc
    NAME         CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
    jasonnginx   10.0.114.116   52.168.176.18   80:30153/TCP   5m
    kubernetes   10.0.0.1       <none>          443/TCP        15m
    mynginx      10.0.205.127   13.82.102.171   80:31906/TCP   6m
    root@k8s-master-7273A780-0:~# kubectl get pods
    NAME                          READY     STATUS    RESTARTS   AGE
    jasonnginx-1417538491-v79mw   1/1       Running   0          20m
    mynginx-1396894033-78njj      1/1       Running   0          21m
    mynginx-1396894033-pmhjh      1/1       Running   0          21m
    

    我们可以通过Azure门户找到负载 balancer 器前端IP设置(两个公共IP地址):
    enter image description here

相关问题