版本:v25.12

Linux后端安装业务集群

本文档介绍使用bke和kubectl进行业务集群搭建验证。

节点要求

  • 节点可以连通外部网络。
  • 节点可以使用root用户登录。
  • 引导节点上需要安装tar工具。

输入图片说明 须知:
建议您的节点环境为裸机操作系统,未安装任何docker与Kubernetes组件,否则可能会发生版本冲突导致安装失败。如需在存量环境试验性安装,可下载孵化期工具env-check进行环境校验。

管理集群

引导节点初始化完成后,在/bke/cluster目录下会生成三个默认配置的yaml文件,分别是:

  • 1master.yaml:用于创建1个master节点的管理集群。
  • 1master1node.yaml:用于创建1个master节点和1个worker节点的管理集群。
  • 3master.yaml:用于创建3个master节点的管理集群,可配置负载均衡器成为高可用的管理集群。

下面1master.yaml为例。

修改1master.yaml文件

对1master.yaml文件进行编辑,填入正确的节点信息。

输入图片说明 说明:
自定义addon安装参考附录章节。

yaml
apiVersion: bke.bocloud.com/v1beta1
kind: BKECluster
metadata:
  creationTimestamp: null
  name: bke-cluster
  namespace: bke-cluster
spec:
  KubeletConfigRef:  # kubelet的自定义配置
    name: bke-kubelet
    namespace: bke-kubelet
  clusterConfig:      
    addons:
    - name: kubeproxy
      param:
        clusterNetworkMode: calico
      version: v1.33.1-of.1
    - name: calico
      param:
        calicoMode: vxlan
        ipAutoDetectionMethod: skip-interface=nerdctl*
      version: v3.27.3
    - name: coredns
      version: v1.10.1
    - block: true     # 注意为cluster-api组件,管理集群有此项addon,业务集群无此项addon
      name: cluster-api
      param:
        manage: "true"
        offline: "true"
        sandbox: deploy.bocloud.k8s:40443/kubernetes/pause:3.9
      version: v1.4.3
    - name: openfuyao-system-controller   # openFuyao的核心组件addon
      param:
        helmRepo: https://helm.openfuyao.cn/_core
      version: latest
    cluster:
      apiServer:
        extraArgs:
          max-mutating-requests-inflight: "3000"
          max-requests-inflight: "1000"
          watch-cache-sizes: node#1000,pod#5000
      certificatesDir: /etc/kubernetes/pki
      containerRuntime:
        cri: containerd
        param:
          data-root: /var/lib/containerd
        runtime: runc
      containerdConfigRef:    # containerd的自定义配置
        name: bke-containerd
        namespace: bke-containerd
      containerdVersion: v2.1.1
      controllerManager:
        extraArgs:
          kube-api-burst: "1000"
          kube-api-qps: "1000"
      etcd:
        dataDir: /var/lib/etcd
      httpRepo:    # http仓库,离线安装需要把ip改为实际的引导节点ip
        domain: http.bocloud.k8s
        ip: 192.168.200.173    # 自定义仓库需要修改
        port: "40080"
        prefix: ""
      imageRepo:
        domain: deploy.bocloud.k8s  # image仓库,离线安装需要把ip改为实际的引导节点ip
        ip: 192.168.200.173   # 自定义仓库需要修改
        port: "40443"
        prefix: kubernetes
      kubelet:
        extraArgs:
          kube-api-burst: "2000"
          kube-api-qps: "1000"
        extraVolumes:
        - hostPath: /var/lib/kubelet
          name: kubelet-root-dir
      kubernetesVersion: v1.33.1-of.1
      networking:
        dnsDomain: cluster.local
        podSubnet: 10.250.0.0/16
        serviceSubnet: 10.96.0.0/16
      ntpServer: 192.168.200.173:123
      openFuyaoVersion: latest
      scheduler:
        extraArgs:
          kube-api-qps: "1000"
    customExtra:
      chartRepoPort: "38080"
      clusterapi: latest
      containerd: containerd-v2.1.1-linux-{.arch}.tar.gz
      domain: deploy.bocloud.k8s
      host: 192.168.200.173     # 修改为引导节点ip
      imageRepoPort: "40443"
      nfsserverpath: /
      otherRepo: ""
      otherRepoIp: ""
      otherSource: ""
      yumRepoPort: "40080"
    nodes:  # 实际创建集群所需要填写的节点
    - hostname: m1  # 修改为节点名称
      ip: 127.0.0.2  # 修改为实际节点ip
      password: '******'  # 修改为实际节点ip密码
      port: "22"   # 默认端口号为22
      role:
      - master/node
      - etcd
      username: root   # 默认为root权限用户
  controlPlaneEndpoint: {}
  pause: false
