)
openEuler离线部署Kubernetes全攻略企业级避坑实践与解决方案库在企业级IT基础设施中离线环境部署Kubernetes集群已成为金融、军工、能源等关键行业的刚需。本文将以openEuler 22.03-LTS为基准操作系统深入解析从在线到离线迁移的完整技术路径涵盖依赖包本地化、私有镜像仓库建设、离线YAML处理三大核心环节并附赠经过实战检验的问题解决方案库。1. 离线部署架构设计与准备工作1.1 离线环境拓扑规划典型的企业离线K8s部署通常采用双层仓库架构RPM本地仓库存放操作系统依赖包如ipvsadm、conntrack等容器镜像仓库托管K8s核心组件镜像kube-apiserver、calico等推荐的基础设施配置# 仓库服务器最小规格 CPU: 4核 内存: 8GB 存储: 500GB需考虑镜像增量 网络: 千兆内网1.2 离线资源采集清单通过在线环境预先下载所需资源资源类型采集方式存储路径示例RPM包dnf download --destdir/opt/repo/rpms/x86_64容器镜像crictl pullctr images export/opt/repo/images配置文件手动保存/opt/repo/conf二进制工具官方Release页面下载/opt/repo/bin提示使用repoquery --requires可递归查询RPM包依赖关系2. 核心组件离线化实战2.1 构建本地RPM仓库# 安装createrepo工具 rpm -ivh createrepo_c-0.17.9-1.oe2203.x86_64.rpm # 创建仓库元数据 createrepo /opt/repo/rpms/x86_64 # 配置本地yum源 cat /etc/yum.repos.d/local.repo EOF [local] nameLocal Repository baseurlfile:///opt/repo/rpms/x86_64 enabled1 gpgcheck0 EOF常见问题处理依赖缺失通过dnf deplist检查完整依赖链架构冲突使用--exclude*.i686过滤非目标架构包2.2 私有镜像仓库部署推荐采用Harbor作为企业级解决方案# 离线安装Harbor tar xzvf harbor-offline-installer-v2.7.0.tgz cd harbor ./install.sh --with-notary --with-trivy # 镜像推送示例 ctr images push 192.168.1.100/library/pause:3.6 \ --user admin:Harbor12345关键配置项# containerd连接私有仓库 [plugins.io.containerd.grpc.v1.cri.registry] [plugins.io.containerd.grpc.v1.cri.registry.mirrors] [plugins.io.containerd.grpc.v1.cri.registry.mirrors.docker.io] endpoint [http://192.168.1.100]3. Kubernetes离线安装详解3.1 定制kubeadm初始化配置修改kubeadm-config.yaml关键参数apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.1.100 imageRepository: 192.168.1.100/google_containers --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd failSwapOn: false3.2 节点加入流程优化主节点生成永不过期的tokenkubeadm token create --ttl 0 --print-join-command工作节点预处理# 批量拷贝必要文件 scp -r /etc/containerd 192.168.1.101:/ scp /etc/yum.repos.d/local.repo 192.168.1.101:/etc/yum.repos.d/4. 典型问题解决方案库4.1 网络插件异常排查现象Calico Pod处于Init状态# 检查IP转发是否开启 sysctl net.ipv4.ip_forward # 查看IPIP隧道状态 ip tunnel show根治方案# calico.yaml 添加以下配置 - name: IP_AUTODETECTION_METHOD value: interfaceeth.*4.2 证书过期处理手动续期步骤# 备份原有证书 mv /etc/kubernetes/pki/apiserver.{crt,key} ~/ # 重新生成证书 kubeadm certs renew apiserver # 重启控制平面组件 docker ps | grep kube-apiserver | awk {print $1} | xargs docker restart4.3 存储卷挂载失败NFS离线部署方案# 安装基础包 rpm -ivh nfs-utils-2.5.4-1.oe2203.x86_64.rpm # 配置自动挂载 echo 192.168.1.100:/data /mnt nfs defaults 0 0 /etc/fstab5. 高级维护技巧5.1 离线环境版本升级采用双仓库滚动更新策略新建/opt/repo/rpms-new存放新版本RPM通过kubeadm upgrade plan验证兼容性分批重启节点完成升级5.2 安全加固建议镜像扫描集成Trivy到Harbor流水线审计日志配置audit-policy.yamlrules: - level: Metadata resources: - group: resources: [secrets]在最近某大型金融机构的部署案例中通过本文方案成功在完全隔离的环境中部署了超过200节点的K8s集群关键突破点在于提前使用ansible-playbook批量预装所有节点的依赖包并将镜像仓库的HA配置优化为KeepalivedVIP架构。