官方网站:https://sealyun.com/
项目地址:https://github.com/fanux/sealos
先决条件
sealos 是一个简单的 go 二进制文件,可以安装在大多数 Linux 操作系统中。
以下是一些基本的安装要求:
- 每个集群节点应该有不同的主机名。 主机名不要带下划线。
- 所有节点的时间同步。
- 在 Kubernetes 集群的第一个节点上运行
sealos run命令,目前集群外的节点不支持集群安装。
- 建议使用干净的操作系统来创建集群。不要自己装 Docker。
- 支持大多数 Linux 发行版,例如:Ubuntu CentOS Rocky linux。
- 支持 DockerHub 中支持的 Kubernetes 版本。
- 支持使用 containerd 作为容器运行时。
- 在公有云上请使用私有 IP。
sealos安装
二进制下载
1
2
3
4
5
6
7
8
|
#### amd64
wget https://github.com/labring/sealos/releases/download/v4.1.3/sealos_4.1.3_linux_amd64.tar.gz \
&& tar zxvf sealos_4.1.3_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
### arm64
wget https://github.com/labring/sealos/releases/download/v4.1.3/sealos_4.1.3_linux_arm64.tar.gz \
&& tar zxvf sealos_4.1.3_linux_arm64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
|
其他安装方式
参考官方文档https://docs.sealos.io/zh-Hans/docs/getting-started/installation
部署
单机部署
1
2
3
4
5
|
# 其中--env criData为指定cri的存储目录
sealos run labring/kubernetes:v1.25.3-4.1.3 labring/helm:v3.10.1 labring/flannel:v0.18.1 --env criData=/home/containerd-data --single
#删除污点
kubectl taint node --all node-role.kubernetes.io/control-plane-
|
集群安装
1
2
3
4
|
# 其中-p [your-ssh-passwd]为节点的密码,如果各节点密码不一样的话 可以在sealos所在的节点生成密钥,然后对其他节点做免密登录配置
sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \
--masters 172.16.77.36 \
--nodes 172.16.77.189,172.16.77.87,172.16.77.87 -p [your-ssh-passwd]
|
Clusterfile自定义安装
运行 sealos gen 生成一个 Clusterfile,例如
1
2
3
|
$ sealos gen labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \
--masters 192.168.0.2,192.168.0.3,192.168.0.4 \
--nodes 192.168.0.5,192.168.0.6,192.168.0.7 --passwd xxx > Clusterfile
|
生成的 Clusterfile 如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
apiVersion: apps.sealos.io/v1beta1
kind: Cluster
metadata:
creationTimestamp: null
name: default
spec:
hosts:
- ips:
- 192.168.0.2:22
- 192.168.0.3:22
- 192.168.0.4:22
roles:
- master
- amd64
- ips:
- 192.168.0.5:22
- 192.168.0.6:22
- 192.168.0.7:22
roles:
- node
- amd64
image:
- labring/kubernetes:v1.24.0
- labring/calico:v3.24.1
ssh:
passwd: xxx
pk: /root/.ssh/id_rsa
port: 22
user: root
status: {}
|
将calico Clusterfile 追加到生成的 Clusterfile 后,然后更新集群配置。例如,要修改 pods 的 CIDR 范围,就可以修改 networking.podSubnet 和 spec.data.spec.calicoNetwork.ipPools.cidr 字段。最终的 Clusterfile 会像是这样:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
apiVersion: apps.sealos.io/v1beta1
kind: Cluster
metadata:
creationTimestamp: null
name: default
spec:
hosts:
- ips:
- 192.168.0.2:22
- 192.168.0.3:22
- 192.168.0.4:22
roles:
- master
- amd64
- ips:
- 192.168.0.5:22
- 192.168.0.6:22
- 192.168.0.7:22
roles:
- node
- amd64
image:
- labring/kubernetes:v1.25.0
- labring/helm:v3.8.2
- labring/calico:v3.24.1
ssh:
passwd: xxx
pk: /root/.ssh/id_rsa
port: 22
user: root
status: {}
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
networking:
podSubnet: 10.160.0.0/12
---
apiVersion: apps.sealos.io/v1beta1
kind: Config
metadata:
name: calico
spec:
path: manifests/calico.yaml
data: |
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
# Configures Calico networking.
calicoNetwork:
# Note: The ipPools section cannot be modified post-install.
ipPools:
- blockSize: 26
# Note: Must be the same as podCIDR
cidr: 10.160.0.0/12
encapsulation: IPIP
natOutgoing: Enabled
nodeSelector: all()
nodeAddressAutodetectionV4:
interface: "eth.*|en.*"
|
运行 sealos apply -f Clusterfile 启动集群。集群运行成功后会把 Clusterfile 保存到 .sealos/default/Clusterfile 文件中,可以修改其中字段来重新 apply 对集群进行变更。
有关Clusterfile的其他使用参考官方文档https://docs.sealos.io/zh-Hans/docs/cli/apply
配置
安装其他应用
1
2
3
4
|
sealos run labring/helm:v3.8.2 # install helm
sealos run labring/openebs:v1.9.0 # install openebs
sealos run labring/minio-operator:v4.4.16 labring/ingress-nginx:4.1.0 \
labring/mysql-operator:8.0.23-14.1 labring/redis-operator:3.1.4 # oneliner
|
增加节点
1
2
3
4
5
|
#增加node节点
sealos add --nodes 172.16.77.86
#增加master节点
sealos add --masters 172.16.77.87
|
删除节点
1
2
3
4
5
|
#删除node节点
sealos delete --nodes 172.16.77.86
#删除master节点
sealos delete --masters 172.16.77.87
|
清理集群