在离线的arm架构kylin v10服务器上使用Kuboard-Spray搭建K8S集群

在离线的arm架构kylin v10服务器上使用Kuboard-Spray搭建K8S集群

在内网项目中需要安装K8S集群,经过调研,选择使用Kuboard-Spray工具搭建K8S集群,降低学习成本,提高安装效率。

为了简化安装使用集群的过程,搭建了私有yum源仓库和harbor私有镜像仓库。

详细参考文章:
本地yum源仓库搭建

Harbor镜像仓库的安装和使用

1 安装环境

CPU: 飞腾 arm64,即aarch64
系统:Kylin v10 sp2

查看服务器信息

# 查看CPU架构
uname -p

# 查看系统信息
cat /etc/os-release

# 查看 Linux 内核版本(3.10以上)
uname -a

# 查看 iptables 版本(1.4以上)
iptables --version

在这里插入图片描述

2 服务器规划

三台虚拟机,一台安装Kuboard-Spray,两台安装K8S(一个主节点,一个工作节点)

注意!
Kuboard-Spray平台不能安装在集群相关的服务器上,因为使用

IPhostname用途
192.168.16.101k8s-masterk8s集群master节点
192.168.16.102k8s-node-1k8s集群工作节点1
192.168.16.103kuboard-spray安装kuboard-spray,用于快速安装k8s集群

在飞腾arm架构的kylin v10服务器上安装虚拟机可以参考:https://blog.csdn.net/weixin_43128854/article/details/136504354

3 安装过程

安装过程:
1 给各个服务器设置hostname
2 在准备安装Kuboard-Spray的服务器(这里是192.168.16.103)上离线安装docker
3 离线安装Kuboard-Spray
4 使用Kuboard-Spray离线安装K8S

3.1 服务器初始化配置

3.1.1 设置服务器hostname

设置各个服务器的hostname,便于识别
#根据集群规划,各节点设置对应的主机名

hostnamectl set-hostname k8s-master    #192.168.16.101
hostnamectl set-hostname k8s-node1     #192.168.16.102
hostnamectl set-hostname kuboard-spray     #192.168.16.103

3.1.2 禁用iptables和firewalld

systemctl stop firewalld
 
systemctl disable firewalld
 
systemctl stop iptables
 
systemctl disable iptables

3.1.3 禁用selinux(linux下的一个安全服务,必须禁用)

vim /etc/selinux/config
 
SELINUX=disabled 

3.1.3 禁用swap分区

方法一(在kylin sp2系统 验证无效,可以直接看方法二)

参考网上的文章,使用如下命令禁用swap分区,但是重启后又出现了

# 查看分区信息
free -m
# 禁用所有的swap分区 -临时
sudo swapoff -a
# 禁用swap分区 -永久
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a && sysctl -w vm.swappiness=0

或者直接注释掉/etc/fstab中关于swap的那一行,但是kylin sp2中没有这一行,这行上述的命令也是强行加上这一行增加注释,不起作用。在CentOS中测试该方法是可以的。

在这里插入图片描述

方法二

可以使用删除分区的方法,删除swap分区

1 查看磁盘分区fdisk -l,找到swap分区的设备名称为/dev/vda3

在这里插入图片描述

2 执行fdisk /dev/vda3命令,进入到分区操作工具命令行,其中/dev/vda3是我们要删除的分区的设备名称。
3 根据帮助信息提示输入d,删除该分区。
4 删除后,命令行提示还没有定义该分区
5 输入w,保存并退出fdisk。

在这里插入图片描述

3.1.4 重启服务器

重启服务器,使之前的服务器配置生效

reboot

查看内存信息,可以看到swap都显示为0,说明swap分区删除成功。

在这里插入图片描述

3.2 安装docker

实际上,为了方便下载需要用到的docker镜像,还额外准备了一台可以访问公网的服务器192.168.16.104
需要在192.168.16.103和192.168.16.104上分别安装docker

参考文章
银河麒麟操作系统 v10 中离线安装 Docker

离线部署docker与镜像

下载安装包并解压

安装包下载地址

tar xzvf docker-20.10.6.tgz

将解压包下的文件都复制到/usr/bin/下

