K8S技术社区正式上线啦!快快关注找到志同道合的小伙伴!
本文参考了kube-keepalived-vip,但并没有使用容器方式安装,而是直接在node节点上安装。 定义 首先解释下什么叫边缘节点(Edge Node),所谓的边缘节点即集群内部用来向集群外暴露服务能力的节点,集群外部的服务通过该节点来调用集群内部的服务,边缘节点是集群内外交流的一个Endpoint。 边缘节点要考虑两个问题
架构 为了满足边缘节点的以上需求,我们使用keepalived来实现。 在Kubernetes集群外部配置nginx来访问边缘节点的VIP。 选择Kubernetes的三个node作为边缘节点,并安装keepalived。 安装 使用keepalived管理VIP,VIP是使用IPVS创建的,IPVS已经成为linux内核的模块,不需要安装。 LVS的工作原理请参考:http://www.cnblogs.com/codebean/archive/2011/07/25/2116043.html 不使用镜像方式安装了,直接手动安装,指定三个节点为边缘节点(Edge node)。 测试集群一共只有三个node,在三个node上都要安装keepalived和ipvsadmin。 yum install keepalived ipvsadmin 配置说明 需要对原先的traefik ingress进行改造,从以Deployment方式启动改成DeamonSet。还需要指定一个与node在同一网段的IP地址作为VIP,我们指定成172.20.0.119,配置keepalived前需要先保证这个IP没有被分配。
配置Keepalived 参考基于keepalived 实现VIP转移,lvs,nginx的高可用,配置keepalived。 keepalived的官方配置文档见:http://keepalived.org/pdf/UserGuide.pdf 配置文件/etc/keepalived/keepalived.conf文件内容如下: ! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from kaadmin@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER inte**ce eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.20.0.119 } } virtual_server 172.20.0.119 80{ delay_loop 6 lb_algo loadbalance lb_kind DR nat_mask 255.255.255.0 persistence_timeout 0 protocol TCP real_server 172.20.0.113 80{ weight 1 TCP_CHECK { connect_timeout 3 } } real_server 172.20.0.114 80{ weight 1 TCP_CHECK { connect_timeout 3 } } real_server 172.20.0.115 80{ weight 1 TCP_CHECK { connect_timeout 3 } } } Realserver的IP和端口即traefik供外网访问的IP和端口。 将以上配置分别拷贝到另外两台node的/etc/keepalived目录下。 我们使用转发效率最高的lb_kind DR直接路由方式转发,使用TCP_CHECK来检测real_server的health。 启动keepalived systemctl start keepalived 三台node都启动了keepalived后,观察eth0的IP,会在三台node的某一台上发现一个VIP是172.20.0.119。 $ ip addr show eth0 2: eth0: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|