利用nginx的反向代理替换成k8s的LoadBalancer

avatar 2023年3月14日18:15:19 评论 1,004 次浏览

简单说一下k8s的负载均衡不管是LoadBalancer还是nodeport,还是其他的等等,都是通过端口映射的方式进行数据请求的,主要原因是因为在kubernetes中,ipvs是依靠kube-proxy进行维护的,但是ipvs的负载方式是延续了lvs的负载方式net,所以集群的数据通信都是nodeport的方式请求的。我们这里就需要做一个反向代理就请求到ingress中即可。

安装nginx,这里我就偷懒了,网上有很多自动化安装的nginx,直接下载执行即可。

  1.  [root@www.wulaoer.org ]# yum install screen
  2.  [root@www.wulaoer.org ]# wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh nginx #如果安装mysql可以替换成mysql即可

我已经安装好了,默认配置文件使用的是/usr/local/nginx/conf/vhost路径下的配置文件,看一下我的配置文件。

  1.  [root@www.wulaoer.org ]# cat /usr/local/nginx/conf/vhost/ops-kube.conf
  2.  server {
  3.       listen 80;
  4.       listen 443 ssl;
  5.       server_name -;
  6.       ssl_certificate cert/9305651_wulaoer.org.pem;
  7.       ssl_certificate_key cert/9305651_wulaoer.org.key;
  8.       ssl_session_timeout 120m;
  9.       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  10.       ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  11.       ssl_prefer_server_ciphers on;
  12.       if ($scheme = http) {
  13.           return 301 https://$host$request_uri;
  14.       }
  15.       location / {
  16.           proxy_pass http://ops-gateway/;
  17.           proxy_set_header X-Real-IP $remote_addr;
  18.           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19.           proxy_set_header X-Forwarded-Proto $https;
  20.           proxy_set_header Host $http_host;
  21.           proxy_set_header X-NginX-Proxy true;
  22.           proxy_set_header WL-Proxy-Client-IP $remote_addr;
  23.           proxy_redirect default;
  24.           proxy_redirect http:// https://;
  25.     }
  26.     access_log /home/wwwlogs/ops-kube.log;
  27.  }
  28.  [root@www.wulaoer.org ]# cat /usr/local/nginx/conf/vhost/upstream.conf
  29.  upstream ops-gateway {
  30.     server 172.16.10.50:30218;
  31.     server 172.16.10.51:30218;
  32.     server 172.16.10.52:30218;
  33.  }

下面的upstream.conf文件是我手动创建的,在nginx启动的时候会自动加载upstream.conf文件,ssl证书也可以使用相对路径,下面就可以测试一下我创建一个域名,然后解析到nginx上,然后在ingress上创建路由,是否可以解析到指定的服务。

  1.  [root@www.wulaoer.org ]# ping ops-kube.wulaoer.org
  2.  PING ops-kube.efreight.cn (172.16.10.53) 56(84) bytes of data.
  3.  64 bytes from www.wulaoer.org (172.16.10.53): icmp_seq=1 ttl=64 time=0.055 ms

因为隐私的问题,我这里就不展示了,但是一定可以这样做的。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

滑动解锁才能提交