k8s高可用部署:keepalived + haproxy

实用文档 浏览

一、k8s高可用部署:keepalived + haproxy

最近依照网上不少文章部署K8s高可用集群,遇到了一些麻烦,在这里记录下来。

根据K8s官方文档将HA拓扑分为两种,Stacked etcd topology(堆叠ETCD)和External etcd topology(外部ETCD)。

堆叠ETCD : 每个master节点上运行一个apiserver和etcd, etcd只与本节点apiserver通信。

外部ETCD : etcd集群运行在单独的主机上,每个etcd都与apiserver节点通信。

官方文档主要是解决了高可用场景下apiserver与etcd集群的关系, 三master节点防止单点故障。但是集群对外访问接口不可能将三个apiserver都暴露出去,一个挂掉时还是不能自动切换到其他节点。官方文档只提到了一句“使用负载均衡器将apiserver暴露给工作程序节点”,而这恰恰是生产环境中需要解决的重点问题。

Notes: 此处的负载均衡器并不是kube-proxy,此处的Load Balancer是针对apiserver的。

下面以一个实验验证高可用性。准备三台机器以及一个vip(阿里云,openstack等都有提供)。

haproxy提供高可用性,负载均衡,基于TCP和HTTP的代理,支持数以万记的并发连接。

haproxy可安装在主机上,也可使用docker容器实现。文本采用第二种。

创建配置文件/etc/haproxy/haproxy.cfg,重要部分以中文注释标出:

在三个节点启动haproxy

keepalived是以VRRP(虚拟路由冗余协议)协议为基础, 包括一个master和多个backup。 master劫持vip对外提供服务。master发送组播,backup节点收不到vrrp包时认为master宕机,此时选出剩余优先级最高的节点作为新的master, 劫持vip。keepalived是保证高可用的重要组件。

keepalived可安装在主机上,也可使用docker容器实现。文本采用第二种。( )

配置keepalived.conf, 重要部分以中文注释标出:

启动keepalived:

查看keepalived master容器日志:

查看master vip:

可以看到vip已绑定到keepalived master

下面进行破坏性测试:

暂停keepalived master节点haproxy

查看keepalived master日志

可以看到haproxy检测失败,priority降低,同时另一节点10.53.61.195 priority 比master节点高,master置为backup

查看10.53.61.195 keepalived日志:

可以看到10.53.61.195被选举为新的master。

至此高可用实验完成,接下来就是使用kubeadm安装k8s组件,这里就不展开了。

二、kubernetes为什么叫k8s

k和s之间有8个字母

三、如何使用k8s client-python

This is Kubernetes API python client code. This code is generated by

swagger-codegen. Kubernetes provide swagger-spec to generate client code for

different versions. The specs live in Kubernetes repo.

* Free software: Apache license

* Documentation: h /developer/python-k8sclient

* Source: /cgit/openstack/python-k8sclient

* Bugs: python-k8sclient

See also

四、如何卸载k8s flannel

一、某些软件运行时在任务栏列表中是不可见的,而是以进程的 方式在后台运行,常见的有来电 防火墙、短信防火墙类软件、杀毒软件、 加密软件等需要实时监控的软件,因此,当然 无法 删除正 在运行 中的软件;二 、解决方法 为:1、用进程管理器查看进程表, 如你能 判 断哪个线程是该程序的进程,则可以关 闭它,如无法判断则可以先设臵不 显示系统进程;2、然后关闭所有的非 系统进程, 这样就可以到程 序管理里正常卸载软件了。

转载请注明:亿家范文网 » k8s高可用部署:keepalived + haproxy