sealos是以kubernetes为内核的云操作系统。在早期阶段,操作系统采用了分层的体系结构,后来演变成了像Linux和Windows这样的内核体系结构。
(1)基于sealos,你可以将数据中心中的所有机器想象成一台“抽象”的超级计算机,sealos就是用来管理这台超级计算机的操作系统,kubernetes是这个操作系统的内核。
(2)此后云计算IaaS,PaaS,SaaS的划分会慢慢淡去,只有云操作系统驱动(CSI,CNI,CRI实现)云操作系统内核(kubernetes)和分布式应用组成。
核心特性
(1)集群生命周期的管理。快速安装高可用K8S集群,添加,删除节点,清理集群,备份与自动恢复等。
(2)下载和使用完全兼容OCI标准的分布式应用。OpenEBS,MinIO,Ingress,Postgresql,MySQL,Redis等。
(3)分布式应用的定制化。用Dockerfile构建分布式应用镜像,保存所有的依赖。发布分布式应用镜像到Docker Hub。融合多个应用构建专属的云平台。
部署sealos的先决条件
为每个节点设置不同的主机名称
hostnamectl set-hostname <newhostname>
并且同步系统时间,不赘述。
基于sealos安装k8s
(1)首先为sealos添加软件源,版本4.1.2
echo "deb [trusted=yes] https://apt.fury.io/labring/ /" | sudo tee /etc/apt/sources.list.d/labring.list
(2)更新apt的源
apt-get update
(3)安装sealos前需要把原本的docker删除,
apt-get purge --autoremove docker.io
否则在用sealos部署k8s时会报下面的错误
ERROR [2022-09-06 09:50:42] >> The machine docker is not clean. Please clean docker the system
(4)安装sealos
apt-get install sealos
(5)搭建k8s集群
可供修改sealos镜像源的文件位置
/etc/containers/registries.conf
sealos run labring/kubernetes:v1.24.2 labring/calico:v3.22.1 --masters 192.168.36.128 --nodes 192.168.36.129,192.168.36.130 -p 123
其中 -p 是node节点上root用户的密码。执行一下语句,并出现以下信息说明k8s已经部署成功
root@master:/home/sword/DC/sealos# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready control-plane 119m v1.24.2 192.168.36.128 <none> Ubuntu 20.04 LTS 5.4.0-125-generic containerd://1.6.2
worker1 Ready <none> 119m v1.24.2 192.168.36.129 <none> Ubuntu 20.04 LTS 5.4.0-125-generic containerd://1.6.2
worker2 Ready <none> 119m v1.24.2 192.168.36.130 <none> Ubuntu 20.04 LTS 5.4.0-125-generic containerd://1.6.2
以上有一列ROLES说明了每个节点在整个集群中的角色,如果是control-plane,说明它是master,如果是<none>,则是worker。
安装k8s-dashboard
(1)使用以下命令可以查看k8s目前提供的服务。
root@master:/home/sword/DC/sealos# kubectl get svc --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
calico-system calico-kube-controllers-metrics ClusterIP 10.96.2.93 <none> 9094/TCP 3h32m
calico-system calico-typha ClusterIP 10.96.2.74 <none> 5473/TCP 3h33m
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h33m
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 3h33m
(2)创建kubernetes-dashboard服务。
sealos run docker.io/labring/kubernetes-dashboard:v1.0.8
上面的命令运行到最后可以看到以下信息
--------------------------------
$(kubectl -n kubernetes-dashboard create token admin-user)
--------------------------------"
You can login through this TOKEN
--------------------------------
eyJhbGciOiJSUzI1NiIsImtpZCI6ImVKMk1sUWk3bzNQc2lISUNZS2FLN2Z0UFdrbHhTaEZRSGNlRWR4YVpxYW8ifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjYyNTE2MDUzLCJpYXQiOjE2NjI1MTI0NTMsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiMWRmY2M5NjQtNDEzYi00YmFhLWJkNzAtNzM3ZDgxZDU5OWJiIn19LCJuYmYiOjE2NjI1MTI0NTMsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.hCs1-SCJll7jGI02UjMK1_1cRjmRSZMvHkWhIK8Ome-fBS6OnMCpdgODuUddMQMH1MpXIP7ybcXh5IT-P2pA1iJv3JDSFY-1IvjzKLjZllR1DtFAEb-yDgEcUs-2t3M5rTsV3o2FlSQsBLNshugDyPsGswAlwNpx6LWmjaXryn-AAj4jUC7zZECoQNmf19eXaUEXCKl7I_Eu6n8USjs3wc0yL56q0tP-ywDmQTFh2gDrLA9qxr6surk4DMomUuUI7oMk3A6KvrtXs1qd3-FYZL6V4pirNiUoiShcFVTNjHjY_3IJNAsBa0H2_gGNHi0Bw6WzcMvBV0sFYfai7Ve8SQ
--------------------------------
(3)创建k8s服务器代理
kubectl port-forward -n kubernetes-dashboard --address 0.0.0.0 svc/kubernetes-dashboard 8001:443
(4)访问dashboard
访问 https://<服务器ip>:8001 即可访问dashboard,此处的8001对应上面命令中的8001,进入页面之后,输入(2)中的token即可。
基于sealos安装helm
运行以下命令
sealos run labring/helm:v3.8.2