Kubernetes(k8s)学习笔记(六)--KubeSphere前置环境安装

news2025/5/9 21:58:26

1、安装 helm(master 节点执行)

Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos 中使用的 yum 或者 Python 中的 pip 一样,能快速查找、下载和安装软件包。Helm由客户端组件 helm 和服务端组件 Tiller 组成(注:Helm 3.0以上版本不再需要Tiller ), 能够将一组 K8S 资源打包统一管理, 是查找、共享和使用为 Kubernetes 构建的软件的最佳方式。

wget https://get.helm.sh/helm-v2.16.3-linux-amd64.tar.gz

在确保文件已完整下载到本地后,

2. 解压并安装 Helm 和 Tiller

执行下面的命令:

tar -zxvf helm-v2.16.3-linux-amd64.tar.gz
cd linux-amd64/
sudo cp helm /usr/local/bin/
sudo cp tiller /usr/local/bin/

3. 验证 Helm 安装

helm version --client

输出类似于下面的提示:

Client: &version.Version{SemVer:"v2.16.3", GitCommit:"1ee0254c86d4ed6887327dabed7aa7da29d7eb0d", GitTreeState:"clean"}

4. 安装 Tiller 到 Kubernetes 集群

Helm 2 需要 Tiller 在 Kubernetes 集群中运行,先创建helm-rbac.yaml文件,并写入下面的内容:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system

 此配置为 Tiller 授予了 cluster-admin 权限(最高权限),仅适合测试环境

使用下面的命令执行helm初始化

helm init \
  --service-account=tiller \
  --tiller-image=registry.aliyuncs.com/google_containers/tiller:v2.16.3 \
  --history-max 300 \
  --skip-refresh

使用kubectl get pods -n kube-system -l app=helm查看初始化情况

[root@k8s-node1 k8s]# kubectl get pods -n kube-system -l app=helm
NAME                             READY   STATUS    RESTARTS   AGE
tiller-deploy-66657d6565-62cm4   1/1     Running   0          29s

5.安装openebs

安装前完成准备工作

kubectl describe node k8s-node1 | grep Taint #确定 master 节点是否有 taint

kubectl taint nodes k8s-node1 node-role.kubernetes.io/master:NoSchedule- #取消 taint

 完成准备工作后在master节点 执行

# 添加新的源

helm repo add stable http://mirror.azure.cn/kubernetes/charts/

# 更新源

helm repo update

# 安装OpenEBS

helm install --namespace openebs --name openebs stable/openebs --version 1.5.0

目前这个镜像http://mirror.azure.cn/kubernetes/charts/是可用的,而下来这些都无法访问 

http://mirror.azure.cn/kubernetes/charts-incubator/
https://kubernetes-charts.storage.googleapis.com/ 拒绝访问
https://registry.cn-hangzhou.aliyuncs.com/ 无法访问
https://quay.io/ 被墙

https://swr.cn-east-3.myhuaweicloud.com/ 需登录

 https://mcr.azk8s.cn 不可用

 安装后提示

NOTES:
The OpenEBS has been installed. Check its status by running:
$ kubectl get pods -n openebs

For dynamically creating OpenEBS Volumes, you can either create a new StorageClass or
use one of the default storage classes provided by OpenEBS.

Use `kubectl get sc` to see the list of installed OpenEBS StorageClasses. A sample
PVC spec using `openebs-jiva-default` StorageClass is given below:"

使用下面的命令查看节点的信息

kubectl get pods -n openebs

 输出下面的信息

从中可以看出,第一个和最后一个镜像拉取失败。缺少的,通过docker pull命令拉取到本地。下面说下修复过程

1.临时修复 DNS

编辑 /etc/resolv.conf 文件,手动指定公共 DNS 服务器

 vi /etc/resolv.conf

添加下面这2个

nameserver 8.8.8.8
nameserver 223.5.5.5

其中 

  • 8.8.8.8 是 Google 公共 DNS

  • 223.5.5.5 是阿里云 DNS,国内速度更快

2.执行下面的命令测试DNS解析是否正常

nslookup registry-1.docker.io

 如果输出下面的文字,进入下一步,否则还须检查DNS解析

3.使用docker pull拉取缺失的镜像

 docker pull openebs/admission-server:1.5.0

 观察拉取的结果,如果成功,观察openebs的状态

 从上图可以看出,admission-server拉取成功后,对应Pods状态已经变为running状态了,还有一个snapshot存在问题。

使用下面的命令排查这个节点依赖的镜像

 kubectl get deployment openebs-snapshot-operator -n openebs -o yaml | grep image:

 输出如下内容:

