admin管理员组

文章数量:1037775

企业级Kubernetes离线部署指南

问题场景与需求分析

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 /
$ 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 删除镜像数据网络kubernetes部署

企业级Kubernetes离线部署指南

问题场景与需求分析

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 /
$ 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 删除镜像数据网络kubernetes部署

本文标签: 企业级Kubernetes离线部署指南