上一节学习了Kubernetes集群的几的种部署方式,推荐在生产环境使用二进制部署的方案。 使用二进制部署的最佳实践是,参考kubeadm对k8s集群的配置管理实践,开发一套ansible playbook,实现二进制k8s集群的自动化部署和控制配置管理。 本意思节将讨论一下这套二进制部署方案如何实现集群的高可用。
一个k8s集群里的Node分为control-plane和普通node两种角色。control-plane节点负责集群的控制和调度,node节点负责运行工作负载。 运行工作负载的node节点是可以随时加入新的节点,任意横向是什么扩展的,那么k8s集群的高可用的重点就落在了控制平面control-plane节点上。 一个高可用k8s集群的需要部署多个control-是什么plane节点,一般建议意思至少3个。
以下是K8S官方推荐的高可用集群部署拓扑图:
首先将k8s数据的存储数据etcd以独立的高可用集群部署到k8s集群外部。
k8s的控制平面control-plane节点部署3个,这样控制平面的三个核集群心组件kube-apiserver, kube-controller-manager, kube-scheduler就都冗余了3个实例。
因为controller-manager和scheduler负责Pod的调度和各种资源对象的管理,所以同一时刻它们各自只能有一个实例工作,即它们要经过选举来决定谁作为leader进行工作。 定义kube-controller-manager, kube-scheduler它们都有一个启动参数集群--leader-elect默认为true,表示当它们以多副本运行时将启用选举并尝试获得leader的身份。
最后说一下负载均衡器(load balancer)的选型,可以任何硬件或软件负载均衡器,例如阿里云的S控制LB,在bare metal环境下可以选择部署haproxy keepalived。
参考链接
- https://kubernetes.io/zh/docs/setup/production-enviro定义nment/tools/kubeadm/ha-topology/
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123456@qq.com 举报,一经查实,本站将立刻删除。