ARM架构下Kubernetes与KubeSphere部署指南
2026/8/7 13:38:21 网站建设 项目流程

1. ARM架构K8s环境部署概述

在ARM架构设备上部署Kubernetes集群正成为边缘计算和混合云场景下的热门选择。相比x86环境,ARM架构具有更高的能效比和性价比,特别适合资源受限但需要稳定运行的场景。本次我们将从零开始在ARM平台上部署Kubernetes 1.34.5和KubeSphere 3.4.1,涵盖在线和离线两种部署模式。

提示:ARM架构下的K8s部署与x86主要区别在于镜像兼容性和性能调优,需要特别注意组件版本匹配

2. 环境准备与前置条件

2.1 硬件与系统要求

部署前需要准备:

  • 至少3台ARM架构服务器(建议4核8G以上配置)
  • 操作系统:Ubuntu 22.04 LTS ARM版(推荐)或CentOS 8 Stream ARM版
  • 磁盘空间:每节点50GB以上可用空间
  • 网络:节点间互通,无防火墙限制

2.2 基础环境配置

# 所有节点执行 sudo apt update && sudo apt upgrade -y sudo swapoff -a sudo sed -i '/ swap / s/^/#/' /etc/fstab

配置内核参数:

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sudo sysctl --system

3. 容器运行时安装与配置

3.1 Containerd安装

# 在线安装 sudo apt install -y containerd sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml sudo systemctl restart containerd

离线安装需提前下载:

  • containerd-1.7.12-linux-arm64.tar.gz
  • runc.arm64
  • cni-plugins-linux-arm64-v1.3.0.tgz

3.2 镜像仓库配置

对于离线环境,需要搭建私有镜像仓库:

docker run -d \ -p 5000:5000 \ --restart=always \ --name registry \ -v /data/registry:/var/lib/registry \ registry:2-arm64

4. Kubernetes集群部署

4.1 在线部署流程

# 所有节点安装kubeadm/kubelet/kubectl sudo apt-get install -y apt-transport-https ca-certificates curl curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet=1.34.5-00 kubeadm=1.34.5-00 kubectl=1.34.5-00 sudo apt-mark hold kubelet kubeadm kubectl

初始化控制平面:

sudo kubeadm init \ --kubernetes-version=v1.34.5 \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=<MASTER_IP> \ --image-repository=registry.aliyuncs.com/google_containers

4.2 离线部署方案

  1. 提前下载离线包:

    • kubeadm-arm64-v1.34.5.tar.gz
    • kubelet-arm64-v1.34.5.tar.gz
    • kubectl-arm64-v1.34.5.tar.gz
    • pause-arm64-3.9.tar
  2. 加载镜像:

docker load -i pause-arm64-3.9.tar
  1. 使用离线配置文件初始化:
kubeadm init \ --config=kubeadm-config.yaml

5. KubeSphere部署与配置

5.1 在线安装KubeSphere

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/kubesphere-installer.yaml kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/cluster-configuration.yaml

5.2 离线安装准备

需要提前下载:

  • kubesphere-installer-arm64-v3.4.1.tar.gz
  • ks-installer-arm64-v3.4.1.tar.gz
  • 所有依赖组件的ARM64镜像

部署命令:

helm install kubesphere ./kubesphere \ --namespace kubesphere-system \ --create-namespace \ --set persistence.storageClass=<your-storage-class>

6. 网络插件与存储配置

6.1 Calico网络部署

kubectl apply -f https://docs.projectcalico.org/manifests/calico-arm64.yaml

6.2 本地存储方案

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer

7. 常见问题排查

7.1 ARM架构特有问题

  1. 镜像兼容性问题:
# 检查镜像平台 docker inspect --format='{{.Architecture}}' <image>
  1. 节点NotReady状态:
journalctl -u kubelet -f

7.2 KubeSphere部署问题

  1. 安装卡在Checking状态:
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
  1. 资源不足导致组件无法启动:
kubectl describe pod -n kubesphere-system <pod-name>

8. 性能优化建议

  1. kubelet配置优化:
cat <<EOF | sudo tee /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS=--max-pods=50 --kube-api-qps=20 --kube-api-burst=30 EOF
  1. 内核参数调优:
echo 'vm.swappiness = 10' | sudo tee -a /etc/sysctl.conf echo 'vm.vfs_cache_pressure = 50' | sudo tee -a /etc/sysctl.conf sudo sysctl -p
  1. Containerd性能优化:
[plugins."io.containerd.grpc.v1.cri".containerd] snapshotter = "overlayfs" disable_snapshot_annotations = true [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询