加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

最简朴的 Kubernetes 高可用安装方法!

发布时间:2019-09-03 17:07:33 所属栏目:移动互联 来源:佚名
导读:本文教你怎样用一条呼吁构建 Kubernetes 高可用集群且不依靠 HAProxy 和 Keepalived,也无需 Ansible。通过内核 IPVS 对 apiserver 举办负载平衡,而且带 apiserver 康健检测。架构如下图所示: 本项目名叫 sealos,旨在做一个简朴干净轻量级不变的 Kubern
副问题[/!--empirenews.page--]

本文教你怎样用一条呼吁构建 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 了。

行使教程

安装依靠

  1. 安装并启动 Docker
  2. 下载 Kubernetes 离线安装包
  3. 下载最新版本 sealos
  4. 支持 Kubernetes 1.14.0+
  5. 务必同步处事器时刻

安装

多 Master HA 只需执行以下呼吁:

  1. $ sealos init --master 192.168.0.2  
  2. --master 192.168.0.3  
  3. --master 192.168.0.4  
  4. --node 192.168.0.5  
  5. --user root  
  6. --passwd your-server-password  
  7. --version v1.14.1  
  8. --pkg-url /root/kube1.14.1.tar.gz 

然后,就没有然后了……没错,你的高可用集群已经装好了,是不是认为一脸懵逼?就是这么简朴快捷!

单 Master 多 Node:

  1. $ sealos init --master 192.168.0.2  
  2. --node 192.168.0.5   
  3. --user root  
  4. --passwd your-server-password  
  5. --version v1.14.1  
  6. --pkg-url /root/kube1.14.1.tar.gz  

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读