海豹云创建K8S集群

我会为你详细讲解基于 sealy 工具(Sealyun 集群管理工具)、通过 clusterfile 配置文件指定机器搭建 K8s 集群的完整流程,包括环境准备、配置编写、集群部署和验证。

一、核心前提:安装 sealy 工具(任意一台控制机 / 目标机器均可)

sealy 是 Sealyun 官方的集群部署工具,先完成工具安装:

bash

运行

复制代码
# 下载并安装 sealy 工具(国内源,一键安装)
curl -sfL https://oss.sealyun.com/sealyun-script/install.sh | sh -s v1.2.0

# 验证安装是否成功
sealy version
# 输出类似 "sealy version v1.2.0" 即表示安装成功

二、编写 clusterfile 配置文件(核心:指定机器)

clusterfile 是 sealy 部署集群的核心配置文件,通过它可以精准指定集群的 Master/Node 节点、IP、角色、K8s 版本等信息。

1. 完整的 clusterfile 示例(自定义指定机器)

创建 clusterfile.yaml 文件,内容如下(根据你的实际机器 IP / 密码 / 角色修改):

yaml

复制代码
apiVersion: sealyun.com/v1alpha1
kind: Cluster
metadata:
  name: my-k8s-cluster  # 集群名称,自定义
spec:
  # 全局配置
  ssh:
    user: root          # 机器登录用户(建议root,权限足够)
    password: "123456"  # 机器登录密码(如果用密钥登录,替换为 privateKey: "xxx")
    port: 22            # 机器SSH端口
  kubernetes:
    version: v1.28.0    # 指定K8s版本
    imageRepo: registry.aliyuncs.com/google_containers  # 国内镜像源,避免拉取失败
    network:
      plugin: calico    # 网络插件(calico/flannel,推荐calico,适配性更强)
      cidr: 10.244.0.0/16  # Pod网段,默认即可
  # 节点配置(核心:指定每台机器的IP和角色)
  hosts:
  - ip: 192.168.1.10    # 指定作为Master的机器IP
    hostname: k8s-master  # 自定义主机名
    role: [master]      # 角色为master
  - ip: 192.168.1.11    # 指定作为Node的机器IP1
    hostname: k8s-node1
    role: [node]        # 角色为node
  - ip: 192.168.1.12    # 指定作为Node的机器IP2
    hostname: k8s-node2
    role: [node]
  # 可选:如果需要多Master高可用,新增master节点即可
  # - ip: 192.168.1.13
  #   hostname: k8s-master2
  #   role: [master]
配置说明(关键参数)
  • ssh 段:必须确保指定的用户 / 密码 / 端口能登录所有目标机器,否则部署会失败;
  • hosts 段:ip核心 ,必须填写你要指定的机器 IP;role 支持 master/node/etcd(单 Master 集群无需指定 etcd);
  • kubernetes.version:支持大部分稳定版(如 v1.26.x、v1.27.x、v1.28.x),建议选最新稳定版。

三、执行部署(指定机器拉起集群)

在安装了 sealy 工具的机器上,执行以下命令:

bash

运行

复制代码
# 执行部署(-f 指定clusterfile配置文件)
sealy apply -f clusterfile.yaml

# 部署过程会自动完成:
# 1. 检查目标机器环境(关闭防火墙/swap、安装依赖);
# 2. 拉取K8s镜像;
# 3. 初始化Master节点;
# 4. 将指定Node节点加入集群;
# 5. 安装网络插件。

四、验证集群部署结果

部署完成后,登录任意一台 Master 节点,执行以下命令验证:

bash

运行

复制代码
# 配置kubectl(sealy部署后会自动生成配置,直接执行即可)
source /etc/profile.d/k8s.sh

# 查看节点状态(确认指定的机器都已加入且状态为Ready)
kubectl get nodes

预期输出(所有指定机器都在列表中,STATUS 为 Ready):

plaintext

复制代码
NAME         STATUS   ROLES           AGE   VERSION
k8s-master   Ready    control-plane   5m    v1.28.0
k8s-node1    Ready    <none>          3m    v1.28.0
k8s-node2    Ready    <none>          2m    v1.28.0

五、常见问题处理

  1. SSH 登录失败 :检查 clusterfile 中的 ssh.user/password/port 是否正确,确保目标机器开启 SSH 且端口互通;
  2. 镜像拉取失败 :确认 kubernetes.imageRepo 配置为国内源(如阿里云),或检查机器网络能否访问外网;
  3. 节点状态 NotReady :等待网络插件安装完成(calico/flannel 启动需要 1-2 分钟),或执行 kubectl get pods -n kube-system 查看网络插件 Pod 是否正常运行。

六、集群卸载(如需重新部署)

如果需要清理指定机器的集群环境,执行:

bash

运行

复制代码
# 卸载集群(-f 指定原clusterfile)
sealy delete -f clusterfile.yaml

总结

  1. sealy apply -f clusterfile 方式的核心是通过 clusterfile.yamlhosts精准指定机器 IP 和角色,无需手动在每台机器执行命令;
  2. 部署前需确保 clusterfile 中的 SSH 配置能登录所有目标机器,这是部署成功的关键;
  3. 部署过程全自动化,无需手动初始化 Master / 加入 Node,适合快速搭建指定机器的 K8s 集群。

如果你的机器需要用密钥登录 (而非密码),只需将 clusterfile 中的 password: "123456" 替换为 privateKey: "你的私钥内容" 即可;如果需要部署多 Master 高可用集群,只需在 hosts 中新增 master 节点并指定 role: [master]

相关推荐
忍冬行者2 小时前
k8s集群容器创建报failed to write 10087 to cgroup.procs处理
云原生·容器·kubernetes
柠檬汁Dev2 小时前
这套云原生开发工作流,把上线时间从1天缩短到3分钟
云原生
xujiangyan_2 小时前
k8s中的pod管理及其优化
linux·容器·kubernetes
2301_787328492 小时前
36.docker swarm
运维·docker·容器
xujiangyan_2 小时前
K8s控制器:管理Pod副本的智能管家
docker·容器·kubernetes
yBmZlQzJ11 小时前
财运到内网穿透域名解析技术机制与中立评估
运维·经验分享·docker·容器·1024程序员节
sim202012 小时前
把某个pod固定到某个节点
kubernetes
yBmZlQzJ12 小时前
内网穿透工具通过端口转发实现内外网通信
运维·经验分享·docker·容器·1024程序员节
DeepHacking13 小时前
Overleaf 本地Docker部署
运维·docker·容器