【K8s】专题三(1):Kubernetes 安装方法之 Sealer

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!

公众号二维码


目录

一、Sealer 简介

二、Sealer 下载、安装

三、Sealer 部署 Kubernetes 集群

四、Sealer 常用命令

五、Sealer 构建集群镜像(ClusterImage)


一、Sealer 简介

Sealer 项目诞生于阿里云智能,并于 2022 年 4 月 26 日正式成为 CNCF 官方的沙箱项目。

Sealer 项目旨在解决分布式软件的打包、分发与运行的标准化问题,提供了一种分布式应用交付方式。Sealer 通过将 Kubernetes 集群和所有应用程序的依赖关系打包到一个“集群镜像”中,解决了分布式应用交付的一致性问题。

笔者作为一名实施交付工作者,在第一次接触到 Sealer 时就发现它非常适合离线交付场景,可以降低在不同客户环境中进行应用交付的难度和复杂性,因此在后续工作中也进行了大量的实践。

Sealer 项目地址:GitHub - sealerio/sealer

Sealer 官网地址:sealer

Sealer 帮助文档:What is Sealer? | sealer


二、Sealer 下载、安装
# AMD架构
wget https://github.com/sealerio/sealer/releases/download/v0.8.7/sealer-v0.8.7-linux-amd64.tar.gz
tar -xzf sealer-v0.8.7-linux-amd64.tar.gz -C /usr/bin

# ARM架构
wget https://github.com/sealerio/sealer/releases/download/v0.8.7/sealer-v0.8.7-linux-arm64.tar.gz
tar -xzf sealer-v0.8.7-linux-amd64.tar.gz -C /usr/bin

# 查看版本信息
sealer version


三、Sealer 部署 Kubernetes 集群

1、准备工作

# 关闭防火墙
systemctl disable --now firewalld

# 关闭 selinxu
setenforce 0
sed -i ’s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

# 清空 iptables 规则
iptables -F && iptables -t nat -F

# 禁用 swap 分区
swapoff -a
sed -i '/swap / s/^\(.*\)$/#\1/g' /etc/fstab

# /etc/hosts 文件添加条目(需要保证主机的 hostname 唯一)
172.16.200.166  master
172.16.200.167  node

# 配置主机间 SSH 免密(详细过程略)

2、部署集群

  • 方式一:sealer run
sealer run kubernetes:v1.19.8 -m 172.16.200.166 -n 172.16.200.167

🔔 提示一
# kubernetes:v1.19.8:指定集群镜像名称,可以通过命令 sealer search kubernetes 查询
# -m:即 --master,指定集群 Master 节点的 IP 地址,多个 IP 通过 ,进行分隔
# -n:即 --node,指定集群 Node 节点的 IP 地址,多个 IP 通过 ,进行分隔

🔔 提示二
# Sealer 默认使用 Calico 作为 CNI 组件
# Nginx-Ingress-Controller 等组件需要自行安装
  • 方式二:sealer apply
sealer apply -f clusterfile.yaml

🔔 提示
可以通过 clusterfile.yaml 自定义部署配置,如 kubeadm 配置、Docker 配置等

clusterfile.yaml 自定义配置示例

🔔 定义集群信息
---
apiVersion: sealer.cloud/v2
kind: Cluster
metadata:
  name: mycluster
spec:
  image: kubernetes:v1.19.13
  ssh:
    user: root
    pk: /root/.ssh/id_rsa
    passwd: xxxx
    port: 22
  hosts:
    - ips: [ 172.16.200.166 ]
      roles:
      - master
    - ips: [ 172.16.200.167 ]
      roles:
      - node

🔔 定义集群配置
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.19.13
etcd:
  local:
    dataDir: /data/etcd
networking:
  dnsDomain: cluster.local
  podSubnet: 10.10.0.0/16
  serviceSubnet: 10.96.0.0/22

🔔 定义 Calico 配置
---
apiVersion: sealer.aliyun.com/v1alpha1
kind: Config
metadata:
  name: calico
spec:
  path: etc/custom-resources.yaml
  data: |
    apiVersion: operator.tigera.io/v1
    kind: Installation
    metadata:
      name: default
    spec:
      registry: sea.hub:5000
      calicoNetwork:
        ipPools:
        - cidr: 10.10.0.0/16
        nodeAddressAutodetectionV4:
          interface: "eth.*|en.*"

🔔 定义 Docker 配置
---
apiVersion: sealer.aliyun.com/v1alpha1
kind: Config
metadata:
  name: docker-config
spec:
  path: etc/daemon.json
  data: |
    {
      "bip": "192.168.100.1/24",
      "max-concurrent-downloads": 20,
      "log-driver": "json-file",
      "log-level": "warn",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      },
      "mirror-registries": [
        {
          "domain": "*",
          "mirrors": [
            "https://sea.hub:5000"
          ]
        }
      ],
      "exec-opts": [
        "native.cgroupdriver=systemd"
      ],
      "data-root": "/data/docker"
    }

3、实测结果

  • Sealer 部署单节点集群大约需要 3 分钟,部署三节点集群大约需要 5 分钟,相当高效
  • Sealer 支持的操作系统也很广泛,并同时支持 AMD 64 架构和 ARM 64 架构
