KubeSphere简介

个人感觉推荐:学习使用kubesphere,企业使用rancher

KubeSphere 是一款功能强大的容器管理平台,以下是其简介:

  1. 基本信息
    开源项目:基于 Apache-2.0 授权协议开源,由 Google Go、Groovy、HTML/CSS 和 Shell 等多种编程语言开发。
    基础架构:以 Kubernetes 为内核,架构具有即插即用特性,可运行在私有云、公有云、混合云等多种环境,支持多云与多集群的统一管理。
  2. 功能特性
    全栈 IT 自动化:提供从 Kubernetes 集群搭建到运维的全栈 IT 自动化能力,支持在线和离线安装、升级与扩容。
    可视化资源管理:提供可视化的 Kubernetes 资源管理界面,用户可通过向导式界面轻松创建和管理各种 K8s 资源。
    强大的 DevOps 功能:内置基于 Jenkins 的 DevOps 系统,支持图形化和脚本两种方式的 CI/CD 流水线构建,还提供 S2I 和 B2I 等 CD 工具。
    微服务治理出色:基于 Istio 提供可视化无代码侵入的灰度发布、熔断、流量治理等功能,同时支持分布式 Tracing。
    多租户管理:提供基于角色的细粒度统一认证,支持对接企业 LDAP/AD,实现多层级的权限管理。
    可观察性强:提供集群、工作负载、Pod、容器等多维度的监控,支持基于多租户的日志查询与日志收集,提供节点与应用层级的告警与通知功能。
    基础设施管理全面:支持 Kubernetes 节点管理、节点扩容与集群升级,支持对接多种存储系统,提供可视化运维管理 PVC、StorageClass 的功能,并支持 CSI 插件对接云平台存储。
    网络管理灵活:提供租户网络隔离与 K8s NetworkPolicy 管理功能,支持 Calico、Flannel 等多种网络插件,并提供 Porter LB 用于暴露物理环境 K8s 集群的 LoadBalancer 服务。
    支持 GPU 资源管理:可运行 TensorFlow 等 ML 框架,为 AI 和大数据应用提供支持。
    技术架构:采用前后端分离设计,后端各个功能组件可通过 REST API 对接外部系统,这种设计让其能灵活运行在各种 Kubernetes、私有云、公有云、VM 或物理环境之上。
  3. 应用场景
    助力业务数字化转型:帮助企业一步升级容器架构,适应数字化转型需求。
    降低运维复杂度:通过多维管控 Kubernetes,让运维工作更加轻松。
    推动企业 DevOps 落地:实现敏捷开发与自动化运维,提升开发和运维效率。
    升级云原生架构:提供灵活的微服务解决方案,助力企业构建云原生架构。
    释放硬件最大效能:基于物理环境构建全栈容器架构,充分利用硬件资源。
主机名ip角色
k8s-master01100.100.157.10k8s-master01/nfs-server
k8s-work01100.100.157.11k8s-work01/nfs-client
k8s-work02100.100.157.12k8s-work02/nfs-client

一、NFS安装

1、所有服务器节点安装NFS服务

参考nfs安装手册

2、配置KubeSphere共享的目录

#步骤一:创建共享目录
mkdir -p /root/hxy/nfs/data/kubesphere
 
#步骤二:在/etc/exports文件中加入下面的行
/root/hxy/nfs/data/kubesphere *(insecure,rw,sync,no_root_squash)
 
#步骤三:重启NFS服务
systemctl restart rpcbind && systemctl enable rpcbind
systemctl restart nfs && systemctl enable nfs
 
#步骤四:查看配置是否生效
exportfs -r
exportfs
 
#步骤五:其他集群节点上查看配置是否生效
showmount -e 100.100.157.10

image.png

image.png

3、部署NFS Subdir External Provisioner 插件

作用:因为NFS没有可以提供动态卷供应的能力,安装NFS Subdir External Provisioner 插件,NFS 能为 KubeSphere 提供动态卷供应能力。当有新的 PersistentVolumeClaim(PVC)创建时,系统可自动根据 StorageClass 的配置,在 NFS 服务器上创建对应的存储卷并挂载到需要的容器中,提高了存储资源的分配效率和灵活性。