从图中看出 缺少了这两个:

         image: quay.io/openebs/snapshot-controller:1.5.0
         image: quay.io/openebs/snapshot-provisioner:1.5.0

由于quary.io在国内无法访问,直接拉取会失败,将其替换为openebs/snapshot-controller:1.5.0,由于网络原因,可能会失败,多试几次就可以成功,成功后输出下面的内容

[root@k8s-node1 k8s]# docker pull openebs/snapshot-controller:1.5.0
1.5.0: Pulling from openebs/snapshot-controller
11bd2e533caa: Pull complete 
ef8a9f7e84b9: Pull complete 
d3e9905eb0f7: Pull complete 
35a77e35d9d3: Pull complete 
Digest: sha256:5b13c32b6b952c08a932f05ad6157ede2f9c45fd6b67b4f062c940e5e9f44f5e

接下来还有一个snapshot-provisioner:1.5.0,使用openebs目录的试了多次依然不成功,最后换成docker.io/openebs/snapshot-provisioner:1.5.0,才拉取成功,由于网络原因,如果失败,建议多试几次。

[root@k8s-node1 k8s]# docker pull openebs/snapshot-provisioner:1.5.0
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

[root@k8s-node1 k8s]# docker pull docker.io/openebs/snapshot-provisioner:1.5.0
1.5.0: Pulling from openebs/snapshot-provisioner
Digest: sha256:7c63f7e7fac566e0bca93c65e81edfaf043f435e9c151a4831171c8c82e42df4
Status: Downloaded newer image for openebs/snapshot-provisioner:1.5.0

再次查看openebs节点状态,所有的都处于running状态了


最后将 openebs-hostpath 设置为 默认的 StorageClass:

kubectl patch storageclass openebs-hostpath -p \

