基于 sealos 部署 k8s 1.30 集群
Sealos 是传说中最丝滑的k8s集群部署方式。Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。Sealos 是一个基于 Kubeadm 的 K8s 一键安装工具,它可以帮助我们快速搭建一个 K8s 集群,而且还可以帮我们自动安装一些常用的插件,甚至要搭建一个高可用的集群也是非常方便的。集群镜像版本支持说明支持 Containerd 的 K8s。
1、sealos简介
官网:K8s > Quick-start > Deploy-kubernetes | Sealos Docs
Sealos 是传说中最丝滑的k8s集群部署方式。
Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。
Sealos 是一个基于 Kubeadm 的 K8s 一键安装工具,它可以帮助我们快速搭建一个 K8s 集群,而且还可以帮我们自动安装一些常用的插件,甚至要搭建一个高可用的集群也是非常方便的。
推荐使用 Containerd 作为容器运行时 (CRI) 的集群镜像版本,Containerd 是一种轻量级、高性能的容器运行时,与 Docker 兼容。使用 Containerd 的 Kubernetes 镜像可以提供更高的性能和资源利用率。以下是支持 Containerd 的集群镜像版本支持说明:
K8s 版本 | Sealos 版本 | CRI 版本 | 集群镜像版本 |
---|---|---|---|
<1.25 |
>=v4.0.0 |
v1alpha2 | labring/kubernetes:v1.24.0 |
>=1.25 |
>=v4.1.0 |
v1alpha2 | labring/kubernetes:v1.25.0 |
>=1.26 |
>=v4.1.4-rc3 |
v1 | labring/kubernetes:v1.26.0 |
>=1.27 |
>=v4.2.0-alpha3 |
v1 | labring/kubernetes:v1.27.0 |
>=1.28 |
>=v5.0.0 |
v1 | labring/kubernetes:v1.28.0 |
根据 Kubernetes 版本的不同,您可以选择不同的 Sealos 版本和 CRI 版本。例如,如果您要使用 Kubernetes v1.26.0 版本,您可以选择 sealos v4.1.4-rc3 及更高版本,并使用 v1 CRI 版本。
当然,你也可以选择使用 Docker 作为容器运行时,以下是支持 Docker 的集群镜像版本支持说明:
K8s 版本 | Sealos 版本 | CRI 版本 | 集群镜像版本 |
---|---|---|---|
<1.25 |
>=v4.0.0 |
v1alpha2 | labring/kubernetes-docker:v1.24.0 |
>=1.25 |
>=v4.1.0 |
v1alpha2 | labring/kubernetes-docker:v1.25.0 |
>=1.26 |
>=v4.1.4-rc3 |
v1 | labring/kubernetes-docker:v1.26.0 |
>=1.27 |
>=v4.2.0-alpha3 |
v1 | labring/kubernetes-docker:v1.27.0 |
>=1.28 |
>=v5.0.0 |
v1 | labring/kubernetes-docker:v1.28.0 |
与支持 Containerd 的 Kubernetes 镜像类似,您可以根据 Kubernetes 版本的不同选择不同的 Sealos 版本和 CRI 版本。例如,如果您要使用 Kubernetes v1.26.0 版本,您可以选择 sealos v4.1.4-rc3 及更高版本,并使用 v1 CRI 版本。
2、sealos cli部署K8S集群
2.1、先决条件
首先需要下载 Sealos 命令行工具,sealos 是一个简单的 Golang 二进制文件,可以安装在大多数 Linux 操作系统中。
以下是一些基本的安装要求:
-
每个集群节点应该有不同的主机名。主机名不要带下划线。
-
所有节点的时间需要同步。
-
需要在 K8s 集群的第一个 master 节点上运行
sealos run
命令,目前集群外的节点不支持集群安装。 -
建议使用干净的操作系统来创建集群。不要自己装 Docker!
-
支持大多数 Linux 发行版,例如:Ubuntu、CentOS、Rocky linux。
-
支持 Docker Hub 中的所有 Kubernetes 版本。
-
支持使用 Containerd 作为容器运行时。
-
在公有云上安装请使用私有 IP。
2.2、查看镜像
Sealos 所有的集群镜像都可以在 cluster-image-docs 仓库里找到。除了推送到 Docker Hub 之外,这些镜像还被同步到了阿里云的镜像仓库。
Docker Hub 上可以通过以下链接查看 Sealos 所有的集群镜像:https://hub.docker.com/u/labring。
使用 Registry Explorer 可以查看 K8s 集群镜像的所有版本,直接输入 registry.cn-shanghai.aliyuncs.com/labring/kubernetes
,然后点击“Submit Query”:
就会看到这个集群镜像的所有 tag。
Docker Hub 同理,输入 docker.io/labring/kubernetes
即可查看所有 tag。
K8s 的小版本号越高,集群越稳定。例如 v1.29.x,其中的 x 就是小版本号。建议使用小版本号比较高的 K8s 版本。到本文截止时间为止,v1.29 最高的版本号是 v1.29.9,而 v1.30 最高的版本号是 v1.30.5,所以建议使用 v1.29.9。你需要根据实际情况来选择最佳的 K8s 版本
2.3、安装k8s单机版
$ sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.29.9 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4 --single
2.4、安装k8s集群
所有节点安装 tar (最小化安装没有tar)
yum install -y tar
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.30.5 \
registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1 \
--masters 192.168.93.20 \
--nodes 192.168.93.21,192.168.93.22 -p '123'
3、集群维护
3.1、增加k8s节点
sealos add --nodes 192.168.93.21,192.168.93.22
3.2、删除k8s节点
sealos delete --nodes 192.168.93.21,192.168.93.22
3.3、清理k8s集群
$ sealos delete --nodes 192.168.93.21,192.168.93.22
4、配置kubectl及kubeadm命令自动补全&配置加速
安装bash-completion
yum install -y bash-completion
配置自动补全
source /usr/share/bash-completion/bash_completion
临时生效kubectl自动补全
source <(kubectl completion bash)
只在当前用户生效kubectl自动补全
echo 'source <(kubectl completion bash)' >>~/.bashrc
配置kubectl自动补全全局生效
echo 'source <(kubectl completion bash)' >/etc/profile.d/k8s.sh && source /etc/profile
生成kubectl的自动补全脚本
kubectl completion bash >/etc/bash_completion.d/kubectl
在/etc/docker/daemon.json中添加
"registry-mirrors":["https://p3kgr6db.mirror.aliyuncs.com",
"https://docker.m.daocloud.io",
"https://your_id.mirror.aliyuncs.com",
"https://docker.nju.edu.cn/",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://cr.console.aliyun.com"
],
[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl restart docker.service
5、测试
[root@k8s-master ~]# kubectl create deployment nginx --image=nginx:1.14-alpine
deployment.apps/nginx created
[root@k8s-master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@k8s-master ~]# kubectl get deployments.apps,pods,svc
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 1/1 1 1 13s
NAME READY STATUS RESTARTS AGE
pod/nginx-867c7df848-hvkdk 1/1 Running 0 13s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13m
service/nginx NodePort 10.96.3.23 <none> 80:31038/TCP 5s
更多推荐
所有评论(0)