当前位置: 首页 > news >正文

k8s学习--k8s集群部署kubesphere的详细过程

文章目录

  • kubesphere简介
  • k8s群集部署kubespere
    • 环境
    • 准备工作
      • 一、配置nfs
      • 二、配置storageclass
      • 三、kubesphere
      • 开启服务(devops)

kubesphere简介

下面是官方文档描述
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。

作为全栈的多租户容器平台,KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。KubeSphere 为用户提供构建企业级 Kubernetes 环境所需的多项功能,例如多云与多集群管理、Kubernetes 资源管理、DevOps、应用生命周期管理、微服务治理(服务网格)、日志查询与收集、服务与网络、多租户管理、监控告警、事件与审计查询、存储管理、访问权限控制、GPU 支持、网络策略、镜像仓库管理以及安全管理等。

简单来说就是
k8s的图形化操作界面,减少了学习成本,有许多功能,只需要点点点就能完成大部分操作

k8s群集部署kubespere

环境

虚拟机

Ip主机名cpu内存硬盘
192.168.10.11master012cpu双核4G100G
192.168.10.12worker012cpu双核4G100G
192.168.10.13worker022cpu双核4G100G
192.168.10.18nfs1cpu一核2G100G

版本 centos7.9
已部署k8s-1.24.1

准备工作

以下标注的为官方文档内容

如需在 Kubernetes 上安装 KubeSphere 3.4,您的 Kubernetes 版本必须为:v1.20.x、v1.21.x、v1.22.x、v1.23.x、* v1.24.x、* v1.25.x 和 * v1.26.x。带星号的版本可能出现边缘节点部分功能不可用的情况。因此,如需使用边缘节点,推荐安装 v1.23.x。

1.出于稳定性考虑,本次安装的kubesphere版本为3.2.1版本
由于前置条件有版本要求我们需要先查看一下当前版本是否在1.20-1.26之间

kubectl version

在这里插入图片描述
可以看到当前版本是1.24.1,如果需要使用边缘节点,推荐安装1.23.x的版本

可用 CPU > 1 核;内存 > 2 G。CPU 必须为 x86_64,暂时不支持 Arm 架构的 CPU。

2.推荐三台主机配置为4g4u,因为很多功能都需要组件,最好为8g8u

Kubernetes 集群已配置默认 StorageClass(请使用 kubectl get sc 进行确认)。

3.因为在k8s中使用本地存储作为持久化存储卷时是配合pvc无法动态创建pv,所以我们在后面使用nfs来配置storageclass

一句话简述storageclass
storageclass是一种网络存储的动态供给方式,它通过连接存储插件,根据PVC的消费需求,动态生成PV,从而实现方便管理的效果。

使用 --cluster-signing-cert-file 和 --cluster-signing-key-file 参数启动集群时,kube-apiserver 将启用 CSR 签名功能。请参见 RKE 安装问题。

链接: 官方文档

一、配置nfs

所有主机安装

yum -y install nfs-utils rpcbind

在nfs主机(192.168.10.14)上操作
创建一个共享目录

mkdir /nfsdata
vim /etc/exports

写入

/nfsdata *(rw,sync,no_root_squash)

设置随机启动

systemctl start nfs-server
systemctl enable nfs-server

查看

showmount -e

在这里插入图片描述
到这里nfs就算配置完成了

二、配置storageclass

master01主机(192.168.10.11)操作
创建一个目录存放相关yaml文件

mkdir sc
cd sc

创建账号、创建权限、给账号关联权限
获取yaml文件

wget https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/rbac.yaml

获取不到直接复制下面的内容

vim rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: nfs-client-provisionernamespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: nfs-client-provisioner-runner
rules:- apiGroups: [""]resources: ["nodes"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: run-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisionernamespace: default
rules:- apiGroups: [""]resources: ["endpoints"]verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisionernamespace: default
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io

执行yaml文件

kubectl apply -f rbac.yaml

通过中间件将访问账号与共享存储关联
编写yaml文件

vim nfs-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nfs-client-provisioner
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccount: nfs-client-provisionercontainers:- name: nfs-client-provisionerimage: registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: k8s-sigs.io/nfs-subdir-external-provisioner- name: NFS_SERVERvalue: 192.168.10.14- name: NFS_PATHvalue: /nfsdatavolumes:- name: nfs-client-rootnfs:server: 192.168.10.14path: /nfsdata

执行yaml文件

kubectl apply -f nfs-deployment.yaml

配置storageclass与中间件关联
编写yaml文件

vim class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-client
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner # or choose another name, must match deployment's env PROVISIONER_NAME'
parameters:archiveOnDelete: "false"

执行yaml文件

kubectl apply -f class.yaml

查看

kubectl get storageclasses

记住存储类的名字:nfs-client
在这里插入图片描述
到这里前置环境就已经部署好了,下面就是kubesphere部署了

三、kubesphere

执行相关yam文件

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/kubesphere-installer.yaml

等待running即可

kubectl -n kubesphere-system get pod

在这里插入图片描述
在这里插入图片描述
获取相关yaml文件

wget https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/cluster-configuration.yaml

进行修改

vim cluster-configuration.yaml

在这里写入存储类的名称
在这里插入图片描述
在这里插入图片描述
在这里选择安装的服务,也可以选择以后在图形化界面安装,如果安装的话把false改为true即可,后面还有其他如(devops)的服务,可以直接改为true,或者看后面,后面会展示怎么在图形化界面安装服务
在这里插入图片描述
但不建议在这里安装,因为这样的话安装的会很慢
如果要安的话改成下面这样
在这里插入图片描述

执行该yaml文件

kubectl apply -f cluster-configuration.yaml

找到 kubesphere-system 命名空间下标签为 app=ks-install 或 app=ks-installer 的 Pod,并持续显示该 Pod 的日志输出。

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

然后耐心等待即可
看到这个就是安装完成了

在这里插入图片描述
里面标注了ip,账号名和密码,我们可以通过这些信息访问到kubesphere的web页面
在这里插入图片描述
然后后面会提示第一次登录需要修改密码,可以写一个新密码或先跳过
在这里插入图片描述

再接着就是主界面了
在这里插入图片描述

开启服务(devops)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到devops服务并没有启用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到devops,把false改为true,其他服务同理
在这里插入图片描述
在这里插入图片描述
确定后会自动更新
在这里插入图片描述

请耐心等待,一开始啥也没有很正常,他要先创建存储卷,当然长时间啥也没有,就要想想是不是上面写错了
在这里插入图片描述
在这里插入图片描述
大概5分钟
在这里插入图片描述
在这里插入图片描述
至此devops服务就配置好了

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2024.8.1(前端服务器的配置以及tomcat环境的配置)
  • 对象转化成base64-再转回对象
  • 人数管控系统助力图书馆实现精准客流统计分析
  • uniapp微信小程序按钮分享定制动态传参
  • git回退未commit、回退已commit、回退已push、合并某一次commit到另一个分支
  • 下载安装docker并解决拉去镜像的connect:connection refused问题(2024.7.31亲测有效)
  • 【Linux】文件描述符 fd
  • uniapp手写滚动选择器
  • 开机WiFi没了只能宽带,连声音都有问题,服务里系统还原等一堆错误无法调试!——DHCP服务器常见的故障影响这么大?
  • Go 语言中如何使用指针
  • ABAP+json格式数据转换时参数为空没传值
  • Python 3.12新功能(1)
  • 【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第四篇 嵌入式Linux系统移植篇-第七十三章内核添加网卡驱动
  • 布隆过滤器
  • 组蛋白乳酸化和RNA甲基化如何联动?请大数据把这个思路推给科研人
  • 【刷算法】求1+2+3+...+n
  • Brief introduction of how to 'Call, Apply and Bind'
  • C++类的相互关联
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JavaScript创建对象的四种方式
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • mysql 5.6 原生Online DDL解析
  • Mysql优化
  • ng6--错误信息小结(持续更新)
  • Spark RDD学习: aggregate函数
  • 搞机器学习要哪些技能
  • 基于 Babel 的 npm 包最小化设置
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 跨域
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 深入浅出Node.js
  • 数据结构java版之冒泡排序及优化
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • gunicorn工作原理
  • 第二十章:异步和文件I/O.(二十三)
  • ![CDATA[ ]] 是什么东东
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $().each和$.each的区别
  • (14)Hive调优——合并小文件
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (二)换源+apt-get基础配置+搜狗拼音
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)程序员疫苗:代码注入
  • .net core 控制台应用程序读取配置文件app.config
  • .net 获取url的方法
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .py文件应该怎样打开?