kubernetes(K8S)学习笔记P5:K8s核心概念2

news2024/10/6 10:37:57

kubernetes(K8S)学习笔记P4:K8s核心概念2-Helm、持久化存储技术

  • 5.Helm
    • 5.1Helm 引入
    • 5.2Helm 介绍
    • 5.3Helm v3 变化
    • 5.4安装与仓库配置
      • 5.4.1部署 helm 客户端
      • 5.4.2配置国内 chart 仓库(helm换源)
    • 5.5Helm快速部署
      • 5.5.1基本命令
      • 5.5.2部署
    • 5.6自定义chart
    • 5.7chart 模板使用
  • 6.持久化存储(nfs网络存储)
    • 6.1安装部署nfs
  • 7.持久化存储技术(PV、PVC)
    • 7.1基本概念
    • 7.2使用
      • 7.2.1创建PVC
      • 7.2.2创建PV

5.Helm

5.1Helm 引入

请添加图片描述
K8S 上的应用对象, 都是由特定的资源描述组成, 包括 deployment、service 等。 都保存各自文件中或者集中写到一个配置文件。 然后 kubectl apply – f 部署。 如果应用只由一个或几个这样的服务组成, 上面部署方式足够了。
对于一个复杂的应用, 会有很多类似上面的资源描述文件, 例如微服务架构应用, 组成应用的服务可能多达十个, 几十个如果有更新或回滚应用的需求, 可能要修改和维护所涉及的大量资源文件, 而这种组织和管理应用的方式就显得力不从心了。 且由于缺少对发布过的应用版本管理和控制, 使Kubernetes 上的应用维护和更新等面临诸多的挑战, 主要面临以下问题:

  • 如何将这些服务作为一个整体管理
  • 这些资源文件如何高效复用
  • 不支持应用级别的版本管理

5.2Helm 介绍

Helm 是一个 Kubernetes 的包管理工具, 就像 Linux 下的包管理器, 如 yum/apt 等, 可以很方便的将之前打包好的 yaml 文件部署到 kubernetes 上
Helm 有 3 个重要概念
1. helm: 一个命令行客户端工具, 主要用于 Kubernetes 应用 chart 的创建、 打包、 发布和管理。
2. Chart: 应用描述, 一系列用于描述 k8s 资源相关文件的集合(yaml集合)
3. Release: 基于 Chart 的部署实体, 一个 chart 被 Helm 运行后将会生成对应的一个release; 将在 k8s 中创建出真实运行的资源对象。

5.3Helm v3 变化

在这里插入图片描述
2019 年 11 月 13 日, Helm 团队发布 Helm v3 的第一个稳定版本。
该版本主要变化如下:
架构变化:
1、 最明显的变化是 Tiller 的删除
2、 Release 名称可以在不同命名空间重用
3、 支持将 Chart 推送至 Docker 镜像仓库中
4、 使用== JSONSchema 验证 chart values==
5、 其他

5.4安装与仓库配置

5.4.1部署 helm 客户端

参考文档:https://helm.sh/zh/docs/intro/quickstart/
Helm 客户端下载地址: https://github.com/helm/helm/releases
解压移动到/usr/bin/目录即可。

wget https://get.helm.sh/helm-vv3.2.1-linux-amd64.tar.gz
tar zxvf helm-v3.2.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/

