怎么进行ARM64离线部署Kubernetes和KubeSphere

发布时间:2021-12-20 11:23:42 作者:iii
来源:亿速云 阅读:302
# 怎么进行ARM64离线部署Kubernetes和KubeSphere

## 前言

随着边缘计算和国产化替代的推进,ARM64架构在服务器领域的应用越来越广泛。本文将详细介绍如何在ARM64架构下离线部署Kubernetes集群和KubeSphere容器平台,适用于内网环境、无外网连接的场景。

---

## 一、环境准备

### 1.1 硬件要求

- **服务器配置**:至少3台ARM64架构服务器(2C4G以上配置)
- **网络要求**:
  - 节点间网络互通
  - 所有节点具有固定IP地址
  - 确保`/etc/hosts`已配置主机名解析

### 1.2 软件要求

| 组件           | 版本要求              |
|----------------|----------------------|
| 操作系统       | CentOS 7.6+/Ubuntu 20.04 |
| Kubernetes     | v1.20+               |
| Docker         | 19.03.15+           |
| KubeSphere     | v3.3.x               |

---

## 二、离线资源准备

### 2.1 下载离线包

在有外网的环境中下载所需资源:

```bash
# Kubernetes ARM64离线包
wget https://.../kubernetes-arm64-offline.tar.gz

# KubeSphere离线包
wget https://.../kubesphere-offline-arm64-v3.3.0.tar.gz

# 依赖镜像清单
wget https://.../images-list-arm64.txt

2.2 制作离线镜像仓库

  1. 安装Docker Registry:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
  1. 导入镜像:
# 加载基础镜像
docker load -i kubesphere-images-arm64.tar

# 批量推送镜像
while read image; do 
  docker tag $image localhost:5000/$image
  docker push localhost:5000/$image
done < images-list-arm64.txt

三、Kubernetes离线安装

3.1 基础环境配置

在所有节点执行:

# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 配置内核参数
cat > /etc/sysctl.d/k8s.conf <<EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf

3.2 安装Docker

# 安装离线Docker包
tar -zxvf docker-19.03.15-arm64.tgz
cp docker/* /usr/bin/

# 配置systemd服务
cat > /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
ExecStart=/usr/bin/dockerd --insecure-registry=your-registry-ip:5000
ExecReload=/bin/kill -s HUP $MNPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

systemctl enable docker && systemctl start docker

3.3 安装Kubernetes组件

  1. 安装kubeadm、kubelet、kubectl:
tar -zxvf kubernetes-arm64-offline.tar.gz
cd kubernetes
./install.sh
  1. 初始化Master节点:
kubeadm init \
  --image-repository=your-registry-ip:5000 \
  --kubernetes-version=v1.22.5 \
  --pod-network-cidr=10.244.0.0/16 \
  --service-cidr=10.96.0.0/12 \
  --apiserver-advertise-address=192.168.0.100
  1. 配置kubectl:
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

四、KubeSphere离线部署

4.1 准备存储系统

推荐使用NFS作为持久化存储:

# 主节点安装NFS
yum install -y nfs-utils
mkdir /nfs-share
chmod 777 /nfs-share
echo "/nfs-share *(rw,no_root_squash,sync)" > /etc/exports
systemctl enable --now nfs-server

# 其他节点安装客户端
yum install -y nfs-utils

4.2 部署KubeSphere

  1. 解压离线包:
tar -zxvf kubesphere-offline-arm64-v3.3.0.tar.gz
cd kubesphere/scripts
  1. 修改配置文件:
# conf/kubesphere.yaml
local_registry: "your-registry-ip:5000"
persistence:
  storageClass: "nfs-storage"
  1. 执行安装:
./install.sh
  1. 验证安装:
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

五、常见问题解决

5.1 镜像拉取失败

现象:Pod状态为ImagePullBackOff

解决方案: 1. 检查镜像tag是否正确:

kubectl describe pod <pod-name> -n <namespace>
  1. 手动导入缺失镜像:
docker pull your-registry:5000/missing-image:tag

5.2 节点NotReady

现象kubectl get nodes显示节点NotReady

解决方案: 1. 检查kubelet服务状态:

journalctl -u kubelet -f
  1. 确认网络插件已安装:
kubectl get pods -n kube-system

5.3 存储配置问题

现象:PVC一直处于Pending状态

解决方案: 1. 检查StorageClass配置:

kubectl get sc
  1. 验证NFS服务器连通性:
showmount -e <nfs-server-ip>

六、优化建议

  1. 资源分配

    • 为KubeSphere核心组件配置资源限制
    resources:
     limits:
       cpu: "2"
       memory: 4Gi
    
  2. 网络性能优化

    # 使用Calico网络插件
    kubectl apply -f https://docs.projectcalico.org/manifests/calico-arm64.yaml
    
  3. 监控调整

    • 修改Prometheus存储保留时间
    prometheus:
     prometheusSpec:
       retentionTime: "7d"
    

结语

通过本文的步骤,您已经成功在ARM64架构下完成了Kubernetes和KubeSphere的离线部署。这种部署方式特别适用于: - 军工、政府等保密单位 - 金融行业内网环境 - 边缘计算场景

后续可以继续探索: - 通过KubeSphere的应用商店部署业务应用 - 配置HPA实现自动扩缩容 - 集成Jenkins实现CI/CD流水线

注意:本文所有操作均基于ARM64架构环境,x86环境需使用对应的软件包。 “`

该文档包含约2850字,采用Markdown格式编写,包含: 1. 分章节结构化内容 2. 代码块和配置示例 3. 表格展示版本要求 4. 常见问题解决方案 5. 优化建议等实用内容 6. 适合直接保存为.md文件使用

推荐阅读:
  1. 如何对Kubernetes进行多节点部署
  2. 如何对kubernetes进行离线升级和在线升级

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kubernetes kubesphere

上一篇:多款Philips医疗设备被曝存在加密问题漏洞的示例分析

下一篇:怎么实现环境建立以及进行建图测试

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》