RedHat 7/8
CentOS 7.5~8.5
CentOS stream 8、9
Ubuntu 16.04、18.04、22.04
EulerOS 2.0、2.5
openEuler 20.03
openSUSE 15.1~15.4、42.3
Rocky Linux 8.5~8.7
Alibaba Cloud Linux 2.1903 LTS、3.2104 LTS
Kylin V10
UOS V20
NeoKylin V7Update


四、Sealer 常用命令
# 详见 http://sealer.cool/docs/command/sealer.html
sealer --help
Usage:
  sealer [command]

Available Commands:
  apply       apply a kubernetes cluster
  build       build an cloud image from a Kubefile
  cert        update k8s API server cert
  check       check the state of cluster 
  completion  generate autocompletion script for bash
  debug       Create debugging sessions for pods and nodes
  delete      delete a cluster
  exec        exec a shell command or script on all node.
  gen         Generate a Clusterfile to take over a normal cluster which not deployed by sealer
  gen-doc     generate document for sealer CLI with MarkDown format
  help        Help about any command
  images      list all cluster images
  inspect     print the image information or clusterFile
  join        join node to cluster
  load        load image from a tar file
  login       login image repository
  merge       merge multiple images into one
  prune       prune sealer data dir
  pull        pull cloud image to local
  push        push cloud image to registry
  rmi         remove local images by name
  run         run a cluster with images and arguments
  save        save image to a tar file
  search      sealer search kubernetes
  tag         tag a image as a new one
  upgrade     upgrade your kubernetes cluster
  version     show sealer version

Flags:
      --config string   config file (default is $HOME/.sealer.json)
  -d, --debug           turn on debug mode
  -h, --help            help for sealer
      --hide-path       hide the log path
      --hide-time       hide the log time
  -t, --toggle          Help message for toggle

Use "sealer [command] --help" for more information about a command.
# 查看集群镜像
sealer images

# 添加 Master 节点
sealer join -m 172.16.200.168

# 删除 Master 节点
sealer delete -m 172.16.200.168

# 添加 Node 节点
sealer join -n 172.16.200.168

# 删除 Node 节点
sealer delete -n 172.16.200.168

# 在集群节点上批量执行 shell 命令
sealer exec "cat /etc/hosts"

# 查看集群统计信息
sealer check

# 删除集群
sealer delete -a

# 升级集群版本
sealer upgrade kubernetes:v1.20.0


五、Sealer 构建集群镜像(ClusterImage)

1、编写 kubefile 文件

Kubefile 与 Dockerfile 极其相似,由连续列出的各种命令(指令)和参数组成,用于在基础 ClusterImage 上自动执行指令,构建新的 ClusterImage。

  • Docker 使用 Dockerfile 构建 Docker 镜像,并使用 Docker 镜像运行 Docker 容器,解决了单主机应用程序的几乎所有交付问题
  • Sealer 使用 Kubefile 构建 ClusterImage,并使用 ClusterImage 运行 Kubernetes 集群,将交付概念扩展到集群级别,并且主要关注分布式应用程序的视角
FROM kubernetes:v1.19.13
 
COPY daemon.json etc/

附 kubefile 相关说明:sealer/docs/design/Kubefile.md at main · sealerio/sealer · GitHub

2、构建集群镜像

sealer build -t kubernetes:v1.19.13-fix -f kubefile .

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sealer是一种工具,用于在KubernetesK8s)集群中进行自动化部署和管理。它可以帮助用户简化K8s部署的过程,提供了一种快速、可靠的方式来安装和配置K8s集群。 首先,我们需要准备好运行K8s集群的机器。这些机器可以是物理服务器、虚拟机或云服务器。安装K8s所需的系统要求通常包括运行最新版本的Linux操作系统(如Ubuntu、CentOS等),具备足够的计算和存储资源,并且能够访问互联网。 接下来,我们可以下载和安装sealer工具。sealer是一个开源项目,可以在GitHub上找到它的源代码。我们可以将其克隆到本地,并按照官方文档提供的指南进行编译和安装。一旦安装完成,我们可以使用sealer提供的命令行界面来操作K8s集群。 在安装K8s之前,我们需要配置sealer的一些参数。这些参数包括K8s集群的节点数量、每个节点的IP地址、K8s版本、网络插件等。我们可以通过修改sealer的配置文件来进行这些配置,并确保每个参数都正确设置。 安装K8s之前,我们还需要安装Docker,因为Kubernetes依赖于Docker来运行容器。我们可以使用sealer提供的命令来安装和配置Docker,以确保它与Kubernetes兼容。 安装Kubernetes时,sealer会自动下载并配置所需的组件,如kube-apiserver、kube-controller-manager、kube-scheduler等。它还会为每个节点生成所需的证书和密钥,并将其配置到相应的文件中。 一旦安装完成,我们可以使用sealer提供的命令来验证K8s集群的状态,如查看节点、Pods等。我们还可以使用sealer来添加、删除和更新集群中的节点,以满足我们的需求。 总的来说,sealer是一个功能强大的工具,可以帮助我们简化Kubernetes安装和管理。通过正确配置sealer并按照指南进行操作,我们可以轻松地搭建和维护一个高可用、可靠的Kubernetes集群。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值