如何在华为云欧拉系统上平稳安装Kubernetes

千杰吖_9548

千杰吖_9548

2026-10-14

269人浏览

原创

在华为云欧拉(openeuler)arm64架构上部署kubernetes,必须使用原生aarch64版本的kubelet、containerd、cni插件及镜像,提前加载br_netfilter/ip_vs等内核模块,禁用selinux和swap,配置containerd启用systemd-cgroup,并指定arm兼容的镜像仓库与版本,否则将出现exec format error、notready或coredns崩溃等问题。

如何在华为云欧拉系统上平稳安装kubernetes

直接说结论:在华为云欧拉(openEuler)上装 Kubernetes,别硬套 x86 教程,ARM64 架构下必须确认所有组件原生支持 aarch64,且容器运行时、CNI 插件、kubelet 二进制都得是 ARM 版本。否则会卡在 exec format error、image not found 或节点 NotReady。


确认 openEuler 版本与内核模块是否就绪

openEuler 22.03 LTS(含 SP1/SP3)是当前最稳妥的选择,但 SP 版本间内核模块加载行为有差异:

  • 必须提前加载 br_netfilter 和 ip_vs 系列模块,否则 kube-proxy IPVS 模式启动失败

  • /etc/modules-load.d/k8s.conf 中要显式列出:

    br_netfilter
    ip_vs
    ip_vs_rr
    ip_vs_wrr
    ip_vs_sh
    nf_conntrack
  • 验证方式:lsmod | grep -E 'br_netfilter|ip_vs',缺任何一个都可能导致 Calico/Flannel 启动后 Pod 网络不通

  • openEuler 默认启用 SELINUX=permissive,但 kubeadm 要求彻底禁用(SELINUX=disabled),仅 setenforce 0 不够,重启后会恢复

  • swap 必须永久关闭:swapoff -a + 注释 /etc/fstab 中所有 swap 行,否则 kubeadm init 直接报错


containerd 替代 Docker 是更稳的选择

华为云欧拉默认不预装 Docker,且社区版 Docker 对 aarch64 的维护滞后(比如 24.x+ 版本在某些 SP3 内核上 cgroupv2 兼容性差):

  • 推荐用系统自带的 containerd(openEuler 22.03 自带 1.6+,满足 k8s 1.28+ 要求)

  • 关键配置项必须设对:/etc/containerd/config.toml 中:

    Kubernetes Network Policy Generator
    Kubernetes Network Policy Generator

    使用加权评分卡在12项标准上评估和比较隐私解决方案供应商。适用于选择隐私管理软件、比较数据保护方案等场景。

    下载
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
    runtime_type = "io.containerd.runc.v2"
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true
  • 若用 systemd-cgroup(openEuler 默认),SystemdCgroup = true 必须开启,否则 kubelet 报 cgroup driver mismatch

  • 配置完执行:systemctl restart containerd && crictl info 确认 RuntimeReady 为 true

  • 不建议强行用 Docker:即使装上,也要改 /etc/docker/daemon.json 加 "exec-opts": ["native.cgroupdriver=systemd"],且需额外装 cri-dockerd —— 多一层封装,多一个故障点


kubeadm init 时必须指定 ARM 兼容参数

kubeadm 默认拉取的是 amd64 镜像,不加干预会在 master 节点卡住:

  • 所有节点先执行:kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.28.2(替换成你选的版本)
  • init 命令不能省略 --image-repository 和 --cri-socket:
    kubeadm init \
    --pod-network-cidr=10.244.0.0/16 \
    --image-repository registry.aliyuncs.com/google_containers \
    --cri-socket unix:///run/containerd/containerd.sock \
    --kubernetes-version v1.28.2
  • 如果用 Calico,后续 kubectl apply -f 的 manifest 必须是 ARM 适配版(官方 manifests 默认不含 aarch64 镜像,得手动替换 calico/cni、calico/node 镜像 tag 为 arm64 后缀版,或用 calico/v3.26.3 这类已内置多架构的版本)
  • kubeadm join 命令里若含 --control-plane,确保所有 master 节点的 /etc/hosts 解析一致,否则 etcd 成员注册失败,出现 context deadline exceeded 错误

网络插件选型和镜像源是隐形大坑

Calico 和 Flannel 在 ARM 上表现差异明显:

  • Flannel 的 quay.io/coreos/flannel 官方镜像从 v0.22.0 起才正式支持 aarch64,旧版直接拉取失败

  • Calico 的 docker.io/calico/cni 镜像在 v3.25 之前未做 multi-arch push,必须用类似 docker.io/calico/cni:v3.26.3-arm64 这种明确带架构后缀的 tag(或改 manifest 用 imagePullPolicy: Always 强制校验)

  • 国内环境务必配镜像加速:

    • containerd 配置中加 registry.mirrors(如阿里云 @#@#@#@#@#@#@#@#@#@0)
    • kubeadm --image-repository 推荐用 registry.cn-hangzhou.aliyuncs.com/google_containers,比默认的 gcr.io 可靠得多
  • 最容易被忽略的一点:openEuler 的 firewalld 即使 disabled,也可能残留 iptables 规则,导致 NodePort 不通。部署后跑个 curl -v http://<node-ip>:30000</node-ip> 测试前,先 iptables -L -t nat | grep 30000 看规则是否生效

复杂点在于:ARM 生态的镜像不是“存在就行”,而是得同时满足「架构匹配 + registry 可达 + manifest 正确声明 platform」。少验证其中一环,就会在节点 Ready 后突然发现 CoreDNS CrashLoopBackOff 或 DNS 解析失败——那往往不是配置问题,是镜像本身没跑起来。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

2025.12.22

116

5

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

2026.06.29

188

19

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

100

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

40

15

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

20

15

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

2026.10.10

40

26

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

2026.10.10

40

32

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

2026.10.10

40

16

Kratos框架零基础入门教程
Kratos框架零基础入门教程

本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

2026.10.10

40

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习