Skip to content

实战-Sealos一键部署k8s集群-20240307(测试成功)

实战-Sealos一键部署k8s集群-2024.3.7(测试成功)

image-20240306214140401

目录

[toc]

原文链接

https:sealosv5.0.0-beta4k8sv1.28.7(当前时间:2024年3月7日k8s最新版本为v1.29.2)helm:v3.9.4cilium:v1.14.7

实验软件

无。

Sealos 简介

​ 在对容器运行时和 K8s 有了一个整体上的认识后,接下来我们就需要来搭建一个 K8s 集群了,搭建 K8s 的方式方法有很多,主要有二进制和 Kubeadm(容器)两种方式,对于初学者来说不建议使用二进制方式搭建,因为二进制方式搭建 K8s 集群需要手动安装各种组件,而且还需要手动配置各种组件,非常麻烦,而且容易出错。

​ 更推荐大家使用 Kubeadm 快速搭建一套集群起来,先用起来,等熟悉了之后再去了解各个组件的原理和配置。

​ 另外,还有一种方式是使用 Kind工具来搭建集群,Kind是一个用于在 Docker 容器中运行本地 Kubernetes 集群的工具,它使用 Docker 容器作为节点,这样就可以在本地快速搭建一个 K8s 集群,非常适合用于本地开发和测试。

​ 前面四期我们都是重点讲解的使用 Kubeadm 来搭建 K8s 集群,这一期我们讲使用一个更方便快捷的工具 Sealos来搭建 K8s 集群,Sealos是一个基于 Kubeadm 的 K8s 一键安装工具,它可以帮助我们快速搭建一个 K8s 集群,而且还可以帮我们自动安装一些常用的插件,甚至要搭建一个高可用的集群也是非常方便的。

Sealos官方文档:

https:172.29.9.80 master172.29.9.81 node1172.29.9.82 node2EOF

在每个节点上添加 hosts 信息:

节点的 hostname 必须使用标准的 DNS 命名,另外千万别用默认 localhost的 hostname,会导致各种错误出现的。在 Kubernetes 项目里,机器的名字以及一切存储在 Etcd 中的 API 对象,都必须使用标准的 DNS 命名(RFC 1123)。可以使用命令 hostnamectl set-hostname xxx来修改 hostname。

(2)配置防火墙等、关闭swap分区、时间服务;

(3)升级内核到最新版本

升级后当前内核版本:

升级前默认系统内核:

因为本次使用的CNI是cilium,因此对内核的版本要求会高些,这里需要先升级内核的。(一般是5以上就行)

具体内核升级脚本:

https:yuminstall-yjq

要使用 Sealos安装 Kubernetes 集群非常简单,只需要在 master节点上运行 sealos run命令,然后指定一些参数即可。比如我们这里安装一个 v1.27.10版本的集群(v1.28.x版本暂时有问题),并使用 Cilium网络插件,然后指定 masternode节点的 IP 地址,最后指定 ssh的密码即可:

bash
$sealosrunregistry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.28.7registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.14.7\--masters172.29.9.80\--nodes172.29.9.81,172.29.9.82-pyour_host_password172.29.9.82:22*TheKubeletwasinformedofthenewsecureconnectiondetails.172.29.9.82:22172.29.9.82:22Run'kubectl get nodes'onthecontrol-planetoseethisnodejointhecluster.172.29.9.82:222024-03-07T09:36:09infosucceededinjoining172.29.9.82:22asworker172.29.9.81:22172.29.9.81:22Thisnodehasjoinedthecluster:172.29.9.81:22*Certificatesigningrequestwassenttoapiserverandaresponsewasreceived.172.29.9.81:22*TheKubeletwasinformedofthenewsecureconnectiondetails.172.29.9.81:22172.29.9.81:22Run'kubectl get nodes'onthecontrol-planetoseethisnodejointhecluster.172.29.9.81:222024-03-07T09:36:10infosucceededinjoining172.29.9.81:22asworker2024-03-07T09:36:10infostarttosynclvscarestaticpodtonode:172.29.9.82:22master:[172.29.9.80:6443]2024-03-07T09:36:10infostarttosynclvscarestaticpodtonode:172.29.9.81:22master:[172.29.9.80:6443]172.29.9.81:222024-03-07T09:36:10infogeneratorlvscarestaticpodissuccess172.29.9.82:222024-03-07T09:36:10infogeneratorlvscarestaticpodissuccess2024-03-07T09:36:10infoExecutingpipelineRunGuestinCreateProcessor.ℹ️UsingCiliumversion1.14.7🔮Auto-detectedclustername:kubernetes🔮Auto-detectedkube-proxyhasbeeninstalled2024-03-07T09:36:12infosucceededincreatinganewcluster,enjoyit!2024-03-07T09:36:12info__________________/\\ /\ \ /\ \ /\__\ /\ \ /\ \/::\ \ /::\ \ /::\ \ /:///::\ \ /::\ \/:/\ \ \ /:/\:\ \ /:/\:\ \ /:///:/\:\ \ /:/\ \ \_\:\~\ \ \ /::\~\:\ \ /::\~\:\ \ /:///:/\:\ \ _\:\~\ \ \/\ \:\ \ \__\ /:/\:\ \:\__\ /:/\:\ \:\__\ /:/__//:/__/\:\__\ /\ \:\ \ \__\\:\ \:\ \/__/\:\~\:\ \/__/\/__\:\/://\:\ \ \:\ \ /://\:\ \:\ \/__/\:\\:\__\ \:\ \:\__\ \:://\:\ \ \:\ /://\:\ \:\__\\:\/://\:\ \/__//://\:\ \ \:\/://\:\/://\:://\:\__\ /://\:\__\ \:://\:://\/__/\/__/\/__/\/__/\/__/\/__/Website:https:Address:github.com/labring/sealosVersion:5.0.0-beta4-5c22d8aa

