我想在.NET Kubernetes服务上部署一个带有NGINX反向代理的NGINX核心应用。组织pod和容器的最佳方式是什么?
核心两个单容器pod,一个用于nginx,另一个用于应用程序(. .net
核心进行扩展一个多容器pod,该单个pod包含两个容器(一个用于nginx,一个用于应用程序)
的容器
我会选择第一个选项,但我不知道它是否是正确的选择,如果知道每个选项的优缺点就太好了。
如果我选择第一个选项,最好是设置亲和力,将nginx pod放在app pod所在的节点下?或者反亲和性,所以它们部署在不同的节点上?或者根本没有亲和力/反亲和力?
发布于 2018-08-22 03:57:48
Kubernetes中入站流量的最佳实践是使用Ingress资源。这需要在AKS中进行一些额外的设置,因为没有内置的入口控制器。你肯定不想做#2,因为它不灵活,而且据我所知,#3是不可能的。
Kubernetes Ingress
资源是一个配置文件,用于管理入站群集流量的反向代理规则。这允许您呈现多个服务,就好像它们是组合的API一样。
要设置入口,请首先在自动生成的MC资源组中创建一个公共IP地址:
az network public-ip create `
-g MC_rg-name_cluster-name_centralus `
-n cluster-name-ingress-ip `
-l centralus `
--allocation-method static `
--dns-name cluster-name-ingress
现在创建一个入口控制器。实际处理来自您的公网IP的入站流量时,需要使用此参数。它监听Kubernetes API Ingress
更新,并自动生成nginx.conf
文件。
# Note: you'll have to install Helm and its service account prior to running this. See my GitHub link below for more information
helm install stable/nginx-ingress `
--name nginx-ingress `
--namespace default `
--set controller.service.loadBalancerIP=ip.from.above.result `
--set controller.scope.enabled=true `
--set controller.scope.namespace="default" `
--set controller.replicaCount=3
kubectl get service nginx-ingress-controller -n default -w
配置完成后,请确保在Ingress
资源上使用以下注释:kubernetes.io/ingress.class: nginx
如果你想了解更多关于如何设置的信息,请参阅我这周放在一起的this GitHub readme。我还在cert-manager
中包含了TLS终端,也是随Helm一起安装的。
https://stackoverflow.com/questions/51955339
复制相似问题