keepalived operator in openshift4
痛點(diǎn)
openshift4 標(biāo)準(zhǔn)安裝,使用router(haproxy)來(lái)做ingress,向集群導(dǎo)入流量,這么做,默認(rèn)只能工作在7層,雖然也有方法進(jìn)行定制,讓他工作在4層,但是不管從對(duì)外暴露的IP地址的可管理性,以及應(yīng)用端口沖突處理方面來(lái)說(shuō),都非常不方便。
根本原因,其實(shí)是openshift4 私有化安裝不支持 LoadBalancer 這個(gè)service type。 那么今天我們就找了 keepalived operator,來(lái)彌補(bǔ)這個(gè)缺陷。
視頻講解:

本文,參考o(jì)penshift blog上的文章
https://www.openshift.com/blog/self-hosted-load-balancer-for-openshift-an-operator-based-approach
https://github.com/redhat-cop/keepalived-operator
試驗(yàn)架構(gòu)圖

可以看到,keepalived,會(huì)在節(jié)點(diǎn)上,根據(jù)service的定義,創(chuàng)建second IP,然后外部流量,就從這個(gè)IP地址,進(jìn)入集群。這是一種k8s LoadBalancer 的實(shí)現(xiàn)方式,和ingress controller的方式對(duì)比,就是天然支持tcp模式的4層轉(zhuǎn)發(fā)。
安裝keepalived operator很簡(jiǎn)單

在web界面操作完了,需要標(biāo)記節(jié)點(diǎn),已經(jīng)調(diào)整一下權(quán)限
接下來(lái),我們來(lái)看看keepalived的部署有什么特殊的地方。
我們可以看到 keepalived pod 使用了 hostnetwork 和 privileged: true。 但是keepalived pod 沒有掛載特殊的主機(jī)目錄。

測(cè)試部署一個(gè)應(yīng)用
分析一下應(yīng)用的行為
看看service的配置,能看到已經(jīng)分配了對(duì)外的IP?

master-2 上面,相關(guān)的iptables 配置
可以看到,svc的防火墻策略,分流到了pod