mv docker/* /usr/bin/

添加docker.service文件

vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

添加docker的配置文件

配置国内镜像源(公网环境192.168.16.104需要配置,内网192.168.16.103可以不配置)

vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

更新配置

systemctl daemon-reload

运行docker服务并设置为开机自启

systemctl start docker
systemctl enable docker

3.3 安装Kuboard-Spray

实际上,在离线环境后续使用集群拉取镜像部署容器服务,还是需要配置私有镜像仓库。如果是已经搭建私有镜像仓库,并且已经在私有镜像仓库中上传Kuboard-Spray镜像,可以直接使用docker run 命令快速进行安装。只不过,不管用什么方式,总要从公网下载镜像,保存镜像文件,导入到内网使用。

下载镜像

在公网服务器192.168.16.104上下载名为eipwork/kuboard-spray的镜像,版本为:v1.2.0-arm64或者latest-amd64

docker pull eipwork/kuboard-spray:v1.2.0-arm64

保存镜像到压缩文件

docker save eipwork/kuboard-spray:v1.2.0-arm64 -o kuboard-spray1.2.0.tar

在这里插入图片描述

镜像复制到目标服务器并导入到docker中

使用内网服务器从192.168.16.104/root/kuboard-spray1.2.0.tar下载到本地目录

scp root@192.168.16.104:/root/kuboard-spray1.2.0.tar /root/docker/images/

将镜像导入到docker中

docker load -i kuboard-spray1.2.0.tar

运行镜像

根据镜像ID运行容器

docker run -d \
  --privileged \
  --restart=unless-stopped \
  --name=kuboard-spray \
  -p 80:80/tcp \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/kuboard-spray-data:/data \
  825da82f6df6

持久化
KuboardSpray 的信息保存在容器的 /data 路径,请将其映射到一个您认为安全的地方,上面的命令中,将其映射到了 ~/kuboard-spray-data 路径;
只要此路径的内容不受损坏,重启、升级、重新安装 Kuboard-Spray,或者将数据及 Kuboard-Spray 迁移到另外一台机器上,您都可以找回到原来的信息。

容器运行成功后,即可在浏览器中访问http://192.168.16.103,登录使用Kuboard-Spray。
默认用户名:admin,密码:Kuboard123。
在这里插入图片描述

默认端口80访问不通的异常解决(虚拟机安装配置的问题,一般不会遇到这个问题)

运行容器后,访问不通,ping 80端口不通
在这里插入图片描述
在这里插入图片描述

发现运行容器的时候警告WARNING: IPv4 forwarding is disabled. Networking will not work.
在这里插入图片描述
IPv4转发已禁用。网络是行不通的。是因为IPv4转发被禁用了,只需要开启就可以了。

开启转发配置

编辑/etc/sysctl.conf文件

vim /etc/sysctl.conf

修改net.ipv4.ip_forward=1

#配置转发
net.ipv4.ip_forward=1

重启网络服务

systemctl restart network

重启网络服务的时候提示,未找到network.service:Failed to restart network.service: Unit network.service not found.

使用

需要安装network-scripts,使用yum install network-scripts安装即可
在这里插入图片描述
重启网络服务后,运行容器即可

docker start <CONTAINER ID>

3.4 使用Kuboard-Spray平台安装K8S集群

注意!!!
由于是离线安装,Kuboard-Spray需要配置私有yum源

注意!!!
如果使用docker作为容器引擎,还需要配置私有docker-ce的yum源。
例如在CentOS系统中部署,使用docker作为容器引擎,就需要配置私有的docker-ce的yum源。
但是Kuboard-Spray不支持kylin server的系统使用docker作为容器引擎,只能使用Containerd,因此在kylin系统中部署不需要配置私有docker-ce的yum源。

3.4.1 导入集群安装资源包到Kuboard-Spray平台

在系统设置->资源包管理模块可以根据自己的需要选择合适版本的资源包导入到Kuboard-Spray环境中,但是在离线环境中,该页面无法获取到资源包信息列表,只能点击右上角的离线加载资源包
按钮,访问官方的资源包下载页面https://www.kuboard-spray.cn/support/

在这里插入图片描述

在可以访问公网的机器上用浏览器打开该网页https://www.kuboard-spray.cn/support/,选择合适的资源包,点击离线导入按钮,根据提示导入资源包。

因为想用docker作为容器引擎去使用,因此选择了支持docker的最新版本:spray-v2.18.0b-2_k8s-v1.23.17_v1.24-arm64,以便在非kylin操作系统中使用docker作为容器引擎。

在这里插入图片描述
具体操作过程为

1 下载镜像并保存文件

在安装docker的公网服务器上下载资源镜像

# 1. 在一台可以联网的机器上执行
docker pull registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource:spray-v2.18.0b-2_k8s-v1.23.17_v1.24-arm64
docker save registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource:spray-v2.18.0b-2_k8s-v1.23.17_v1.24-arm64 > kuboard-spray-resource.tar 
2 复制到内网服务器
# 2. 将 kuboard-spray-resource.tar 复制到 kuboard-spray 所在的服务器(例如:10.99.0.11 的 /root/kuboard-spray-resource.tar)
scp ./kuboard-spray-resource.tar root@192.168.16.103:/root/kuboard-spray-resource.tar
4 镜像文件导入到docker中
# 3. 在 kuboard-spray 所在的服务器上执行,(例如:192.168.16.103)
docker load < /root/kuboard-spray-resource.tar
5 导入到Kuboard-Spray中

复制下面的 YAML 内容到粘贴板;
在 Kuboard-Spray 界面中导航到 “系统设置” --> “资源包管理” 菜单,点击 “离线加载资源包”,按界面提示操作,即可完成资源包的离线导入。
在这里插入图片描述
加载离线资源包完成后,关掉日志输出页面即可
在这里插入图片描述

downloadFrom: registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource
metadata:
  version: spray-v2.18.0b-2_k8s-v1.23.17_v1.24-arm64
  type: kubernetes-offline-resource
  kuboard_spray_version:
    min: v1.1.0
  available_at:
    - registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource
    - swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray-resource
    - eipwork/kuboard-spray-resource
  issue_date: 2023-3-25
  owner: shaohq@foxmail.com
  can_upgrade_from:
    include:
      - 'spray-v2.18.0b-1_k8s-v1.23.1[0-6]_v[0-9.]*-arm64'
      - 'spray-v2.18.0a-[8-9]_k8s-v1.23.1[0-5]_v[0-9.]*-arm64'
      - 'spray-v2.18.[0-9a-]*_k8s-v1.23.[1-9]_v[0-9.]*-arm64'
      - 'spray-master-8d9ed01_k8s-v1.23.[1-3]_v[0-9.]*-arm64'
    exclude: null
  can_replace_to: null
  supported_os:
    - distribution: Ubuntu
      versions:
        - '20.04'
    - distribution: Anolis
      versions:
        - '8.4'
        - '8.5'
        - '8.6'
    - distribution: CentOS
      versions:
        - '7.6'
        - '7.8'
        - '7.9'
        - '8'
    - distribution: RedHat
      versions:
        - '7.9'
        - '8.5'
    - distribution: OracleLinux
      versions:
        - '8.5'
    - distribution: Rocky
      versions:
        - '8.5'
    - distribution: openEuler
      versions:
        - '20.03'
        - '22.03'
    - distribution: Kylin Linux Advanced Server
      versions:
        - V10
    - distribution: openSUSE Leap
      versions:
        - '15.3'
  supported_feature:
    eviction_hard: true
data:
  kubespray_version: v2.18.0b-2
  supported_playbooks:
    install_cluster: pb_cluster.yaml
    remove_node: pb_remove_node.yaml
    add_node: pb_scale.yaml
    sync_nginx_config: pb_sync_nginx_config.yaml
    sync_etcd_address: pb_sync_etcd_address.yaml
    install_addon: pb_install_addon.yaml
    remove_addon: pb_remove_addon.yaml
    cluster_version_containerd: pb_cluster_version_containerd.yaml
    cluster_version_docker: pb_cluster_version_docker.yaml
    upgrade_cluster: pb_upgrade_cluster.yaml
    drain_node: pb_drain_node.yaml
    uncordon_node: pb_uncordon_node.yaml
    cis_scan: true
    renew_cert: pb_renew_cert.yaml
    sync_container_engine_params: pb_sync_container_engine_params.yaml
    backup_etcd: pb_backup_etcd.yaml
    restore_etcd: pb_restore_etcd.yaml
  kubernetes:
    kube_version: v1.23.17
    image_arch: arm64
    gcr_image_repo: gcr.io
    kube_image_repo: k8s.gcr.io
    candidate_admission_plugins: >-
      AlwaysAdmit,AlwaysDeny,CertificateApproval,CertificateSigning,CertificateSubjectRestriction,DefaultIngressClass,DefaultStorageClass,DefaultTolerationSeconds,DenyServiceExternalIPs,EventRateLimit,ExtendedResourceToleration,ImagePolicyWebhook,LimitPodHardAntiAffinityTopology,LimitRanger,MutatingAdmissionWebhook,NamespaceAutoProvision,NamespaceExists,NamespaceLifecycle,NodeRestriction,OwnerReferencesPermissionEnforcement,PersistentVolumeClaimResize,PersistentVolumeLabel,PodNodeSelector,PodSecurity,PodTolerationRestriction,Priority,ResourceQuota,RuntimeClass,SecurityContextDeny,ServiceAccount,StorageObjectInUseProtection,TaintNodesByCondition,ValidatingAdmissionWebhook
    default_enabled_admission_plugins: >-
      CertificateApproval,CertificateSigning,CertificateSubjectRestriction,DefaultIngressClass,DefaultStorageClass,DefaultTolerationSeconds,LimitRanger,MutatingAdmissionWebhook,NamespaceLifecycle,PersistentVolumeClaimResize,Priority,ResourceQuota,RuntimeClass,ServiceAccount,StorageObjectInUseProtection,TaintNodesByCondition,ValidatingAdmissionWebhook
  container_engine:
    - container_manager: containerd
      params:
        containerd_version: 1.6.15
    - container_manager: docker
      params:
        docker_version: '20.10'
        docker_containerd_version: 1.6.18
  vars:
    target:
      containerd_version: 1.6.15
      etcd_version: v3.5.6
      calico_version: v3.21.5
      flannel_cni_version: v1.0.1
      kuboard_version: v3.5.2.3
      kubelet_checksums:
        arm64:
          v1.23.17: 95e25ee4d2f34f628ba42685c6ae1ba6efdf86f2e76b5cceb0b48de4d66522a7
        amd64:
          v1.23.17: 588dde06e2515601380787cb5fcb07ae3d3403130e1a5556b013b7b7fb4ab230
      kubectl_checksums:
        arm64:
          v1.23.17: c4a48fdc6038beacbc5de3e4cf6c23639b643e76656aabe2b7798d3898ec7f05
        amd64:
          v1.23.17: f09f7338b5a677f17a9443796c648d2b80feaec9d6a094ab79a77c8a01fde941
      kubeadm_checksums:
        arm64:
          v1.23.17: cf1bca6b464f30ea078a9cf4d902033fb80527b03c2f39409e19fb8b3886c75e
        amd64:
          v1.23.17: 6d3f732fe1eabd91c98ff0ee66c6c8b4fcbdee9e99c2c8606f0fa5ff57b4ea65
      crun_checksums:
        arm64:
          1.4.4: 2ad2c02ec0b1566f1c5e85223b726b704904cc75c2eb4af298e95b98fe5c166d
        amd64:
          1.4.4: 73f7f89a98f69c0bf0e9fe1e0129201d5b72529785b4b1bcb4d43c31d0c3a8ea
      runc_checksums:
        arm64:
          v1.1.1: 20c436a736547309371c7ac2a335f5fe5a42b450120e497d09c8dc3902c28444
        amd64:
          v1.1.1: 5798c85d2c8b6942247ab8d6830ef362924cd72a8e236e77430c3ab1be15f080
      containerd_archive_checksums:
        arm64:
          1.6.15: d63e4d27c51e33cd10f8b5621c559f09ece8a65fec66d80551b36cac9e61a07d
        amd64:
          1.6.15: 191bb4f6e4afc237efc5c85b5866b6fdfed731bde12cceaa6017a9c7f8aeda02
      nerdctl_archive_checksums:
        arm64:
          1.0.0: 27622c9d95efe6d807d5f3770d24ddd71719c6ae18f76b5fc89663a51bcd6208
        amd64:
          1.0.0: 3e993d714e6b88d1803a58d9ff5a00d121f0544c35efed3a3789e19d6ab36964
      etcd_binary_checksums:
        arm64:
          v3.5.6: 888e25c9c94702ac1254c7655709b44bb3711ebaabd3cb05439f3dd1f2b51a87
        amd64:
          v3.5.6: 4db32e3bc06dd0999e2171f76a87c1cffed8369475ec7aa7abee9023635670fb
      cni_binary_checksums:
        arm64:
          v1.1.1: 16484966a46b4692028ba32d16afd994e079dc2cc63fbc2191d7bfaf5e11f3dd
        amd64:
          v1.1.1: b275772da4026d2161bf8a8b41ed4786754c8a93ebfb6564006d5da7f23831e5
      flannel_cni_binary_checksums:
        arm64:
          v1.0.1: f813ae49b7b84eb95db73f7a3c34d2ee101f8cfc27e3a8054297a36d53308543
        amd64:
          v1.0.1: 63906a5b7dc78fbf1fbd484adbf4931aea5b15546ece3c7202c779ab9ea994a2
      flannel_image_repo: '{{ docker_image_repo }}/flannelcni/flannel'
      flannel_image_tag: '{{ flannel_version }}-{{ image_arch }}'
      flannel_init_image_repo: '{{ docker_image_repo }}/flannelcni/flannel-cni-plugin'
      flannel_init_image_tag: '{{ flannel_cni_version }}-{{ image_arch }}'
      calicoctl_download_url: >-
        https://github.com/projectcalico/calico/releases/download/{{
        calico_ctl_version }}/calicoctl-linux-{{ image_arch }}
      calicoctl_binary_checksums:
        amd64:
          v3.23.1: e8fd04d776df5571917512560800bf77f3cdf36ca864c9cae966cb74d62ba4fe
          v3.22.3: a9e5f6bad4ad8c543f6bdcd21d3665cdd23edc780860d8e52a87881a7b3e203c
          v3.21.5: 98407b1c608fec0896004767c72cd4b6cf939976d67d3eca121f1f02137c92a7
        arm64:
          v3.23.1: 30f7e118c21ecba445b4fbb27f7ac8bc0d1525ab3c776641433e3b1a3388c65b
          v3.22.3: 3a3e70828c020efd911181102d21cb4390b7b68669898bd40c0c69b64d11bb63
          v3.21.5: cc73e2b8f5b695b6ab06e7856cd516c1e9ec3e903abb510ef465ca6b530e18e6
      calico_crds_archive_checksums:
        v3.23.1: a1754ae4bb158e3b46ba3fb326d8038d54cd0dc2c5c8527eadf2b0a6cf8ef2e3
        v3.22.3: 55ece01da00f82c62619b82b6bfd6442a021acc6fd915a753735e6ebceabaa21
        v3.21.5: ffbbaa2bc32b01bf160828d2cfd4504d83c69cb1f74c0028349181ed61bad635
      krew_archive_checksums:
        linux:
          arm64:
            v0.4.3: 0994923848882ad0d4825d5af1dc227687a10a02688f785709b03549dd34d71d
          amd64:
            v0.4.3: 5df32eaa0e888a2566439c4ccb2ef3a3e6e89522f2f2126030171e2585585e4f
      crictl_checksums:
        arm64:
          v1.24.0: b6fe172738dfa68ca4c71ade53574e859bf61a3e34d21b305587b1ad4ab28d24
        amd64:
          v1.24.0: 3df4a4306e0554aea4fdc26ecef9eea29a58c8460bebfaca3405799787609880
      snapshot_controller_image_tag: v4.2.1
      dns_min_replicas: '{{ [ 2, groups[''kube_control_plane''] | length ] | min }}'
      kuboardspray_extra_downloads:
        kuboard:
          container: true
          file: false
          enabled: '{{ kuboard_enabled }}'
          version: '{{ kuboard_version }}'
          repo: eipwork/kuboard
          tag: '{{ kuboard_version }}'
          sha256: ''
          groups:
            - kube_control_plane
        netcheck_etcd:
          container: true
          file: false
          enabled: '{{ deploy_netchecker }}'
          version: '{{ netcheck_etcd_image_tag }}'
          dest: >-
            {{ local_release_dir }}/etcd-{{ netcheck_etcd_image_tag }}-linux-{{
            image_arch }}.tar.gz
          repo: '{{ etcd_image_repo }}'
          tag: '{{ netcheck_etcd_image_tag }}'
          sha256: '{{ etcd_digest_checksum|d(None) }}'
          unarchive: false
          owner: root
          mode: '0755'
          groups:
            - k8s_cluster
        coredns:
          enabled: '{{ dns_mode in [''coredns'', ''coredns_dual''] }}'
          container: true
          repo: '{{ coredns_image_repo }}'
          tag: '{{ coredns_image_tag }}'
          sha256: '{{ coredns_digest_checksum|default(None) }}'
          groups:
            - k8s_cluster
  etcd:
    etcd_version: v3.5.6
    etcd_params: null
    etcd_deployment_type:
      - host
      - docker
  dependency:
    - name: crun
      version: 1.4.4
      target: crun_version
    - name: krew
      version: v0.4.3
      target: krew_version
    - name: runc
      version: v1.1.1
      target: runc_version
    - name: cni-plugins
      version: v1.1.1
      target: cni_version
    - name: crictl
      version: v1.24.0
      target: crictl_version
    - name: nerdctl
      version: 1.0.0
      target: nerdctl_version
    - name: nginx_image
      version: 1.21.4
      target: nginx_image_tag
    - name: coredns
      target: coredns_version
      version: v1.8.6
    - name: cluster-proportional-autoscaler
      target: dnsautoscaler_version
      version: 1.8.5
    - name: pause
      target: pod_infra_version
      version: '3.6'
  network_plugin:
    - name: calico
      params:
        calico_version: v3.21.5
    - name: flannel
      params:
        flannel_version: v0.17.0
        flannel_cni_version: v1.0.1
  addon:
    - name: kuboard
      target: kuboard_enabled
      lifecycle:
        install_by_default: true
        check:
          shell: kubectl get pods -n kuboard -l k8s.kuboard.cn/name=kuboard-v3
          keyword: kuboard-v3
        install_addon_tags:
          - download
          - upgrade
          - kuboard
        remove_addon_tags:
          - upgrade
          - kuboard
        downloads:
          - kuboard
      params_default:
        kuboard_version: v3.5.2.3
        kuboard_port: 80
        kuboard_cluster_name: default
        kuboard_data_dir: /root/kuboard-data
      params: null
    - name: nodelocaldns
      target: enable_nodelocaldns
      lifecycle:
        install_by_default: true
        check:
          shell: kubectl get daemonset -n kube-system nodelocaldns -o json
          keyword: '"k8s-app": "kube-dns"'
        install_addon_tags:
          - download
          - upgrade
          - coredns
          - nodelocaldns
        downloads:
          - nodelocaldns
          - coredns
      params:
        nodelocaldns_version: 1.21.1
        enable_nodelocaldns_secondary: false
    - name: metrics_server
      target: metrics_server_enabled
      lifecycle:
        install_by_default: true
        check:
          shell: kubectl get deployments -n kube-system metrics-server -o json
          keyword: k8s.gcr.io/metrics-server/metrics-server
        install_addon_tags:
          - download
          - upgrade
          - metrics_server
        remove_addon_tags:
          - upgrade
          - metrics_server
        downloads:
          - metrics_server
      params:
        metrics_server_version: v0.6.2

3.4.2 创建集群

1 添加集群安装计划

在Kuboard Spray的集群管理菜单中点击添加集群安装计划按钮,填写集群名称,选择资源包,点击确定

在这里插入图片描述

2 配置集群的全局设置
  • SSH设置中,设置所有K8S节点服务器的SSH连接用户名和密码,必须使用root用户。
  • 容器引擎设置中,设置所有节点使用的容器引擎,在kylin系统中只能选择containerd_1.6.15
  • 软件源设置中,选择操作系统为Kylin Linux Advanced Server,选择kylin_linux_advanced_server 源默认设置为默认的使用操作系统预先配置的软件源
    在这里插入图片描述
    在这里插入图片描述

注意!!!
实际上本来应该添加软件源配置,根据需要选择软件源,但是Kuboard-Spray平台目前不支持kylin系统的软件源设置,只能选择系统默认软件源,去各个节点中配置默认的软件源为我们的私有yum软件源。

在集群的各个节点的服务器中,修改/etc/yum.repos.d/kylin_aarch64.repo文件,配置私有yum源地址,启用该配置,设置不检查文件。

vim /etc/yum.repos.d/kylin_aarch64.repo
###Kylin Linux Advanced Server 10 - os repo###

[ks10-adv-base]
name = ks10-adv-base
baseurl = http://192.168.16.106/ks10-adv-base/
enabled = 1
gpgcheck = 0

执行命令可以查看配置的yum源是否生效,清理并重新建立yum缓存

# 查看yum源配置
yum repolist
# 清理缓存
yum clean all
# 创建缓存
yum makecache

在这里插入图片描述
全局配置和所有节点的系统默认yum软件源修改完成后,添加节点。

3 添加节点

点击添加节点按钮,输入节点名称并勾选节点角色,点击确定按钮将其加入到集群计划中。
例如:主节点设置名称为master,角色勾选控制节点ETCD节点工作节点;工作节点1设置名称为node1,角色勾选工作节点;工作节点2设置名称为node2,角色勾选工作节点
所有节点信息添加和编辑完成后,点击保存按钮保存集群计划信息。
在这里插入图片描述
添加节点后,选中节点,在右侧相应节点的信息标签页中编辑主机IP地址,如果该主机的root用户密码与全局设置不同,可以在这里设置用户名和密码。点击验证连接,可以测试该主机是否能正确连接,并返回主机信息。

在这里插入图片描述

在这里插入图片描述

4 安装/设置集群

在集群信息查看页面,点击安装/设置集群按钮,选择显示日志输出的详细程度、并发数量等信息,点击确认按钮,Kuboard-Spray将自动为该集群的所有节点进行安装和配置,等待日志输出安装成功即可。该过程可能要等待半个小时以上。
在这里插入图片描述
在这里插入图片描述

5 访问集群

安装完成后,点击上方集群名称后的刷新按钮,可以刷新集群状态。集群连接成功后,就可以点击使用集群规划外的其他标签页。在访问集群标签页可以看到kuboard访问集群的信息,例如:

http://192.168.16.107
默认用户名: admin
默认密 码: Kuboard123

在这里插入图片描述

在浏览器中访问Kuboard的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/474188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

excel处理_多个excel文件合并

data文件夹内&#xff0c;有多个xls文件。每个xls文件格式一致&#xff0c; 表头占两行&#xff0c;表位汇总数据占一行。 表头两行&#xff0c;拼接前第二行设置为表头&#xff0c;且删除第二行。 在python读入的dataframe中&#xff0c;游轮成本表是表头&#xff0c;第一行是…

解密Mysql数据库引擎:探究其背后的神秘力量(二)

本系列文章简介&#xff1a; 在本系列文章中&#xff0c;我们将从MySQL的基础知识入手&#xff0c;逐步深入到数据库引擎的内部机制。我们将详细介绍MySQL中常用的几种数据库引擎&#xff0c;包括InnoDB、MyISAM等&#xff0c;分析它们的优缺点以及适用场景。同时&#xff0c;我…

[AutoSar]BSW_Com015 PDUR 模块配置

目录 关键词平台说明一、Abbreviations二、PduRBswModules三、PduRGeneration四、PduRDestPdus4.1 全局PDU ID和本地PDU ID 关键词 嵌入式、C语言、autosar、OS、BSW 平台说明 项目ValueOSautosar OSautosar厂商vector &#xff0c; EB芯片厂商TI 英飞凌编程语言C&#xff0…

亮数据Bright Data,跨境电商一站式解决方案

目录 一、跨境电商的瓶颈1、技术门槛2、语言问题3、网络稳定性4、验证码处理和自动识别5、数据安全6、法律法规 二、机不可失三、动态住宅代理1、网络代理2、动态住宅代理3、动态住宅代理的主要优点 四、动态住宅代理的使用场景五、如何使用亮数据动态代理1、开始使用2、添加新…

【C++】为什么vector的地址与首元素地址不同?

文章目录 一、问题发现&#xff1a;二、结果分析三、问题解析 一、问题发现&#xff1a; &vector和&vector[0]得到的两个地址居然不相同&#xff0c;对数组array取变量名地址和取首元素地址的结果是相同的。这是为啥呢&#xff1f; 使用下面代码进行验证&#xff1a;…

harbor迁移

采用从原仓库拉取镜像的方式 根据情况填&#xff0c;空的话&#xff0c;默认就是从原harbor的abc仓库拉到现harbor的abc仓库

termux安装

termux安装Python和postgres 安装python 安装pg数据库

LabVIEW高效光伏数据监控与管理系统

LabVIEW高效光伏数据监控与管理系统 随着新能源技术的发展&#xff0c;光伏发电系统作为一种清洁、高效的能源获取方式受到了广泛的关注。但是&#xff0c;由于光伏发电的特性受到多种环境因素的影响&#xff0c;其运行效率和安全性成为了关键问题。因此&#xff0c;开发一个高…

电脑硬盘误删怎么恢复,误删硬盘的文件能不能再恢复

误删硬盘的文件能不能再恢复&#xff1f;很多朋友都很关心这个问题&#xff0c;不用担心&#xff0c;误删硬盘文件是可以恢复的&#xff01;使用电脑不可避免会遇到一些糊涂的时刻&#xff0c;比如误删了重要的文件。当我们发现自己不小心将硬盘上的文件删除时&#xff0c;心里…

ElasticSearch - 基本操作

前言 本文记录 ES 的一些基本操作&#xff0c;就是对官方文档的一些整理&#xff0c;按自己的习惯重新排版&#xff0c;凑合着看。官方的更详细&#xff0c;建议看官方的。 下文以 books 为索引名举例。 新增 添加单个文档 (没有索引会自动创建) POST books/_doc {"n…

Python爬虫入门:HTTP与URL基础解析及简单示例实践

在数字化时代&#xff0c;数据已成为一种宝贵的资源。Python作为一种强大的编程语言&#xff0c;在数据采集和处理方面表现出色。爬虫技术&#xff0c;即网络爬虫&#xff0c;是Python中用于数据采集的重要工具。本文作为Python爬虫基础教程的第一篇&#xff0c;将深入讲解URL和…

酷开系统满足你的需求,加入酷开会员开启娱乐之旅

酷开科技深知家庭娱乐在我们生活中的重要性&#xff0c;因此&#xff0c;酷开科技不断努力为我们带来更好的内容和服务&#xff0c;在这里&#xff0c;我们能够享受到家庭娱乐的乐趣和便利&#xff0c;感受到酷开科技带来的温暖。电影迷、游戏迷还是音乐爱好者&#xff0c;酷开…

多项式朴素贝叶斯分类器

在这篇文章中&#xff0c;我们介绍多项式朴素贝叶斯分类器是如何工作的&#xff0c;然后使用scikit-learn作为实际工作的示例来介绍如何使用。 与假设高斯分布的高斯朴素贝叶斯分类器相反&#xff0c;多项式朴素贝叶斯分类器依赖于多项分布。通过学习/估计每个类的多项概率来“…

2024 年 6 款最佳 SD 卡恢复软件

“有没有最好的 SD 卡恢复软件可以推荐给我来恢复 SD 卡上丢失的数据&#xff1f;程序太多了。我很难选择合适的存储卡数据恢复软件。” 有一天&#xff0c;我的朋友让我向他推荐最好的SD卡数据恢复软件&#xff0c;因为他在网上搜索&#xff0c;发现有很多选择&#xff0c;而…

JS13-事件的绑定和事件对象Event

绑定事件的两种方式/DOM事件的级别 DOM0的写法&#xff1a;onclick element.onclick function () {}举例&#xff1a; <body> <button>点我</button> <script>var btn document.getElementsByTagName("button")[0];//这种事件绑定的方式…

关于汽车中网改装需要报备吗?(第二天)

车联网改造需要申报吗&#xff1f; 今天2022年10月20日&#xff0c;小编就给大家介绍一下车联网改装是否需要申报的相关知识。 让我们来看看。 汽车格栅改装无需申报。 这种年检可以直接通过。 您不必担心&#xff0c;因为汽车格栅对于实车的外观来说并不陌生&#xff0c;因此…

Docker常用命令!!!

一、docker基础命令 1、启动docker systemctl start docker 2、关闭docker systemctl stop docker 3、重启docker systemctl restart docker 4、docker设置随服务启动而自启动 systemctl enable docker 5、查看docker 运行状态 systemctl status docker 6、查看docker 版本号信…

eth 套利案例五

交易hash : 0xb69981d437af7b9b705b3eb459df89d69901b5aff1cf2f99673372c873d50daf 时间&#xff1a; 2024.02.24 获利&#xff1a; 9699刀 交易流程&#xff1a; 292376226817040592 2940802860 先贷出230个weth, 然后再换成eth 再换成 2940802860 个kekec, 然后再用 29237…

# Django通过开关控制数据库参数(JS版)

目录 场景初始的视图层HTML部分JS代码视图层接受部分 场景 此时我的表单中有一排开关 数据库有一排状态 需求是要当开关开启时数据库state为1&#xff0c;关闭时为0 初始的视图层 将整个adv数据表返回给前端HTML def adv(request):adv_list Adv.objects.all()return rende…

C++项目 -- 负载均衡OJ(一)compile_server

C项目 – 负载均衡OJ&#xff08;二&#xff09;compile_server 文章目录 C项目 -- 负载均衡OJ&#xff08;二&#xff09;compile_server一、compile_server设计1.总体服务流程 二、compiler.hpp三、runner.hpp四、compile_run.hpp五、compile_server.cc5.1.编译功能调试&…