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

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

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

进级节制节点

  1. $ kubeadm upgrade plan  
  2. $ kubeadm upgrade apply v1.15.0 

重启 kubelet:

  1. $ systemctl restart kubelet 

着实 kubelet 进级很简朴粗暴,我们只必要把新版本的 kubelet 拷贝到 /usr/bin 下面,重启 kubelet service 即可,假如措施正在行使不让包围那么就停一下 kubelet 再举办拷贝,kubelet bin 文件在 conf/bin 目次下。

进级其余节制节点:

  1. $ kubeadm upgrade apply 

进级 Node

遣散节点(要不要遣散看环境, 喜好粗暴的直接来也没啥):

  1. $ kubectl drain $NODE --ignore-daemonsets 

更新 kubelet 设置:

  1. $ kubeadm upgrade node config --kubelet-version v1.15.0 

然后进级 kubelet。同样是替代二进制再重启 kubelet service。

  1. $ systemctl restart kubelet 

召回失去的恋爱:

  1. $ kubectl uncordon $NODE 

验证

  1. $ kubectl get nodes 

假如版本信息都对的话根基就进级乐成了。

kubeadm upgrade apply 干了啥?

  1. 搜查集群是否可进级
  2. 执行版本进级计策 哪些版本之间可以进级
  3. 确认镜像是否存在
  4. 执行节制组件进级,假如失败就回滚,着实就是 apiserver、controller manager、scheduler 等这些容器
  5. 进级 kube-dns 和 kube-proxy
  6. 建设新的证书文件,备份老的假如其高出 180 天

源码编译

由于行使了 netlink 库,以是保举在容器内举办编译,只需一条呼吁:

  1. $ docker run --rm -v $GOPATH/src/github.com/fanux/sealos:/go/src/github.com/fanux/sealos -w /go/src/github.com/fanux/sealos -it golang:1.12.7 go build 

假如你行使的是 go mod,则必要指定通过 vendor 编译:

  1. $ go build -mod vendor 

卸载

  1. $ sealos clean  
  2. --master 192.168.0.2  
  3. --master 192.168.0.3  
  4. --master 192.168.0.4  
  5. --node 192.168.0.5  
  6. --user root  
  7. --passwd your-server-password 

sealos 实现道理

执行流程

  • 通过 sftp 可能 wget 把离线安装包拷贝到方针呆板上(masters 和 nodes)。
  • 在 master0 上执行 kubeadm init。
  • 在其余 Master 上执行 kubeadm join 并配置节制面,这个进程会在其余 Master 上起动 etcd 并与 master0 的 etcd 构成集群,并启动节制平面的组件(apiserver、controller 等)。
  • join node 节点,会在 Node 上设置 IPVS 法则,设置 /etc/hosts 等。

全部对 apiserver 的哀求都是通过域名举办会见,由于 Node 必要通过假造 IP 毗连多个 Master,每个节点的 kubelet 与 kube-proxy 会见 apiserver 的假造地点是纷歧样的,而 kubeadm 又只能在设置文件中指定一个地点,以是行使一个域名可是每个节点理会的 IP 差异。当 IP 地点产生变革时仅必要修改理会地点即可。

当地内核负载

通过这样的方法实现每个 Node 上通过当地内核负载平衡会见 masters:

  1. +----------+                       +---------------+  virturl server: 127.0.0.1:6443 
  2. | mater0   |<----------------------| ipvs nodes    |    real servers: 
  3. +----------+                      |+---------------+            10.103.97.200:6443 
  4.                                 |                             10.103.97.201:6443 
  5. +----------+                      |                             10.103.97.202:6443 
  6. | mater1   |<---------------------+ 
  7. +----------+                      | 
  8.                                 | 
  9. +----------+                      | 
  10. | mater2   |<---------------------+ 
  11. +----------+ 

在 Node 上起了一个 LVScare 的 static pod 去保卫这个 IPVS,一旦 apiserver 不行会见了,会自动整理掉全部 Node 上对应的 IPVS 法则, Master 规复正常时添加返来。

(编辑:湖南网)

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

热点阅读