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

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

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

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

 [root@www.wulaoer.org ]# yum install screen
 [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路径下的配置文件,看一下我的配置文件。

 [root@www.wulaoer.org ]# cat /usr/local/nginx/conf/vhost/ops-kube.conf
 server {
       listen  80;
       listen  443 ssl;
       server_name -;
       ssl_certificate cert/9305651_wulaoer.org.pem;
       ssl_certificate_key cert/9305651_wulaoer.org.key;
       ssl_session_timeout 120m;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
       ssl_prefer_server_ciphers on;
       if ($scheme = http) {
           return 301 https://$host$request_uri;
       }
       location / {
          proxy_pass http://ops-gateway/;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $https;
          proxy_set_header Host $http_host;
          proxy_set_header X-NginX-Proxy true;
          proxy_set_header WL-Proxy-Client-IP $remote_addr;
          proxy_redirect default;
          proxy_redirect http:// https://;
     }
     access_log  /home/wwwlogs/ops-kube.log;
 }
 [root@www.wulaoer.org ]# cat /usr/local/nginx/conf/vhost/upstream.conf 
 upstream ops-gateway {
     server 172.16.10.50:30218;
     server 172.16.10.51:30218;
     server 172.16.10.52:30218;
 }

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

 [root@www.wulaoer.org ]#  ping ops-kube.wulaoer.org
 PING ops-kube.efreight.cn (172.16.10.53) 56(84) bytes of data.
 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: