上游服务IP更改时,Kubernetes nginx刷新IP地址-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

上游服务IP更改时,Kubernetes nginx刷新IP地址

k8s小能手 2019-01-09 14:44:26 659

我正在使用nginx将请求代理到kubernetes集群中的StatefulSets的多个Headless服务。我现在遇到的问题是,无论何时服务IP发生变化,nginx都不会将服务端点解析为更新的IP地址,但仍然使用过时的缓存IP地址。我试图在nginx配置中使用proxy_pass中的变量,但它根本无济于事。在我的本地群集上以及部署在AWS EKS上。这是我的nginx配置的片段:

upstream svc-foo {
server svc-foo:8080;
keepalive 1024;
}
server {
resolver 127.0.0.1 [::1]:5353 valid=10s;
set $foo http://svc-foo;
location /foo/ {

proxy_pass $foo; 
proxy_http_version 1.1;

}
}
当我更新导致服务IP更改的服务时,我预计不会出现停机。

缓存 Kubernetes 应用服务中间件 nginx 容器
分享到
取消 提交回答
全部回答(1)
  • k8s小能手
    2019-07-17 23:25:01

    最好的方法是在你的nginx pod上使用DNS sidecar,如下所示:

    apiVersion: v1
    kind: ConfigMap
    metadata:
    namespace: issue-795
    name: nginx-config
    data:
    nginx.conf: |-

    user  nginx;
    worker_processes  1;
    
    events {
      worker_connections  4096;  ## Default: 1024
    }
    
    http {
      server { # php/fastcgi
        listen 80;
        resolver 127.0.0.1:53 ipv6=off valid=10s;
        set $upstream http://backend:8080;
        location / {
              proxy_pass $upstream;
              proxy_http_version 1.1;
         }
      }
    }

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    namespace: issue-795
    name: proxy
    spec:
    replicas: 1
    template:

    metadata:
      labels:
        app: proxy
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
    0 0
+ 订阅

云原生时代,是开发者最好的时代

推荐文章
相似问题