k8s安装工具:sealos设计原理及离线包结构分析
執行流程
- 在執行機器上生成證書和kubeconfig文件
- 在執行機器上wget下載離線包和sealos二進制使用scp拷貝到目標機器上(masters和nodes)
- 在master0上執行kubeadm init
- 在其它master上執行kubeadm join 并設置控制面,這個過程會在其它master上起etcd并與master0的etcd組成集群,并啟動控制組建(apiserver controller等)
- join node節點,會在node上配置ipvs規則,配置/etc/hosts等
有個細節是所有對apiserver進行訪問都是通過域名,因為master上連接自己就行,node需要通過虛擬ip鏈接多個master,這個每個節點的kubelet與kube-proxy訪問apiserver的地址是不一樣的,而kubeadm又只能在配置文件中指定一個地址,所以使用一個域名但是每個節點解析不同。
使用域名的好處還有就是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恢復正常時添加回來。
所以在你的node上加了三個東西,可以直觀的看到:
復制代碼
cat /etc/kubernetes/manifests # 這下面增加了lvscare的static pod ipvsadm -Ln # 可以看到創建的ipvs規則 cat /etc/hosts # 增加了虛擬IP的地址解析sealos已經把lvscare本地負載和百年證書已經在sealos中支持,使用起來極其方便!!!
離線包結構分析
復制代碼
. |____docker # docker的離線包 | |____docker.tgz | |____README.md |____bin # 指定版本的bin文件 | |____conntrack | |____kubeadm | |____kubelet | |____kubelet-pre-start.sh | |____kubectl | |____crictl |____images # kubernetes的離線鏡像 | |____images.tar | |____README.md |____shell # 離線包的部署腳本,sealos會自動調用 | |____master.sh | |____init.sh | |____docker.sh |____README.md |____conf | |____net # 高版本的sealos已經集成 | | |____calico.yaml | |____10-kubeadm.conf # kubeadm的配置文件 | |____calico.yaml | |____kubeadm.yaml | |____kubelet.service | |____docker.servicinit.sh腳本中拷貝bin文件到$PATH下面,配置systemd,關閉swap防火墻等,然后導入集群所需要的鏡像。
master.sh主要執行了kubeadm init
conf下面有有我需要的如kubeadm的配置文件,calico yaml文件等等
sealos會調用二者。 所以大部分兼容不同版本都可以微調腳本做到。
參考鏈接:
https://www.sealyun.com/instructions
總結
以上是生活随笔為你收集整理的k8s安装工具:sealos设计原理及离线包结构分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kube-controller-mana
- 下一篇: docker离线包相关脚本编写示例:do