背景

随着我国对信息安全的愈发重视,国产化的趋势也越来越浓,包括国产操作系统、国产 CPU 等。由于 ARM 架构国产 CPU 在维持创新可信和先进性方面的潜在优势,其应用也将会越来越广泛。

KubeSphere 作为一款深受国内外开发者所喜爱的开源容器平台,也将积极参与并探索在 ARM 架构下的应用与创新。本文将主要介绍如何在 ARM64 环境下部署 Kubernetes 和 KubeSphere。

环境准备

节点

kubeSphere 支持的操作系统包括:

  • Ubuntu 16.04, 18.04
  • Debian Buster, Stretch
  • CentOS/RHEL 7
  • SUSE Linux Enterprise Server 15
  • openEuler

这里以一台 openEuler 20.09 64bit 为例:

name ip role
node1 172.169.102.249 etcd, master, worker

确保机器已经安装所需依赖软件(sudo curl openssl ebtables socat ipset conntrack docker)

具体环境要求参见:https://github.com/kubesphere/kubekey/tree/release-1.0#requirements-and-recommendations

关于多节点安装请参考 KubeSphere 官方文档

建议:可将安装了所有依赖软件的操作系统制作成系统镜像使用,避免每台机器都安装依赖软件,即可提升交付部署效率,又可避免依赖问题的发生。

提示:如使用 centos7.x、ubuntu18.04,则可以选择使用 kk 命令对机器进行初始化。

解压安装包,并创建好配置文件之后(创建方法请看下文),可执行如下命令对节点进行初始化:

./kk init os -s ./dependencies -f config-example.yaml

如使用该命令遇到依赖问题,可自行安装相关依赖软件。

镜像仓库

可使用 harbor 或其他第三方镜像仓库。

提示:可使用 kk 命令自动创建测试用自签名镜像仓库。注意,请确保当前机器存在registry:2,如没有,可从解压包 kubesphere-images-v3.0.0/registry.tar 中导入,导入命令:docker load < registry.tar

创建测试用自签名镜像仓库:

./kk init os -f config-example.yaml --add-images-repo

注意:由 kk 启动的镜像仓库端口为443,请确保所有机器均可访问当前机器443端口。镜像数据存储到本地/mnt/registry (建议单独挂盘)。

安装包下载:

提示:该安装包仅包含 Kubernetes + KubeSphere-core 镜像,如需更多组件 arm64 镜像,可自行编译构建。

# md5: 3ad57823faf2dfe945e2fe3dcfd4ace9
curl -Ok https://kubesphere-installer.pek3b.qingstor.com/offline/v3.0.0/kubesphere-core-v3.0.0-offline-linux-arm64.tar.gz

安装步骤:

1. 创建集群配置文件

安装包解压后进入kubesphere-core-v3.0.0-offline-linux-arm64

./kk create config

根据实际环境信息修改生成的配置文件config-sample.yaml,也可使用-f参数自定义配置文件路径。kk 详细用法可参考:https://github.com/kubesphere/kubekey

注意填写正确的私有仓库地址privateRegistry(如已准备好私有仓库可设置为已有仓库地址,若使用 kk 创建私有仓库,则该参数设置为:dockerhub.kubekey.local)

apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
name: sample
spec:
hosts:
# 注意指定节点 arch 为 arm64
- {name: node1, address: 172.169.102.249, internalAddress: 172.169.102.249, password: Qcloud@123, arch: arm64}
roleGroups:
etcd:
- node1
master:
- node1
worker:
- node1
controlPlaneEndpoint:
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.17.9
imageRepo: kubesphere
clusterName: cluster.local
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
registry:
registryMirrors: []
insecureRegistries: []
privateRegistry: dockerhub.kubekey.local
addons: []

2. 导入镜像

进入kubesphere-all-v3.0.0-offline-linux-arm64/kubesphere-images-v3.0.0

使用 offline-installation-tool.sh 将镜像导入之前准备的仓库中:

# 脚本后镜像仓库地址请填写真实仓库地址
./offline-installation-tool.sh -l images-list-v3.0.0.txt -d kubesphere-images -r dockerhub.kubekey.local

3. 执行安装

# 以上准备工作完成且再次检查配置文件无误后,执行安装。
./kk create cluster -f config-sample.yaml --with-kubesphere

查看结果