status:
  agentStatus: {}
  ready: false

其余项为默认项,可以不用更改。需要用户确保编辑提交的1master.yaml是可靠的,调谐器会进行校验,但无法确认业务逻辑上的正确性(如IP地址填错,密码填错等,需要用户确认填写信息无误)。

创建管理集群

执行以下指令完成集群的创建,-f后的文件替换为实际的1master.yaml的文件路径。

yaml
bke cluster create -f /bke/cluster/1master.yaml

业务集群

使用前面创建的管理集群,进一步创建业务集群,流程类似管理集群的创建流程,只需要将管理集群的addon注释掉,不进行安装。

yaml
- block: true     # 注意为cluster-api组件,管理集群有此项addon,业务集群无此项addon
  name: cluster-api
  param:
    manage: "true"
    offline: "true"
    sandbox: deploy.bocloud.k8s:40443/kubernetes/pause:3.9
  version: v1.4.3

用编辑好的1master.yaml创建业务集群,有两种方式:

  • 使用bke安装工具,需要在管理集群节点下载bke安装工具,并执行安装指令。
bash
# 方式1:快捷下载
curl -sfL https://openfuyao.obs.cn-north-4.myhuaweicloud.com/openFuyao/bkeadm/releases/download/1.0.5/download.sh | bash
# 方式2:校验下载文件的完整下载
## 下载download.sh脚本文件
curl -LO https://openfuyao.obs.cn-north-4.myhuaweicloud.com/openFuyao/bkeadm/releases/download/1.0.5/download.sh
## 下载download.sh文件的校验文件并进行校验(可选),校验成功会输出download.sh: OK,校验失败就需要联系openFuyao社区维护人员定位原因
curl -LO https://openfuyao.obs.cn-north-4.myhuaweicloud.com/openFuyao/bkeadm/releases/download/1.0.5/download.sh.sha256
sha256sum -c download.sh.sha256
## 运行download.sh文件下载bke安装工具,执行过程中会校验安装工具的sha256sum
chmod +x download.sh && ./download.sh
  • 使用kubectl安装,直接调用K8s的APIServer。
bash
# 先创建命名空间,对应着1master.yaml文件中metadata.namespace字段
kubectl create namespace metadata.namespace

# 执行安装指令
kuebctl apply -f /bke/cluster/1master.yaml

FAQ

  1. 创建集群过程中出现安装异常,尝试以下解决方案:
    • 查看bke指令执行后的控制台的日志初步定位。

    • 结合管理集群的bke-controller-manager的pod日志和业务集群节点的bkeagent日志(/var/log/bkeagent.log)定位。

      bash
      kubectl logs -n cluster-system bke-controller-manager-xxx -c manager
    • 查看集群节点的bke日志(/var/log/bke.log)定位。

后续操作

完成业务集群安装后,对核心组件生成、挂载证书操作说明请参见openFuyao核心组件的证书生成和挂载

附录

附录部分介绍些Linux后端安装集群的知识。

自定义addon安装

openFuyao提供了K8s集群的安装部署能力,通过添加addon字段安装用户自定义扩展件,bke-manifests提供了社区使用的扩展件的yaml文件,包括coredns、calico等组件。此外通过hostPath挂载允许用户将自定义的扩展件的yaml文件,作到自定义addon的安装。 hostPath挂载路径是/etc/openFuyao/addons/manifests/kubernetes。

按照如下步骤进行自定义addon扩展件的安装:

  1. 拉起引导集群或者管理集群,作为业务集群的集群管理中心。

  2. 按照组件名/版本号/yaml文件的结构将自定义addon扩展件的yaml文件放置到/etc/openFuyao/addons/manifests/kubernetes目录下,如下图所示,给出的是复制操作模拟自定义处理yaml文件。

    img.png

  3. 安装业务集群时,添加addon字段安装自定义扩展件。

    img.png