| 升级控制节点 $ kubeadm upgrade plan  $ kubeadm upgrade apply v1.15.0 
 重启 kubelet: $ systemctl restart kubelet 
 其实 kubelet 升级很简单粗暴,我们只需要把新版本的 kubelet 拷贝到 /usr/bin 下面,重启 kubelet service  即可,如果程序正在使用不让覆盖那么就停一下 kubelet 再进行拷贝,kubelet bin 文件在 conf/bin 目录下。 升级其它控制节点: $ kubeadm upgrade apply 
 升级 Node 驱逐节点(要不要驱逐看情况, 喜欢粗暴的直接来也没啥): $ kubectl drain $NODE --ignore-daemonsets 
 更新 kubelet 配置: $ kubeadm upgrade node config --kubelet-version v1.15.0 
 然后升级 kubelet。同样是替换二进制再重启 kubelet service。 $ systemctl restart kubelet 
 召回失去的爱情: $ kubectl uncordon $NODE 
 验证 $ kubectl get nodes 
 如果版本信息都对的话基本就升级成功了。 kubeadm upgrade apply 干了啥? 
    检查集群是否可升级执行版本升级策略 哪些版本之间可以升级确认镜像是否存在执行控制组件升级,如果失败就回滚,其实就是 apiserver、controller manager、scheduler 等这些容器升级 kube-dns 和 kube-proxy创建新的证书文件,备份老的如果其超过 180 天 源码编译 因为使用了 netlink 库,所以推荐在容器内进行编译,只需一条命令: $ 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 编译: $ go build -mod vendor 
 卸载 $ sealos clean  --master 192.168.0.2  --master 192.168.0.3  --master 192.168.0.4  --node 192.168.0.5  --user root  --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: +----------+                       +---------------+  virturl server: 127.0.0.1:6443 | mater0   |<----------------------| ipvs nodes    |    real servers: +----------+                      |+---------------+            10.103.97.200:6443                                 |                             10.103.97.201:6443 +----------+                      |                             10.103.97.202:6443 | mater1   |<---------------------+ +----------+                      |                                 | +----------+                      | | mater2   |<---------------------+ +----------+ 
 在 Node 上起了一个 LVScare 的 static pod 去守护这个 IPVS,一旦 apiserver 不可访问了,会自动清理掉所有 Node  上对应的 IPVS 规则, Master 恢复正常时添加回来。 (编辑:南平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |