国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

最简单的 Kubernetes 高可用安装方式!

发布时间:2019/09/03标签:   节点    点击量:

原标题:最简单的 Kubernetes 高可用安装方式!
本文教你怎样用一条下令构建 Kubernetes 高可用集群且不依靠 HAProxy 和 Keepalived,也无需 Ansible。经过内核 IPVS 对 apiserver 停止负载平衡,而且带 apiserver 安康检测。架构以下图所示:最简单的 Kubernetes 高可用安装方式!本名目名叫 sealos,旨在做一个简略洁净轻量级稳固的 Kubernetes 装置东西,能很好的支撑高可用装置。实在把一个货色做的功效强盛并不难,然而做到极简且机动可扩大就比拟难。以是在完成时就必需要遵守这些准则。计划准则sealos 特征与上风: 支撑离线装置,东西与资本包(二进制顺序、设置文件、镜像 yaml 文件等)分别,如许差别版本调换差别离线包便可 证书延期 应用简略 支撑自界说设置 内核负载,极端稳固,由于简略以是排查询题也极端简略为甚么不必 Ansible?1.0 版本确切是用 Ansible 完成,然而用户仍是须要先装 Ansible,装 Ansible 又须要装 Python 和一些依靠等,为了不让用户那末费事把 Ansible 放到了容器里供用户应用。假如不想设置免密钥应用用户名暗码时又须要 ssh-pass 等,总之不能让我中意,不是我想的极简。以是我想就来一个二进制文件东西,没有任何依靠,文件散发与近程下令都经过挪用 SDK 完成以是不依靠别的任何货色,总算让我这个有洁癖的人中意了。为甚么不必 Keepalived 和 HAProxy?HAProxy 用 static pod 跑没有太大成绩,还算好治理,Keepalived 当初大局部开源 Ansible 剧本都用 yum 或许 apt 等装,如许十分的弗成控,有以下优势: 源纷歧致能够招致版本纷歧致,版本纷歧致连设置文件都纷歧样,我已经检测剧本不失效始终找不到起因,厥后才晓得是版本起因。 体系起因装置不上,依靠库成绩某些情况就间接装不上了。 看了网上许多装置剧本,许多检测剧本与权重调理方法都错误,间接去检测 HAProxy 过程在不在,实在是应当去检测 apiserver 是不是 healthz 的,假如 apiserver 挂了,即便 HAProxy 过程存在,集群也会不畸形了,就是伪高可用了。 治理不便利,经过 Prometheus 对集群停止监控,是能间接监控到 static pod 的,然而用 systemd 跑又须要独自设置监控,且重启还须要独自拉起。不如 kubelet 同一治理来的洁净简练。 咱们还呈现过 Keepalived 把 CPU 占满的情形。以是为懂得决这个成绩,我把 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 了。应用教程装置依靠 装置并启动 Docker 下载 Kubernetes 离线装置包 下载最新版本 sealos 支撑 Kubernetes 1.14.0+ 务必同步效劳器时光装置多 Master HA 只要履行以下下令:$sealosinit--master192.168.0.2\--master192.168.0.3\--master192.168.0.4\--node192.168.0.5\--userroot\--passwdyour-server-password\--versionv1.14.1\--pkg-url/root/kube1.14.1.tar.gz

版权信息Copyright ? IT技术教程 版权所有??? ICP备案编号:鲁ICP备09013610号