传言sealos是最丝滑的k8s集群部署工具,没错像德芙一般丝滑,但如果你是第一次使用sealos,建议你不要去百度,经过我一晚上的测试,基本都是copy的,一个命令写错,全网人跟着错,没啥用纯浪费时间,而且关于报错后排查的资料很少,可能是用的人少吧,上官网都比百度省时间。
官网地址: https://sealos.io/zh-Hans/docs/Intro
一、服务器规划
kubernetes集群大体上分为两类:一主多从和多主多从。
1、一M多N:一台Master节点和多台Node节点,但是有单机故障风险,适合用于测试环境
2、多M多N:多台Master节点和多台Node节点,安全性高,适合用于生产环境
我配置的两M一N有其它目的,不必在意。
作用 | 私网IP | 操作系统 | 配置 |
master1 | 192.168.0.123 | Centos7.9 | 2C/4G/50G |
master2 | 192.168.0.124 | Centos7.9 | 2C/4G/50G |
node1 | 192.168.0.125 | Centos7.9 | 2C/4G/50G |
软件版本如下:
组件/工具 | 版本号 |
sealos | v4.3.7_linux_amd64 |
kubernetes | v1.25.0 |
helm | v3.8.2 |
calico | v3.24.1 |
二、环境准备
1、初始化环境
每台机器都需要进行初始化环境
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
时间同步
yum install ntpdate -y
ntpdate time.windows.com
2、设置主机名
每台机器都需要配置hosts
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
vi /etc/hosts # 按照集群规划,在每台机器的hosts文件中添加以下内容
192.168.0.123 master1
192.168.0.124 master2
192.168.0.125 node1
在每台几器上都进行测试,各节点要全部ping通
3、免密登录
#在master上生成密钥对
ssh-keygen #一路按回车即可,会在当前用户.ssh目录下生产相应秘钥文件
#拷贝公钥到其它master、node节点上
ssh-copy-id -i .ssh/id_rsa.pub [email protected]
ssh-copy-id -i .ssh/id_rsa.pub [email protected]
三、安装sealos
1、下载sealos
wget https://github.com/labring/sealos/releases/download/v4.3.7/sealos_4.3.7_linux_amd64.tar.gz
2、解压赋权
tar zxvf sealos_4.3.7_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
四、安装k8s集群
1、生成集群配置
生成一个包含多个镜像、指定了主节点和工作节点的集群的配置
有docker版:
sealos gen labring/kubernetes-docker:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \
--masters 192.168.0.123,192.168.0.124 \
--nodes 192.168.0.125 --passwd Admin123 --port 22 --output Clusterfile
无docker版:
sealos gen labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \
--masters 192.168.0.123,192.168.0.124 \
--nodes 192.168.0.125 --passwd Admin123 --port 22 --output Clusterfile
参数说明:
--masters : master节点地址
--nodes : node节点地址
--passwd : 服务器root密码
--port 22 : ssh端口
--output : 生成的文件路径及名称
2、修改配置文件
在生成了 Clusterfile 之后,用户可以根据自己的需求来修改这个文件。添加或修改环境变量;修改集群cidr配置,不添加和修改也可以直接创建集群。
不修改默认安装启动组件有:coredns、etcd、kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy、kube-sealos-lvscare。
3、创建集群
kubectl apply -f Clusterfile
这里需要等待一段时间,安装成功后如图:
查看集群节点
Kubectl get nodes
查看pod状态
kubectl get pod -n kube-system
安装成功。
4、验证一下
创建一个nginx-deployment.yaml文件
vi nginx-deployment.yaml
添加如下内容
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
创建deployment资源
kubectl apply -f nginx-deployment.yaml
查看创建的pod