一、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