三步搞定 ARM64 离线部署 Kubernetess + KubeSphere的更多相关文章

  1. iOS开发三步搞定百度推送

    iOS开发三步搞定百度推送   百度推送很简单,准备工作:在百度云推送平台注册应用,上传证书. 步骤一: 百度云推送平台 http://push.baidu.com/sdk/push_client_s ...

  2. 三步搞定IDEA集成热部署

    第一步.在你的SpringBoot项目中添加DevTools依赖 <!-- 热部署DevTools --> <dependency> <groupId>org.sp ...

  3. Spring Boot 集成 Ehcache 缓存,三步搞定!

    作者:谭朝红 www.ramostear.com/articles/spring_boot_ehcache.html 本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序 ...

  4. Excel大数据排查重复行内容方法,三步搞定!

    首先第一步,我们找到一个空白列D输入公式“=A1&B1&C1”: 然后第二步,再选择下一空白列输入公式“=IF(COUNTIF(D:D,D1)>1,"重复", ...

  5. [原创][开源]C# Winform DPI自适应方案,SunnyUI三步搞定

    SunnyUI.Net, 基于 C# .Net WinForm 开源控件库.工具类库.扩展类库.多页面开发框架 Blog: https://www.cnblogs.com/yhuse Gitee: h ...

  6. 从 0 开始手写一个 Mybatis 框架,三步搞定!

    阅读本文大概需要 3 分钟. MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码. 本文完成的Mybatis功能比较简单,代码还有许 ...

  7. 三步搞定Centos 7 上特定版本的 docker 安装

    由于国内网络原因,使用centos的用户yum源常用国内的阿里云.现在把centos7上安装docker的详细过程记录如下: 一.配置centos7的yum源(阿里云) 1.cd  /etc/yum. ...

  8. 三步搞定 opencv 初始环境设定

    一.设定bin的初始位置:比如我的电脑 D:\安装程序\opencv\build\x86\vc10\bin      H:\生产力工具\opencv\build\x86\vc10\bin D:\安装程 ...

  9. 三步搞定ISO/GHO安装系统 - imsoft.cnblogs

    高清互动安装系统附件:重装系统视频教程.7z

  10. 三步搞定Vmware固定虚拟机的IP

    1.修改vmware的虚拟网络编辑器 按照图中红色方框的方法设置,子网IP可以设置成自己想要的,点击NAT设置,记住网关IP. 2.进入centos虚拟机系统 编辑 vim /etc/sysconfi ...

随机推荐

  1. MindSpore 如何实现一个线性回归 —— Demo示例

    如何使用 MindSpore  实现一个简单的  线性回归呢??? 根据前面的mindspore的基本操作的学习写出了下面的 一个简单的线性回归算法. import mindspore import ...

  2. A3C与GA3C的收敛性分析

    G-A3C的代码: https://gitee.com/devilmaycry812839668/gpu_a3c 论文: <Reinforcement Learning thorugh Asyn ...

  3. 解决 jquery attr多次使用失效的问题

    今天做一个全选功能的时候用到了jq 的attr 的方法,可是在真正使用的时候首次是可以实现全选和全不选的功能,然而 多点几次就会发勾选的效果消失了!先看下代码吧: <!DOCTYPE html& ...

  4. DataOps真能“降本增效”?

    在各行各业中,越来越多的公司开始重视收集数据,并寻找创新方法来获得真实可行的商业成果,并且愿意投入大量时间和金钱来实现这一目标. 据IDC称,数据和分析软件及云服务市场规模在 2021 年达到了 90 ...

  5. 微服务全链路跟踪:grpc集成zipkin

    微服务全链路跟踪:grpc集成zipkin 微服务全链路跟踪:grpc集成jaeger 微服务全链路跟踪:springcloud集成jaeger 微服务全链路跟踪:jaeger集成istio,并兼容u ...

  6. Linux信号量(1)-SYSTEM V

    ​ 信号量概念 信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送 ...

  7. Logtrick

    logtrick的用法与实战 logtrick是我从灵神视频中学习到的,此文章介绍logtrick用法与实践,以及灵神视频中未提到的,我本人总结出来的小技巧 用法 logtrick通常用于求 子数组( ...

  8. 【VMware VCF】VMware Cloud Foundation Part 07:管理工作负载域中的主机和集群。

    一个标准 VMware Cloud Foundation 实例中具有管理工作负载域和 VI 工作负载域两种类型,管理域有且只有一个,而 VI 域可以创建多个,每种工作负载域中可以具有多个 vSpher ...

  9. vue grid layout 设定某组件为最低位,其它子item无法拖拽超过

    逻辑:    设定某项X为底部    逻辑:    for 循环获取最低位的item Y的信息:i 和 y    如果i != X.i        initY = X.y        则调整X.y ...

  10. 2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子。 在筛选过程中,每轮选择一个孩子时,所有尚未选

    2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子. 在筛选过程中,每轮选择一个孩子时,所有尚未选 ...