海豹云创建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]

相关推荐
CodeMartain3 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
牛奶咖啡134 小时前
k8s容器编排技术实践——使用containerd作为容器运行时部署k8s集群
kubernetes·k8s的安装部署·开启系统的ipvs支持·安装containerd·containerd配置加速器·安装k8s的工具·安装calico网络插件
万里侯4 小时前
云原生数据备份与恢复:保障数据安全的最佳实践
微服务·容器·k8s
llrraa20105 小时前
配置docker国内镜像源
运维·docker·容器
阿里云云原生5 小时前
阿里云 STAROps 全域智能运维平台发布!从“被动救火”到“主动自治”
云原生
2301_780789666 小时前
手游遇到攻击为什么要用SDK游戏盾手游遇到攻击为什么要用 SDK 游戏盾?
安全·web安全·游戏·架构·kubernetes·ddos
35岁程序员的自救之路6 小时前
AiBBS - 面向下一个十年的AI + 云原生社区系统
人工智能·云原生
珂玥c7 小时前
k8s集群ingress碎碎念
云原生·容器·kubernetes
佳杰云星7 小时前
如何给大模型集群选“大脑”?智算调度与管理平台 10 维选型指南(附选型评分表)
人工智能·kubernetes·大模型·云计算·gpu·算力调度·智算中心
比特森林探险记9 小时前
context 在 gRPC / Gin / K8s 中的实战
容器·kubernetes·gin