从Kubernetes 1.35版本起,动态资源分配(DRA)正式升级为GA稳定特性,彻底补齐了GPU、NPU等异构硬件的精细化管理短板。在AI算力需求爆发的当下,部署一套1.35+版本集群,已经成为AI基础设施建设的高性价比选择。

本文使用最新版ktubuntu 4个节点使用二条命令,部署k8s 1.35.6

1 说明

关于kt

kt是基于kk二次开发产物,本次升级至3.2.0版本,相关k8s组件版本升级至最新稳定版。新增多项功能,并优化了部署步骤,现在部署k8s只需要两条命令,部署ks3.4.1版本也是两条命令。

注:本文使用kt版本3.2.0,由于k8s1.35.0需要内核5.10、cgroup V2以上版本,若使用其他操作系统,请谨慎操作。

2.环境准备

服务器基本信息

主机名 用途 OS 配置 IP
harbor 私有仓库 Ubuntu24.04 2核4G 192.168.85.143
node1 工作管理节点1 Ubuntu24.04 2核4G 192.168.85.171
node2 工作管理节点2 Ubuntu24.04 2核4G 192.168.85.172
node3 工作管理节点3 Ubuntu24.04 2核4G 192.168.85.173

2.1 上传离线制品

操作系统不需要安装docker,不需要设置selinux,swap等操作,全新的操作系统即可。建议使用全新操作系统!

将离线制品、配置文件和 kt上传至服务器其中一个节点(本文以master为例),后续在该节点操作创建集群。

2.2 修改配置文件

根据实际服务器信息,配置到生成的config-sample.yaml

kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: harbor, address: 192.168.85.143, internalAddress: 192.168.85.143, user: root, password: "123213"}
  - {name: node1, address: 192.168.85.171, internalAddress: 192.168.85.171, user: root, password: "123213"}
  - {name: node2, address: 192.168.85.172, internalAddress: 192.168.85.172, user: root, password: "123213"}
  - {name: node3, address: 192.168.85.173, internalAddress: 192.168.85.173, user: root, password: "123213"}
  roleGroups:
    etcd:
    - node1
    - node2
    - node3
    control-plane:
    - node1
    - node2
    - node3
    worker:
    - node1
    - node2
    - node3
    # 如需使用 kk 自动部署镜像仓库,请设置该主机组 (建议仓库与集群分离部署,减少相互影响)
    # 如果需要部署 harbor 并且 containerManager 为 containerd 时,由于部署 harbor 依赖 docker,建议单独节点部署 harbor
    registry:
    - harbor
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers 
    internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.35.6
    clusterName: cluster.local
    autoRenewCerts: true
    containerManager: containerd
  etcd:
    type: kubekey
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  registry:
    type: harbor
    registryMirrors: []
    insecureRegistries: []
    privateRegistry: "dockerhub.kubekey.local"
    namespaceOverride: "kubesphereio"
    auths: # if docker add by `docker login`, if containerd append to `/etc/containerd/config.toml`
      "dockerhub.kubekey.local":
        username: "admin"
        password: Harbor@123 # 此处可自定义,kk3.1.8新特性
        skipTLSVerify: true # Allow contacting registries over HTTPS with failed TLS verification.
        plainHTTP: false # Allow contacting registries over HTTP.
        certsPath: "/etc/docker/certs.d/dockerhub.kubekey.local"
  addons: []

3 创建 Harbor私有仓库

3.1 创建镜像仓库

./kt init registry -f config-sample.yaml -a artifact-x86-k8s1356.tar.gz

此命令会在harbor节点自动安装dockerdocker-compose,添加证书信用链并创建需要存放镜像的项目。

等待一会可以看到所有操作执行成功

4 创建k8s集群

./kt create cluster -f config-sample.yaml -a artifact-x86-k8s1356.tar.gz

此命令kt会自动初始化所有节点,并将离线制品中的镜像推送到harbor 私有仓库。

注:若节点数量非常多,可执行./kt init-os -f config-sample.yaml,有失败可多执行几次再执行创建集群。

执行后会有如下提示,输入yes/y继续执行

等待一段时间最终可以看到安装成功的消息

5 验证

可以看到3个节点已就绪并且所有pod已正常运行

6 总结

本文主要以离线方式部署,适用于在线和离线两种状态,而如果在线状态,那么步骤3可忽略,两条命令即可搞定。

不论x86还是arm,不论在线还是离线,不论国际还是国产操作系统,使用kt工具和对应的离线安装包,安装k8s和kubesphere 一如既往的快和简单。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