使用sealos安装k8s集群

官方网站: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.podSubnetspec.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

清理集群

1
sealos reset
Buy me a coffee
支付宝
微信
0%