最简朴的 Kubernetes 高可用安装方法!
副问题[/!--empirenews.page--]
本文教你怎样用一条呼吁构建 Kubernetes 高可用集群且不依靠 HAProxy 和 Keepalived,也无需 Ansible。通过内核 IPVS 对 apiserver 举办负载平衡,而且带 apiserver 康健检测。架构如下图所示: 本项目名叫 sealos,旨在做一个简朴干净轻量级不变的 Kubernetes 安装器材,能很好的支持高可用安装。着实把一个对象做的成果强盛并不难,可是做到极简且机动可扩展就较量难。以是在实现时就必必要遵循这些原则。 计划原则sealos 特征与上风:
为什么不消 Ansible?1.0 版本确实是用 Ansible 实现,可是用户照旧必要先装 Ansible,装 Ansible 又必要装 Python 和一些依靠等,为了不让用户那么贫困把 Ansible 放到了容器里供用户行使。假如不想设置免密钥行使用户名暗码时又必要 ssh-pass 等,总之不能让我满足,不是我想的极简。 以是我想就来一个二进制文件器材,没有任何依靠,文件分发与长途呼吁都通过挪用 SDK 实现以是不依靠其余任何对象,总算让我这个有洁癖的人满足了。 为什么不消 Keepalived 和 HAProxy?HAProxy 用 static pod 跑没有太大题目,还算好打点,Keepalived 此刻大部门开源 Ansible 剧本都用 yum 可能 apt 等装,这样很是的不行控,有如下劣势:
所觉得了办理这个题目,我把 Keepalived 跑在了容器中(社区提供的镜像根基是不行用的),改革中间也是产生过许多题目,最终亏得办理了。 总而言之,累觉不爱,以是在想能不能甩开 HAProxy 和 Keepalived 做出更简朴更靠得住的方案出来,还真找到了。 当地负载为什么不行使 Envoy 可能 Nginx?我们通过当地负载办理高可用题目。 表明一下当地负载,就是在每个 Node 节点上都启动一个负载平衡,上游就是三个 Master。负载方法有许多 IPVS、Envoy、Nginx 等,我们最终行使内核 IPVS。 假如行使 Envoy 之类的负载平衡器,则必要在每个节点上都跑一个历程,耗损的资源更多,这是我不但愿的。IPVS 现实也多跑了一个历程 LVScare,可是 LVScare 只是认真打点 IPVS 法则,和 kube-proxy 相同,真正的流量照旧从很不变的内核走的,不必要再把包丢到用户态中行止理赏罚。 在架构实现上有个题目会让行使 Envoy 等变得很是忧伤,就是 join 时假如负载平衡没有成立那是会卡住的,kubelet 就不会起来,所觉得此你必要先启动 Envoy,意味着你又不能用 static pod 去打点它,同上面 Keepalived 宿主机陈设一样的题目,用 static pod 就会彼此依靠,逻辑死锁,鸡说要先有蛋,蛋说要先有鸡,最后谁都没有。 行使 IPVS 就纷歧样,我可以在 join 之前先把 IPVS 法则成立好,再去 join 就可以了,然后对法则举办保卫即可。一旦 apiserver 不行会见了,会自动整理掉全部 Node 上对应的 IPVS 法则, 比及 Master 规复正常时添加返来。 为什么要定制 kubeadm?起首是因为 kubeadm 把证书逾期时刻写死了,以是必要定制把它改成 99 年,固然大部门人可以本身去签个新证书,可是我们照旧不想再依靠个此外器材,就直接改源码了。 其次就是做当地负载时修改 kubeadm 代码是最利便的,由于在 join 时我们必要做两个事,第一是 join 之前先建设好 IPVS 法则,第二是建设 static pod。假如这块不去定制 kubeadm 就报静态 Pod 目次已存在的错误,忽略这个错误很不优雅。并且 kubeadm 中已经提供了一些很好用的 SDK 供我们去实现这个成果。 且这样做之后最焦点的成果都集成到 kubeadm 中了,sealos 就单单酿因素发和执行上层呼吁的轻量级器材了,增进节点时我们也就可以直接用 kubeadm 了。 行使教程安装依靠
安装 多 Master HA 只需执行以下呼吁:
然后,就没有然后了……没错,你的高可用集群已经装好了,是不是认为一脸懵逼?就是这么简朴快捷! 单 Master 多 Node:
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |