KubeSphere简介
个人感觉推荐:学习使用kubesphere,企业使用rancher
KubeSphere 是一款功能强大的容器管理平台,以下是其简介:
- 基本信息
开源项目:基于 Apache-2.0 授权协议开源,由 Google Go、Groovy、HTML/CSS 和 Shell 等多种编程语言开发。
基础架构:以 Kubernetes 为内核,架构具有即插即用特性,可运行在私有云、公有云、混合云等多种环境,支持多云与多集群的统一管理。- 功能特性
全栈 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 或物理环境之上。- 应用场景
助力业务数字化转型:帮助企业一步升级容器架构,适应数字化转型需求。
降低运维复杂度:通过多维管控 Kubernetes,让运维工作更加轻松。
推动企业 DevOps 落地:实现敏捷开发与自动化运维,提升开发和运维效率。
升级云原生架构:提供灵活的微服务解决方案,助力企业构建云原生架构。
释放硬件最大效能:基于物理环境构建全栈容器架构,充分利用硬件资源。
| 主机名 | ip | 角色 |
|---|---|---|
| k8s-master01 | 100.100.157.10 | k8s-master01/nfs-server |
| k8s-work01 | 100.100.157.11 | k8s-work01/nfs-client |
| k8s-work02 | 100.100.157.12 | k8s-work02/nfs-client |
一、NFS安装
1、所有服务器节点安装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

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是否部署成功

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

二、部署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-paco2. 验证