{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

 使用 kubectl get sc查看设置是否生效:

图中可以看出openebs-hostpath (default) 已设为默认存储类型了。 

至此, OpenEBS 的 LocalPV 已作为默认的存储类型创建成功。 由于在前面的操作中手动去掉了 master 节点的 Taint, 在安装完 OpenEBS 后将 master 节点 Taint 加上, 避免业务相关的工作负载调度到 master 节点抢占 master 资源

kubectl taint nodes k8s-node1 node-role.kubernetes.io=master:NoSchedule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2371816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

架构思维:构建高并发读服务_异构数据的同步一致性方案

文章目录 一、引言二、全景架构回顾三、潜在问题问题1:Binlog 延迟——理想 vs 实际问题2:Binlog 格式解析问题3:高可靠消费1. 串行 ACK 消费2. 并行消费+乱序风险3. 解决方案 问题4:缓存数据结构设计1. Key–Value 冗…

剑指大规模 AI 可观测,阿里云 Prometheus 2.0 应运而生

作者:曾庆国(悦达) Prometheus 大家应该非常熟悉,正文开始前,让我们一起来回顾开源 Prometheus 项目的发展史。Prometheus 最初由 SoundCloud 的工程师 Bjrn Rabehl 和 Julius Volz 于 2012 年开发。当时,…

游戏引擎学习第260天:在性能分析器中实现钻取功能

昨天那个帧内存满之后触发段错误实在没找到什么原因导致的 继续研究一下为什么导致的 内存不够进来释放frame 释放frame 应该会给DebugState->FirstFreeStoredEvent 赋值吧 这段宏定义: #define FREELIST_DEALLOCATE(Pointer, FreeListPointer) \if(Pointer) {…

【自然语言处理与大模型】使用Xtuner进行QLoRA微调实操

本文首先对Xtuner这一微调框架进行简单的介绍。手把手演示如何使用Xtuner对模型进行微调训练,包括数据准备、训练命令执行及训练过程中的监控技巧。最后,在完成微调之后,本文还将介绍如何对微调结果进行简单对话测试。 一、Xtuner微调框架 X…

扣子创建一个应用

什么是扣子应用 扣子应用可以让你相对轻松的搭建一个具备AI功能的应用,它区别智能体,在于智能体的ui和交互相对固定,主要是以对话框聊天的方式进行交互,而扣子应用则可以让ui交互表现更加丰富。 实践一个生成图片的应用 这里我…

SpringBoot教程(vuepress版)

Spring Boot 教程 项目介绍 这是一个系统化的 Spring Boot 学习教程,采用循序渐进的方式,帮助开发者从零开始掌握 Spring Boot 开发。 教程特点 系统化的知识结构实用的代码示例完整的实战案例丰富的练习作业 目录结构 基础入门 Spring Boot 简介…

FiLo++的框架图介绍

FiLo框架图模块详解 1. 文本生成模块 Normal Texts 功能:生成正常样本的文本描述。输入:固定模板(如 A [domain] photo of [state][cls])和可学习模板(如 [v1][v2]...[vm][state][cls])。输出:融…

C++--入门基础

C入门基础 1. C的第一个程序 C继承C语言许多大多数的语法,所以以C语言实现的hello world也可以运行,C中需要把文件定义为.cpp,vs编译器看是.cpp就会调用C编译器编译,linux下要用g编译,不再是gcc。 // test.cpp #inc…

准确---Typora配置Gitee图床并实现自动图片上传

下载地址:https://github.com/Molunerfinn/picgo/releases 安装就直接下一步,下一步就行 安装完以后然后回到Typora上偏好设置指定一下路径 默认是 C:\Program Files\PicGo\PicGo.exe 并且还需要选择规则 接下来就需要去PicGo上面配置了 配置之前需要去…

Day111 | 灵神 | 二叉树 | 验证二叉搜索树

Day111 | 灵神 | 二叉树 | 验证二叉搜索树 98.验证二叉搜索树 98. 验证二叉搜索树 - 力扣(LeetCode) 方法一:前序遍历 递归函数传入合法的左右边界,只有当前结点是合法的边界,才是二叉搜索树,否则就返回…

Redis 8.0 正式版发布,新特性很强!

就在前两天,Redis 8.0 正式版 (GA) 来了!这并不是一次简单的更新,Redis 8.0 不仅带来了性能上的进一步提升,还带来一些实用的新特性与功能增强。并且,最重要的是拥抱 AGPLv3 重归开源! 下面,简单…

以太坊智能合约开发框架:Hardhat v2 核心功能从入门到基础教程

一、设置项目 Hardhat 项目是安装了 hardhat 包并包含 hardhat.config.js 文件的 Node.js 项目。 操作步骤: ①初始化 npm npm init -y②安装 Hardhat npm install --save-dev hardhat③创建 Hardhat 项目 npx hardhat init如果选择 Create an empty hardhat.…

了解Dockerfile

定制docker 镜像的方式: 手动修改容器内容,导出新的镜像基于dockerfile 自行编写指令,基于指令流程创建镜像 镜像和容器的层级实现 docker拉取镜像到docker engine 之后,共享系统内核。 在内核层上有镜像层(本质上只…

强化学习--2.数学

强化学习--数学 1、概率统计知识1.1 随机变量与观测值1.2 概率密度函数(PDF)1.3 期望1.4 随机抽样 2、数据期望E3、正态分布4、条件概率1. **与多个条件相关**(依赖所有前置条件)2. **仅与上一个条件相关**(马尔可夫性…

边缘计算:开启智能新时代的“秘密武器”

大家好,我是沛哥儿,我们又见面了。今天我们来简单说下什么是边缘计算,它怎么工作的,有哪些优势。有哪些具体的应用场景。 文章目录 1、边缘计算是什么?2、边缘计算如何工作?3、边缘计算有哪些优势&#xff…

# 如何使用 PyQt5 创建一个简单的警报器控制界面

如何使用 PyQt5 创建一个简单的警报器控制界面 引言 在现代自动化和监控系统中,警报器扮演着至关重要的角色。它们可以提醒我们注意潜在的危险或紧急情况。在这篇文章中,我将向您展示如何使用Python的PyQt5库创建一个简单的警报器控制界面。这个界面将…

MySQL报错解决过程

我在调试datagrip的时候,显示拒绝连接,开始的时候,我以为只是服务没有开启,结果到后来在网上搜索各种解决办法无果后,就选择卸载,卸载之后安装新的MySQL 以下就是我的解决过程。 如果只是在使用外置软件&…

【AI入门】CherryStudio入门5:创建知识库,对接Obsidian 笔记

前言 来吧,继续CherryStudio的实践,前边给Cherry Studio添加知识库,对接思源笔记,但美中不足,思源笔记得导出再导入知识库,本文看一下obsidian笔记,笔记内容直接被知识库使用,免去导…

Redis 8.0正式发布,再次开源为哪般?

Redis 8.0 已经于 2025 年 5 月 1 日正式发布,除了一些新功能和性能改进之外,一个非常重要的改变就是新增了开源的 AGPLv3 协议支持,再次回归开源社区。 为什么说再次呢?这个需要从 2024 年 3 月份 Redis 7.4 说起,因为…

【Redis】Redis常用命令

4.Redis常见命令 4.1 Redis数据结构介绍 Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样: 命令太多,不需要死记,学会查询就好了~ Redis为了方便我们学习,将操作不同数据类型…