3.1 安装步骤

#步骤一:创建安装目录
mkdir -p  /opt/k8s/kubesphere && cd /opt/k8s/kubesphere
 
#步骤二:下载压缩包
wget https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/archive/refs/tags/nfs-subdir-external-provisioner-4.0.18.zip
 
#步骤三:下载后解压
unzip nfs-subdir-external-provisioner-4.0.18.zip
 
#步骤四:进入文件目录
cd nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-4.0.18
 
 
#步骤五:创建命名空间(Namespace)方便管理
kubectl create ns nfs-system
 
#步骤六:替换部署文件中的命名空间名称
sed -i'' "s/namespace:.*/namespace: nfs-system/g" ./deploy/rbac.yaml ./deploy/deployment.yaml
 
 
#步骤七:替换部署文件中的命名空间为nfs-system
cd /opt/k8s/kubesphere/nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-4.0.18
 sed -i'' "s/namespace:.*/namespace: nfs-system/g" ./deploy/rbac.yaml ./deploy/deployment.yaml
 
 grep "namespace:" ./deploy/*     #验证是否替换成功
 
 
#步骤八:创建RBAC资源
cd /opt/k8s/kubesphere/nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-4.0.18/deploy
kubectl apply -f rbac.yaml
 
#步骤九:检查NFS客户端Provisioner部署是否成功
 
#检查 ServiceAccount输出中是否包含 nfs-client-provisioner,确认 ServiceAccount 已经正确创建
kubectl get serviceaccount -n nfs-system|grep nfs-client-provisioner
 
#检查RBAC配置,确认ClusterRole和ClusterRoleBinding 是否已创建:
kubectl get clusterrole | grep nfs-client-provisioner-runner
kubectl get clusterrolebinding | grep run-nfs-client-provisioner
 
 
#步骤十:
#1)配置deployment.yaml将nfs-subdir-external-provisioner:v4.0.2的镜像地址改为自己的私有镜像地址(注:nfs-subdir-external-provisioner:v4.0.2镜像GitHub上获取网络受阻,可以先找到资源上传到自己的私有仓库中,可参考的源有:k8s-sigs.io/nfs-subdir-external-provisioner)
#2)修改NFS_SERVER和NFS_PATH为NFS主机对应的IP和共享的目录
#3)修改volumes中的server和path为NFS主机的IP和NFS共享的目录
#如下:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  labels:
    app: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: nfs-system
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: k8s-sigs.io/nfs-subdir-external-provisioner
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: k8s-sigs.io/nfs-subdir-external-provisioner
            - name: NFS_SERVER
              value: 100.100.157.10
            - name: NFS_PATH
              value: /root/hxy/nfs/data/kubesphere 
      volumes:
        - name: nfs-client-root
          nfs:
            server: 100.100.157.10
            path:/root/hxy/nfs/data/kubesphere 
 
 
 
#步骤十一:执行/nfs-subdir-external-provisioner部署命令
kubectl apply -f deployment.yaml
 
 
#步骤十二:验证插件是否部署成功
kubectl get deployment,pods -n nfs-system
 
 
#步骤十三:部署StorageClass
kubectl apply -f class.yaml
 
#检查StorageClass是否部署成功
kubectl get sc 

3.2 检查Provisioner、ClusterRole、ClusterRoleBinding是否部署成功

image.png

3.3 检查nfs-client-provisioner是否部署成功

image.png

二、部署Kubesphere

1. 安装核心组件Kubesphere core

通过helm安装核心组件Kubesphere core,成功后终端会输出user/passowrd/url

helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.com.cn/main/ks-core-1.1.3.tgz --debug --wait \
--set global.imageRegistry=swr.cn-southwest-2.myhuaweicloud.com/ks \
--set extension.imageRegistry=swr.cn-southwest-2.myhuaweicloud.com/ks \
--set hostClusterName=k8s-paco

2. 验证

image.png

正文到此结束
最后修改:2025 年 05 月 05 日
如果觉得我的文章对你有用,请随意赞赏