5.4.2配置国内 chart 仓库(helm换源)

  • 微软仓库(http://mirror.azure.cn/kubernetes/charts/) 这个仓库推荐, 基本
    上官网有的 chart 这里都有。
  • 阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    官方仓库(https://hub.kubeapps.com/charts/incubator) 官方 chart 仓库, 国内有点不好使。

添加存储库

helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update

查看配置的存储库

helm repo list
helm search repo stable

删除存储库:

helm repo remove aliyun

5.5Helm快速部署

请添加图片描述

5.5.1基本命令

  1. helm search’:查找 Charts
    Helm 自带一个强大的搜索命令,可以用来从两种来源中进行搜索:

    • helm search hub 从 Artifact Hub 中查找并列出 helm charts。 Artifact Hub中存放了大量不同的仓库。
    • helm search repo 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。
  2. helm install’:安装一个 helm 包
    使用 helm install 命令来安装一个新的 helm 包。最简单的使用方法只需要传入两个参数:你命名的release名字和你想安装的chart的名称

  3. helm status 来追踪 release 的状态,或是重新读取配置信息:

主要介绍三个命令:

  • chart install
  • chart upgrade
  • chart rollback

5.5.2部署

  1. 搜索chart

    helm search repo weave
    
  2. 安装

    helm install ui stable/weave-scope
    
  3. 查看发布状态

    helm list
    helm status ui
    

5.6自定义chart

请添加图片描述

  1. 创建chart

    helm create mychart
    
  2. 进入templates 文件目录下创建自己编写的yaml文件

    kubectl create deployment web1 --image=nginx --dry-run -o yaml > deployment.yaml
    
    kubectl create deployment web1 --image=nginx
    
    kubectl expose deployment web1 --port=80 --target-port=80 --type=NodePort --dry-run -o yaml >service.yaml
    
  3. 安装mychart

    helm install web1 mychart/
    
  4. 应用升级

    helm upgrade web1 mychart/
    

5.7chart 模板使用

请添加图片描述

Helm 最核心的就是模板, 即模板化的 K8S manifests 文件
它本质上就是一个 Go 的 template 模板。 Helm 在 Go template 模板的基础上, 还会增加很多东西。 如一些自定义的元数据信息、 扩展的库以及一些类似于编程形式的工作流, 例如条件语句、 管道等等。 这些东西都会使得我们的模板变得更加丰富。
有了模板, 我们怎么把我们的配置融入进去呢?
用的就是这个 values .yaml文件。 这两部分内容其实就是 chart 的核心功能。

6.持久化存储(nfs网络存储)

请添加图片描述

6.1安装部署nfs

  1. 再服务器上安装nfts

    yum install -y nfs-utils
    
  2. 设置挂载目录

    vi /etc/expose
    
  3. 挂载路径需要创建出来

  4. k8s集群node节点安装nfs

    yum install -y nfs-utils
    
  5. 在nfs服务器启动nfs服务

    systemctl start nfs
    
    ps -ef | grep nfs
    
  6. 在k8s中部署应用,使用nfs持久网络
    创建 nfs-nginx.yaml,并执行

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-dep1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
            - name: wwwroot
              mountPath: /usr/share/nginx/html
            ports:
            - containerPort: 80
          volumes:
            - name: wwwroot
              nfs:
                server: 192.168.44.134 # 服务地址
                path: /data/nfs # 挂载目录
    

7.持久化存储技术(PV、PVC)

请添加图片描述

7.1基本概念

管理存储是管理计算的一个明显问题。 该 PersistentVolume 子系统为用户和管理员提供了一个 API用于抽象如何根据消费方式提供存储的详细信息。 为此, 我们引入了两个新的API 资源: PersistentVolumePersistentVolumeClaim

PersistentVolume( PV) 是集群中由管理员配置的一段网络存储。 它是集群中的资源, 就像节点是集群资源一样。 PV 是容量插件, 如Volumes, 但其生命周期独立于使用 PV 的任何单个 pod。 此 API 对象捕获存储实现的详细信息, 包括 NFS, iSCSI 或特定于云提供程序的存储系统。
PersistentVolumeClaim( PVC) 是由用户进行存储的请求。 它类似于 pod。 Pod 消耗节点资源, PVC 消耗 PV 资源。 Pod 可以请求特定级别的资源( CPU 和内存) 。 声明可以请求特定的大小和访问模式( 例如, 可以一次读/写或多次只读) 。虽然 PersistentVolumeClaims 允许用户使用抽象存储资源, 但是 PersistentVolumes 对于不同的问题, 用户通常需要具有不同属性( 例如性能) 。 群集管理员需要能够提供各种PersistentVolumes 不同的方式, 而不仅仅是大小和访问模式, 而不会让用户了解这些卷的实现方式。 对于这些需求, 有 StorageClass 资源。
StorageClass 为管理员提供了一种描述他们提供的存储的“ 类” 的方法。 不同的类可能映射到服务质量级别, 或备份策略, 或者由群集管理员确定的任意策略。 Kubernetes 本身对于什么类别代表是不言而喻的。 这个概念有时在其他存储系统中称为“ 配置文件” 。

PVC 和 PV 是一一对应的。

7.2使用

7.2.1创建PVC

创建一个yaml文件,pvc.yaml,并执行

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-dep1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: wwwroot
          mountPath: /usr/share/nginx/html
        ports:
        - containerPort: 80
      volumes:
      - name: wwwroot
        persistentVolumeClaim:
          claimName: my-pvc

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
kubectl apply -f pvc.yaml

7.2.2创建PV

创建,pv.yaml,并执行

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  nfs:
    path: /data/nfs
    server: 192.168.44.134
kubectl apply -f pvc.yaml

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

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

相关文章

前端面试题记录——vue

目录 前言 一、说一下虚拟DOM? 1.虚拟dom是什么? 2.虚拟dom是怎么产生的? 3.虚拟dom的优点 二、说一下vue-router?有几种模式? 1.vue-router是什么? 2.vue-router有几种模式?区别是什么&#xff1…

Secure Boot什么意思?BIOS中Secure Boot灰色无法更改解决方法详解

在电脑Bios设置中,有一项“Secure Boot”相关设置,很多小伙伴们不知道Secure Boot什么意思,也不知道如何设置。另外,有时候这个Secure Boot是灰色的无法更改,这又要如何解决呢?下面本文就来谈谈Secure Boot…

mybatis-plus使用generator快速生成代码,并手动添加数据库命令

mybatis-plus是mybatis的增强版,可以根据数据库自动生成代码,实现常用的增删改查功能,也可以按照mybatis的配置方式添加数据库命令。 参考地址: generator: 文档 http://baomidou.com/ 代码生成器配置新 | MyBatis-Plus 1、在p…

通过SASRec算法进行基于Transformer的商品推荐

案例简介 (1)方法概述: 本教程包含如下内容: 从原始的数据文件中加载数据,进行训练集和测试集的切分,并对测试集进行负采样。 对数据分batch, 利用用户历史点击记录进行模型训练 结果展示 (2)宏观流程图 2.准备工作 (1) 对应库的安装(以下是运行环境) tqdm==4.51.0 nump…

Java#25(常见算法: 查找算法)

目录 一.基本查找/顺序查找 从0索引开始挨个往后找 二.折半查找/二分查找 条件: 数组中的数据必须是有序的 核心逻辑: 每次排查一半的查找范围 优势: 提高查找效率 三.分块查找 分块查找的原则1: 前一块中的最大数据,小于后一块中所有的数据(块内无序,块间有序) 分块查…

1000套web前端期末大作业 HTML+CSS+JavaScript网页设计实例 企业网站制作【建议收藏】

一、1000套HTML期末学生结课大作业作品(HTMLCSSJS) 这8年来做了1000多套(HTMLCSSJS)网页设计的学生期末大作业,都是给学生定制的都符合学校或者学生考试期末作业的水平,都是divcss框架原创代码写的,有的有js,有的视频音乐flash的…

谷粒学苑_第十天

第十天 视频删除 后端 相关sdk在阿里云视频点播文档的服务端SDK–>Java SDK–>媒资管理–>删除视频 复制前面的InitObject到utils里 删除的方法 DeleteMapping("{id}")public R removeAliyunVideo(PathVariable String id){try{DefaultAcsClient defau…

parallelStream/ForkJoinPool 详解

parallelStream parallelStream是一种并行流, 意为处理任务时并行处理。 parallelStream底层使用的是ForkJoinPool。ForkJoinPool是一种工作窃取算法线程池,和分治法的概念一致,可以充分利用多 CPU 的优势,把一个任务拆分成多个"小任务…

云计算盛宴即将揭幕,re:Invent创新方向提前剧透

作为数字时代广大企业不可或缺的IT基础设施,云计算已经当仁不让地成为了数字经济的技术底座,同时也成为了当前全球备受关注和最热门的产业之一。作为云计算技术的开创者和领导者,亚马逊云科技自从2006年推出全球首个云计算服务以来&#xff0…

OpenCV图像特征提取学习三,LBP图像特征检测算法

一、LBP特征的概述 LBP指局部二值模式,英文全称:Local Binary Pattern,是一种用来描述图像局部特征的,LBP特征具有灰度不变性和旋转不变性等显著优点。同时是一种描述图像特征像素点与各个像素点之间的灰度关系的局部特征的非参数…

NestJS学习:控制器

参考 控制器 控制器负责处理传入的请求和向客户端返回响应。 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。 控制器 上一篇文章已经介绍了路由的创建&#xff0c…

Redis缓存何以一枝独秀?以及热门面试题中Redis的核心特性

​Redis的各种数据类型 作为缓存组件,Redis的数据结构整体而言就是key-value类型的键值对,但是Redis对于value类型的支持还是比较丰富的,提供了5种不同的数据结构,可以满足大部分场景的使用诉求。 ​对几种类型的结构特点与使用注…

3天3定制大屏,反向PUA

摘要 本次分享一段无讨价还价余地的单人3天定制化大屏全过程(强调说拖拽屏的请绕道,和你想的不一样),要动效、要地图、要流光。天坑的心理博弈到最终解决的过程及技术思路。 前因 没啥征兆突然接到说,要在下周完成2个大屏的定制开发,起初没提…

C51 - 定时器

Contents1> 概述(STC89C51RC/RD)2> 作用: CPU的 "闹钟"3> 工作原理 (16位计数器)[TL0 TH0]: 数据寄存器TF: 定时器<溢出>标志位4> 程序设计1> 概述(STC89C51RC/RD) STC89C51RC/RD 定时器数量: 3个; T0模式:工作模式 模式0: 13位计数器; 模式1: …

理解循环神经网络

理解循环神经网络 之前有一篇文章已经初步介绍过RNN的原理(https://forchenxi.github.io/2021/04/23/nlp-rnn/)&#xff0c;里面其实已经介绍的比较清晰易懂了&#xff0c;这篇文章再来回顾和拓展一下. 首先要知道RNN是一个带有内部环的神经网络&#xff0c;上面的这篇文章中…

港科夜闻|香港科大(广州)校长倪明选教授出席江门双碳实验室第一届理事会一次会议...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大(广州)校长倪明选教授出席江门双碳实验室第一届理事会一次会议。11月21日下午&#xff0c;江门双碳实验室召开第一届理事会一次会议&#xff0c;审议通过有关文件&#xff0c;完善实验室组织架构&#xff0c;谋划下…

Python之条件语句逻辑运算符

目录 一、逻辑运算符 1.基本运算符 2.比较运算符 3.赋值运算符 二、 if条件语句 三、循环语句 一、逻辑运算符 1.基本运算符 2.比较运算符 3.赋值运算符 # 条件语句逻辑运算符 print((5 / 2)) print((5 // 2)) print((3 ** 2)) #3的2次方# 递增 # a1 # a1 # print(a) # a,b…

主流的深度学习推理架构有哪些(NCNNN)

AI 技术在具体落地应用方面&#xff0c;和其他软件技术一样&#xff0c;也需要具体的部署和实施。部署对于不同的平台设备上的部署方法和不同的架构工具。目前在人工智能的落地部署方面&#xff0c;各大平台机构都退出了自家的部署平台。 目前市场上应用最广泛的部署工具主要有…

用DIV+CSS技术设计的网上书城网页与实现制作(大一Web课程设计)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Java项目:JSP中华传统美食网站平台管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 作者主页&#xff1a;夜未央5788 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前台与后台&…