azure - Azure 上的 Kubernetes : assign different external IP to different services

标签 azure kubernetes external

我使用 Azure 容器服务在 Azure 上创建了一个 Kubernets 集群的示例设置,它的工作效果很好。我在 Kubernetes 中设置了多个容器和服务,没有问题。

让我感到困惑的是,如果我运行多个 nginx 容器并希望通过不同的外部 IP 公开它,据我所知和理解,我无法做到这一点。

Azure approach是我可以设置服务并设置类型:LoadBalancer,当我创建它时,Azure 会将附加到客户端节点的 LoadBalancer“连接”到我的服务。

但是这样我只能将一个外部IP附加到所有我的服务,这不是我需要的。在我的示例中,当我运行多个 nginx 容器时,我想在不同的 IP 上公开其 80/tcp 端口,以便我可以在 DNS 中使用这些 IP,而不是在单个 IP 的不同端口上。

我该如何克服这个问题? 请帮忙!

最佳答案

在Azure容器服务中,要将kubernetes服务公开到Internet,我们应该使用Azure负载均衡器。正如Radek所说,多个容器位于一个pod中,并使用相同的负载均衡器来保持HA。

如果你想将多个容器暴露到具有不同公网IP地址的互联网上,我们可以创建多个Pod,并将它们暴露到互联网上,这样就实现了具有不同公网IP地址的容器。

pod、容器、node的关系是这样的: enter image description here

我们在一个 Pod 中创建多个容器,在一个节点(主机)中创建多个 Pod,多个 Pod 为一项服务工作。一项服务作为一个集群运行,一项服务具有一个公共(public) IP 地址。

因此,如果您想创建多个具有不同公共(public) 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门户找到负载均衡器前端IP设置(两个公共(public)IP地址): enter image description here

关于azure - Azure 上的 Kubernetes : assign different external IP to different services,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45332397/

相关文章:

java - 为什么我的 @Scheduled Spring Boot 任务在 Azure 中运行不一致?

azure - 如果输入代码则不会发生任何事情。在 Visual Studio 代码终端中打开 azure cloud shell

azure - 当运行 webjob 时出现任何错误或异常时,azure webjobs 如何表现?

amazon-web-services - AWS Cognito 在将 istio sidecar 添加到 pod 后无法进行身份验证

kubernetes - 入口将域 www 重写为非 www url

仅 JavaScript 图像悬停

javascript - 阴影根 : is there a way to include an external javascript file into a shadow-root?

azure - 如何配置不在 web.config 的 <appSettings> 部分中的 Azure 应用服务设置?

Kubernetes Pod 安全策略默认特权值

javascript - 使 JSON 提要在服务器到服务器之间工作