信创环境:鲲鹏ARM+麒麟V10离线部署K8s和Rainbond信创平台
在上篇《国产化信创开源云原生平台》文章中,我们介绍了 Rainbond 作为可能是国内首个开源国产化信创平台,在支持国产化和信创方面的能力,并简要介绍了如何在国产化信创环境中在线部署 Kubernetes 和 Rainbond。
然而,对于大多数国产化信创环境,如银行、政府等机构,离线部署的需求更为普遍。值得注意的是,Rainbond 官网文档目前仅提供了在已有 Kubernetes 环境中离线部署 Rainbond 的指南。那么,为什么我们不提供离线部署 Kubernetes 的文档呢?Rainbond 开源社区与其他开源社区不同,Rainbond 始终对每一位开源用户提出的问题负责,并积极帮助解决问题。然而,这无疑会为社区支持团队带来额外的工作负担,特别是在处理本不属于 Rainbond 范畴的问题时。
因此,本篇文章将详细介绍如何在国产化信创环境下部署 Kubernetes 以及 Rainbond,希望能够为用户提供实用的指导,减少在部署过程中的困扰。
准备离线镜像和安装包
在有网的 Arm 环境中准备以下镜像和安装包。
Docker 离线包
下载 Docker 离线安装包和离线安装脚本。
wget https://pkg.rainbond.com/offline/docker/docker-arm-20.10.9.tgz wget https://get.rainbond.com/install_docker_offline.sh
Kubernetes 离线包
本次部署 K8s 版本为 v1.23.10
,采用 Rancher Kubernetes Engine 简称 RKE,是一个经过 CNCF 认证的 Kubernetes 安装程序。
在 Arm 环境中获取以下离线包。
# Kubectl和 Helm 二进制文件 wget https://pkg.goodrain.com/pkg/kubectl/v1.23.10/kubectl-arm -O kubectl wget https://pkg.goodrain.com/pkg/helm/v3.10.1/helm-arm64 -O helm # RKE安装二进制文件 wget https://pkg.goodrain.com/pkg/rke/v1.3.15/rke-arm -O rke
#!/bin/bash # RKE Docker镜像 image_list="registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-coreos-etcd:v3.5.3 registry.cn-hangzhou.aliyuncs.com/goodrain/rke-tools:v0.1.87 registry.cn-hangzhou.aliyuncs.com/goodrain/rke-tools:v0.1.87 registry.cn-hangzhou.aliyuncs.com/goodrain/rke-tools:v0.1.87 registry.cn-hangzhou.aliyuncs.com/goodrain/rke-tools:v0.1.87 registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-k8s-dns-kube-dns:1.21.1 registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-k8s-dns-dnsmasq-nanny:1.21.1 registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-k8s-dns-sidecar:1.21.1 registry.cn-hangzhou.aliyuncs.com/goodrain/cluster-proportional-autoscaler:1.8.1 registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-coredns-coredns:1.10.1 registry.cn-hangzhou.aliyuncs.com/goodrain/cluster-proportional-autoscaler:1.8.1 registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-k8s-dns-node-cache:1.21.1 registry.cn-hangzhou.aliyuncs.com/goodrain/hyperkube:v1.23.10-rancher1 registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-coreos-flannel:v0.15.1 registry.cn-hangzhou.aliyuncs.com/goodrain/flannel-cni:v0.3.0-rancher6 registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-pause:3.6 registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-metrics-server:v0.6.1" for image in ${image_list}; do docker pull "${image}" done docker save -o rke-images.tar ${image_list}
Rainbond 离线包
在有网络的环境下提前准备好 Rainbond 所需的镜像。
#!/bin/bash VERSION=${VERSION:-'v5.17.3-release'} image_list="registry.cn-hangzhou.aliyuncs.com/goodrain/kubernetes-dashboard:v2.6.1 registry.cn-hangzhou.aliyuncs.com/goodrain/registry:2.6.2 registry.cn-hangzhou.aliyuncs.com/goodrain/metrics-server:v0.4.1 registry.cn-hangzhou.aliyuncs.com/goodrain/etcd:v3.3.18 registry.cn-hangzhou.aliyuncs.com/goodrain/metrics-scraper:v1.0.4 registry.cn-hangzhou.aliyuncs.com/goodrain/rainbond:${VERSION}-allinone registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-mesh-data-panel:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-webcli:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-eventlog:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-init-probe:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-chaos:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-mq:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rainbond-operator:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-worker:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-node:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-monitor:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-gateway:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-api:${VERSION} registry.cn-hangzhou.aliyuncs.com/goodrain/rbd-db:8.0.19 registry.cn-hangzhou.aliyuncs.com/goodrain/mysqld-exporter:latest registry.cn-hangzhou.aliyuncs.com/goodrain/nfs-provisioner:latest" for image in ${image_list}; do docker pull "${image}" done docker save -o rainbond-"${VERSION}".tar ${image_list}
获取 Rainbond Helm Chart 安装包
git clone --depth=1 https://github.com/goodrain/rainbond-chart
开始部署 Kubernetes
前提要求
在开始安装 K8s 之前请阅读 RKE 安装要求,该文档讲述了 RKE 对操作系统、软件、端口和 SSH 配置的要求,安装前,请检查您的节点是否满足这些要求。
部署 Docker
导入 Docker 离线包到所有节点,执行脚本安装 Docker。
$ ls docker-arm-20.10.9.tgz install_docker_offline.sh $ bash ./install_docker_offline.sh
导入 K8s 相关的离线包和 Docker 镜像到所有节点。
配置Docker用户
RKE 要求使用一个免密的用户用于后续的集群安装,该用户需有执行 Docker 的权限。
# 创建用户并加入 root 组 adduser -g root docker && echo "docker:password" | chpasswd # 生成 ssh 密钥,一直回车全默认即可 ssh-keygen # 配置免密登录 ssh-copy-id docker@xxxx
使用 Docker 用户登录检查是否有 Docker 执行权限。
$ ssh docker@xxxx $ docker ps
编辑cluster.yml文件
使用 RKE 安装 K8s 集群需要使用 RKE 生成的配置文件,以下是我的示例,更多请参阅RKE配置文件说明。
需要我们修改的只有 nodes
字段,如果导入镜像的镜像仓库地址不变则 yml 也无需修改,如有改动需修改 system_images
字段下所有镜像地址。
nodes: - address: 192.168.0.138 port: "22" internal_address: 192.168.0.138 role: - etcd - controlplane - worker hostname_override: "" user: docker docker_socket: "" ssh_key: "" ssh_key_path: ~/.ssh/id_rsa ssh_cert: "" ssh_cert_path: "" labels: {} taints: [] services: etcd: image: "" extra_args: {} extra_args_array: {} extra_binds: [] extra_env: - ETCD_AUTO_COMPACTION_RETENTION=1 win_extra_args: {} win_extra_args_array: {} win_extra_binds: [] win_extra_env: [] external_urls: [] ca_cert: "" cert: "" key: "" path: "" uid: 0 gid: 0 snapshot: null retention: "" creation: "" backup_config: null kube-api: image: "" extra_args: {} extra_args_array: {} extra_binds: [] extra_env: [] win_extra_args: {} win_extra_args_array: {} win_extra_binds: [] win_extra_env: [] service_cluster_ip_range: 10.43.0.0/16 service_node_port_range: "" pod_security_policy: false always_pull_images: false secrets_encryption_config: null audit_log: null admission_configuration: null event_rate_limit: null kube-controller: image: "" extra_args: {} extra_args_array: {} extra_binds: [] extra_env: [] win_extra_args: {} win_extra_args_array: {} win_extra_binds: [] win_extra_env: [] cluster_cidr: 10.42.0.0/16 service_cluster_ip_range: 10.43.0.0/16 scheduler: image: "" extra_args: {} extra_args_array: {} extra_binds: [] extra_env: [] win_extra_args: {} win_extra_args_array: {} win_extra_binds: [] win_extra_env: [] kubelet: image: "" extra_args: {} extra_args_array: {} extra_binds: - /grlocaldata:/grlocaldata:rw,z - /cache:/cache:rw,z extra_env: [] win_extra_args: {} win_extra_args_array: {} win_extra_binds: [] win_extra_env: [] cluster_domain: cluster.local infra_container_image: "" cluster_dns_server: 10.43.0.10 fail_swap_on: false generate_serving_certificate: false kubeproxy: image: "" extra_args: {} extra_args_array: {} extra_binds: [] extra_env: [] win_extra_args: {} win_extra_args_array: {} win_extra_binds: [] win_extra_env: [] network: plugin: flannel # calico options: {} mtu: 0 node_selector: {} update_strategy: null tolerations: [] authentication: strategy: x509 sans: [] webhook: null addons: "" addons_include: [] system_images: etcd: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-coreos-etcd:v3.5.3 alpine: registry.cn-hangzhou.aliyuncs.com/goodrain/rke-tools:v0.1.87 nginx_proxy: registry.cn-hangzhou.aliyuncs.com/goodrain/rke-tools:v0.1.87 cert_downloader: registry.cn-hangzhou.aliyuncs.com/goodrain/rke-tools:v0.1.87 kubernetes_services_sidecar: registry.cn-hangzhou.aliyuncs.com/goodrain/rke-tools:v0.1.87 kubedns: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-k8s-dns-kube-dns:1.21.1 dnsmasq: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-k8s-dns-dnsmasq-nanny:1.21.1 kubedns_sidecar: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-k8s-dns-sidecar:1.21.1 kubedns_autoscaler: registry.cn-hangzhou.aliyuncs.com/goodrain/cluster-proportional-autoscaler:1.8.1 coredns: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-coredns-coredns:1.10.1 coredns_autoscaler: registry.cn-hangzhou.aliyuncs.com/goodrain/cluster-proportional-autoscaler:1.8.1 nodelocal: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-k8s-dns-node-cache:1.21.1 kubernetes: registry.cn-hangzhou.aliyuncs.com/goodrain/hyperkube:v1.23.10-rancher1 flannel: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-coreos-flannel:v0.15.1 flannel_cni: registry.cn-hangzhou.aliyuncs.com/goodrain/flannel-cni:v0.3.0-rancher6 calico_node: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-calico-node:v3.22.0 calico_cni: registry.cn-hangzhou.aliyuncs.com/goodrain/calico-cni:v3.22.0-rancher1 calico_controllers: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-calico-kube-controllers:v3.22.0 calico_ctl: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-calico-ctl:v3.22.0 calico_flexvol: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-calico-pod2daemon-flexvol:v3.22.0 canal_node: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-calico-node:v3.22.0 canal_cni: "" canal_controllers: "" canal_flannel: "" canal_flexvol: "" weave_node: "" weave_cni: "" pod_infra_container: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-pause:3.6 ingress: "" ingress_backend: "" ingress_webhook: "" metrics_server: registry.cn-hangzhou.aliyuncs.com/goodrain/mirrored-metrics-server:v0.6.1 windows_pod_infra_container: "" aci_cni_deploy_container: "" aci_host_container: "" aci_opflex_container: "" aci_mcast_container: "" aci_ovs_container: "" aci_controller_container: "" aci_gbp_server_container: "" aci_opflex_server_container: "" ssh_key_path: "" ssh_cert_path: "" ssh_agent_auth: false authorization: mode: rbac options: {} ignore_docker_version: null enable_cri_dockerd: null kubernetes_version: "" private_registries: [] ingress: provider: none options: {} node_selector: {} extra_args: {} dns_policy: "" extra_envs: [] extra_volumes: [] extra_volume_mounts: [] update_strategy: null http_port: 0 https_port: 0 network_mode: "" tolerations: [] default_backend: null default_http_backend_priority_class_name: "" nginx_ingress_controller_priority_class_name: "" default_ingress_class: null cluster_name: "" cloud_provider: name: "" prefix_path: "" win_prefix_path: "" addon_job_timeout: 300 bastion_host: address: "" port: "" user: "" ssh_key: "" ssh_key_path: "" ssh_cert: "" ssh_cert_path: "" ignore_proxy_env_vars: false monitoring: provider: none options: {} node_selector: {} update_strategy: null replicas: null tolerations: [] metrics_server_priority_class_name: "" restore: restore: false snapshot_name: "" rotate_encryption_key: false dns: null
执行安装
执行以下命令开始安装 K8s。经验证麒麟V10必须 SSH 配置 AllowTcpForwarding yes
,不然就会报错,参阅 RKE SSH配置。
./rke up
如果安装过程中遇到错误需要清理集群可使用以下脚本进行清理。
curl -sfL https://get.rainbond.com/clean-rke | bash
集群安装成功后需要将 kubeconfig 文件拷贝到默认路径下。
mkdir /root/.kube && cp kube_config_cluster.yml /root/.kube/config
执行以下命令确认安装结果
kubectl get node
开始部署 Rainbond
前提要求
每个节点都需要安装 nfs-utils
包,这里就不详细说明了,网上教程很多,大概就是挂载 DVD 镜像,然后做个本地镜像源,直接 yum install 就可以。
导入镜像包
docker load -i rainbond-v5.17.3-release.tar
安装 Rainbond
复制准备节点 Git 克隆的 Helm Chart。
使用 Helm Chart 安装 Rainbond。
- 创建命名空间
kubectl create namespace rbd-system
- 编写 Helm values.yml,更多 Chart 参数请参阅 Chart 安装选项。
operator: image: name: registry.cn-hangzhou.aliyuncs.com/goodrain/rainbond-operator tag: v5.17.3-release Cluster: enableEnvCheck: false gatewayIngressIPs: 192.168.0.138 nodesForChaos: - name: 192.168.0.138 nodesForGateway: - externalIP: 192.168.0.138 internalIP: 192.168.0.138 name: 192.168.0.138 rainbondImageRepository: registry.cn-hangzhou.aliyuncs.com/goodrain installVersion: v5.17.3-release Component: rbd_app_ui: enable: true env: DISABLE_DEFAULT_APP_MARKET: true
- 执行 Helm 安装命令
helm install rainbond ./rainbond-chart -n rbd-system -f value.yml
安装进度查询
执行完安装命令后,在集群中执行以下命令查看安装状态。
watch kubectl get po -n rbd-system
当名称包含 rbd-app-ui
的 Pod 为 Running 状态时即安装成功。
访问平台
复制如下命令,在集群中执行,可以获取到平台访问地址。如果有多个网关节点,则任意一个地址均可访问到控制台。
kubectl get rainbondcluster rainbondcluster -n rbd-system -o go-template --template='{{range.spec.gatewayIngressIPs}}{{.}}:7070{{printf "\n"}}{{end}}'
离线环境源码构建(可选)
如果你需要在离线环境下进行源码构建,请参阅Rainbond离线源码构建文档进行配置。
最后
通过本文的指导,希望您能顺利完成在鲲鹏ARM和麒麟V10环境下的 Kubernetes 和 Rainbond 的离线部署。在国产化信创环境中,离线部署的需求越来越普遍,我们提供的详细步骤和示例,帮助您减少部署过程中的不确定性和挑战。未来,我们还将继续更新更多相关教程和文档,以更好地服务于国产化信创领域的需求。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
下载量突破400万,百万开发者首选的 AI 编码工具通义灵码是如何炼成的?
通义灵码是由阿里云和通义实验室联合推出的一款基于通义大模型的智能编码辅助工具,它具备代码智能生成和研发智能问答等多项功能,旨在帮助开发者提高编码效率和代码质量。 我们非常高兴的宣布,通义灵码插件下载量突破400万啦! 目前,通义灵码每天推荐代码超 3000 万次,被开发者采纳代码行数超亿行,在中国信通院可信AI代码大模型测评中,通义灵码获得首个最高级。 核心优势 代码智能生成:通义灵码能够根据当前代码文件及跨文件的上下文,生成行级/函数级代码、单元测试和代码注释,帮助开发者更高效地完成编码工作。 自然语言生成代码:通过自然语言描述功能需求,通义灵码可以在编辑器中直接生成相应的代码和注释,保持编码的连续性。 单元测试生成:支持根据多种测试框架生成单元测试代码,包括但不限于JUnit、Mockito、Spring Test等,提高代码的测试覆盖率。 研发智能问答:基于大量研发文档和API/SDK数据,通义灵码能够解答编程相关问题,提供解决方案和建议。 异常报错智能排查:当代码运行出现异常时,通义灵码可以结合运行代码和异常堆栈信息,快速提供排查思路或修复建议。 多IDE支持:通义灵码支持包括...
- 下一篇
WAL-G 3.0.3 发布,数据库恢复工具
WAL-G 是 WAL-E 的继承者,是一款用于恢复 PostgreSQL、GreenplumDB、MySQL/MariaDB、MongoDB、etcd 和其他一些数据库的归档数据库的工具。 WAL-G 3.0.3 现已发布,该版本的主要特点是完全支持 OrioleDB。自 v0.1.3 起,WAL-G 就支持 block-level增量备份,但之前它将 OrioleDB 数据视为未知文件的集合。现在,WAL-G 可以了解 OrioleDB 是否安装在集群中,并能高效地备份 OrioleDB 数据。 此版本还包含两个用于 Postgres 的新命令:catchup-send和catchup-receive。当你需要在不向存储推送新备份的情况下更新滞后的副本时,这些命令非常有用。 公告称,“本质上,它们的工作原理与 pg_rewind 类似,但正好相反。也许我们应该把它们改名为 pg_wind。” 新版本还为 redis 添加了基于 aof 的备,以及缓解了依赖项中的几个 CVE(CVE-2023-39325、GHSA-9763-4f94-gfch)并修复了各种错误。 更多详情可查看:h...
相关文章
文章评论
共有0条评论来说两句吧...