注意:

上面我们用到的集群镜像都可以在 cluster-image-docs仓库里找到。

image-20240307102126818

image-20240307102157555

image-20240307102304292

3、验证

  • 安装完成后,我们可以使用 kubectl get nodes命令来查看集群的节点信息:
bash
[root@master ~]#kubectl get po -ANAMESPACENAMEREADYSTATUSRESTARTSAGEkube-systemcilium-5lcvs1/1Running047mkube-systemcilium-m7wtk1/1Running047mkube-systemcilium-mplk41/1Running047mkube-systemcilium-operator-64b8744fc5-llvgw1/1Running1(46m ago) 47mkube-systemcoredns-5dd5756b68-dq9rr1/1Running047mkube-systemcoredns-5dd5756b68-dzsx81/1Running047mkube-systemetcd-master1/1Running047mkube-systemkube-apiserver-master1/1Running047mkube-systemkube-controller-manager-master1/1Running047mkube-systemkube-proxy-5pw7p1/1Running047mkube-systemkube-proxy-6nkq81/1Running047mkube-systemkube-proxy-6qkmr1/1Running047mkube-systemkube-scheduler-master1/1Running047mkube-systemkube-sealos-lvscare-node11/1Running046mkube-systemkube-sealos-lvscare-node21/1Running046m[root@master ~]#kubectl get nodeNAMESTATUSROLESAGEVERSIONmasterReadycontrol-plane47mv1.28.7node1Ready<none>47mv1.28.7node2Ready<none>47mv1.28.7[root@master ~]#

完成后,给当前虚机做一个快照。

4、扩展

  • 如果想要增加一个 master 节点,则可以使用如下所示的 sealos add命令:
bash
sealosadd--masters192.168.0.21,192.168.0.19
  • 如果要增加 node 节点,则使用 --nodes参数即可:
bash
sealosadd--nodes192.168.64.21,192.168.64.19
  • 同理要删除节点也是非常简单的,使用 sealos delete命令即可。

  • 如果在安装过程中出现了任何问题也可以使用 sealos reset命令来重置集群,然后重新安装。

这样我们就成功搭建了一个 K8s 集群,而且还安装了 Cilium网络插件,非常方便快捷,包括容器运行时、内核参数优化等都是自动化的,非常适合新手使用。

image-20240307102519368

image-20240307102548960

  • 此外我们还可以安装各种分布式应用,比如使用下面的命令即可轻松在 K8s 集群上安装 openebs
bash
sealosrunregistry.cn-shanghai.aliyuncs.com/labring/openebs:v3.9.0
  • 如果想要自定义安装配置,可以通过使用 sealos gen命令生成一个 Clusterfile文件,然后修改其中的配置,最后使用 sealos apply -f Clusterfile命令来启动集群,例如:
bash
sealosgenlabring/kubernetes:v1.25.0labring/helm:v3.8.2labring/calico:v3.24.1\--masters192.168.0.2,192.168.0.3,192.168.0.4\--nodes192.168.0.5,192.168.0.6,192.168.0.7--passwd'xxx'>Clusterfile

注意:labring/helm应当在 labring/calico之前。

  • 然后可以参考官方文档或运行 kubeadm config print init-defaults命令来打印 kubeadm 配置文件的默认值,然后修改 Clusterfile文件中的配置,最后使用 sealos apply -f Clusterfile命令来启动集群。

  • 如果你还想在集群中集成 sealos cloud的服务, 那么这 master 节点直接知行下面的命令即可:

bash
curl-sfLhttps:--image-registry=registry.cn-shanghai.aliyuncs.com--zh\--proxy-prefix=https:CloudVersion:latestURL:https:adminUsername:adminadminPassword:sealos2023

FAQ

其它版本

  • 老师文档版本
bash
Ubuntu22.04系统,内核版本:`5.15.0-94-generic`v1.27.10k8s集群sealosrunregistry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.10registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4\--masters192.168.0.111\--nodes192.168.0.116,192.168.0.118-p[your-ssh-passwd]
  • 老师实际测试版本(测试成功)
bash
Ubuntu22.04系统,内核版本:`5.15.0-94-generic`v1.28.7k8s集群sealosrunregistry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.28.7registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.14.7\--masters172.29.9.80\--nodes172.29.9.81,172.29.9.82-pyour_host_password
  • 自己测试版本(测试成功)
bash
centos系统(CentOSLinuxrelease7.6.1810),内核版本:`5.4.270-1`Linuxmaster5.4.270-1.el7.elrepo.x86_64v1.28.7k8s集群sealosrunregistry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.28.7registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.14.7\--masters172.29.9.80\--nodes172.29.9.81,172.29.9.82-pyour_host_password

image-20240307100946988

查看集群镜像

https:

版权:此文章版权归 One 所有,如有转载,请注明出处!

链接:可点击右上角分享此页面复制文章链接

上次更新时间:

最近更新