前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >企业级Kubernetes离线部署指南

企业级Kubernetes离线部署指南

作者头像
宅蓝三木
发布2025-03-15 19:50:00
发布2025-03-15 19:50:00
9400
代码可运行
举报
文章被收录于专栏:三木的博客三木的博客
运行总次数:0
代码可运行

问题场景与需求分析

1.1 核心挑战

在隔离网络环境下构建企业级Kubernetes集群时面临三大挑战:

  • 资源隔离:无法直接访问DockerHub、GitHub等公共资源库
  • 安全合规:需通过私有镜像仓库(Harbor)实现镜像生命周期管理
  • 生产级要求:需满足高可用架构、持久化存储、网络策略等企业特性

1.2 解决方案要点

  • 跳板机设计:通过双网卡笔记本实现:
    • 外网侧:下载RKE2二进制文件、Harbor安装包、依赖镜像
    • 内网侧:搭建HTTP文件服务器同步资源
  • 离线资源池
    • RKE2 v1.26.5+ 离线包
    • Harbor v2.7.0+ 离线安装包
    • 预下载Kubernetes组件镜像(约300个)
  • 网络规划

架构设计与组件分布

2.1 逻辑架构图

2.2 节点规格建议

角色类型

CPU

内存

磁盘

数量

网络要求

Server

4+

8G+

100GB+ x3

3

1Gbps 内网

Agent

8+

16G+

200GB+

N

10Gbps 内网

Harbor

4

8G

1TB

1

独立存储网络


关键配置与问题排查

3.1 RKE2数据目录迁移

修改/etc/rancher/rke2/config.yaml指定数据目录到数据盘:

代码语言:javascript
代码运行次数:0
运行
复制
data-dir: /data/rke2

3.2 指定Ingress节点

给目标节点打标签:

代码语言:javascript
代码运行次数:0
运行
复制
kubectl label node node01 role=server

部署定制化Ingress, 创建/data/rke2/server/manifests/rke2-ingress-nginx-config.yaml

代码语言:javascript
代码运行次数:0
运行
复制
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-ingress-nginx
namespace: kube-system
spec:
valuesContent: |-
controller:
  nodeSelector:
    role: server

重启rke2-server服务

3.3 NFS StorageClass配置

在K8S所有节点上安装nfs客户端工具:

代码语言:javascript
代码运行次数:0
运行
复制
sudo apt-get update
sudo apt-get install nfs-common

获取并安装Helm Chart

代码语言:javascript
代码运行次数:0
运行
复制
$ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
$ helm install nfs-subdir-external-provisioner \
  -n storage \
  --create-namespace \
  --set nfs.server=NFS_SERVER_IP \
  --set nfs.path=/data/exports/k8s \
  --set storageClass.name=nfs \
  --set storageClass.defaultClass=true \
  nfs-subdir-external-provisioner/nfs-subdir-external-provisioner

验证是否成功

代码语言:javascript
代码运行次数:0
运行
复制
# pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pvc
spec:
  storageClassName: nfs
  accessModes: [ReadWriteMany]
  resources:
    requests:
      storage: 1Gi
代码语言:javascript
代码运行次数:0
运行
复制
$ kubectl apply -f pvc.yaml
$ ssh root@nfs-server ls /data/exports/k8s
default-test-pvc-pvc-e4c14e5b-e820-4ca0-8bc0-f08d40e333ae
$ kubectl delete -f pvc.yaml

注:所有操作建议先在预发布环境验证,生产部署前做好etcd备份。可通过rke2 etcd-snapshot save创建集群快照。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题场景与需求分析
    • 1.1 核心挑战
    • 1.2 解决方案要点
  • 架构设计与组件分布
    • 2.1 逻辑架构图
    • 2.2 节点规格建议
  • 关键配置与问题排查
    • 3.1 RKE2数据目录迁移
    • 3.2 指定Ingress节点
    • 3.3 NFS StorageClass配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档