学习k8s

news2024/9/29 7:23:54

学习k8s

我为什么要用k8s 和其他部署方式的区别是什么?

  1. 传统部署方式

    java --> package --> 放到服务器上 --> Tomcat

    在这里插入图片描述

    如果是同时进行写操作,会存在并发问题.

    用户 --网络带宽–> 服务器 -->服务

    同一个服务器上,多个服务:

    网络资源的占用

    内存的占用

    cpu的占用

    资源争抢

    复杂度可以通过脚本来解决.

  2. 虚拟化部署/隔离机制/占用资源过多

    java --> package --xx.jar–> linux服务器(虚机[Tomcat < xx.jar文件 >])

    带来了,资源占用过度问题

    在这里插入图片描述

    虚机的启动是分钟级别

  3. 容器化部署

    在这里插入图片描述

    容器的启动是 秒级别的.

k8s的特点?为什么选择k8s?

  1. 为了解决以上问题,需要什么?

    自我修复

    弹性伸缩

    自动部署和回滚

    服务发现和负载均衡

    机密和配置管理

    存储编排

    批处理

  2. 企业级服务调度平台有哪些?

    • Apache Mesos

    概念: 资源管理器,把所有的资源管理,调度,主从模式,zookeeper给主节点提供服务注册,服务发现功能,通过Framework Marathon 提供容器调度能力.

    优势: 发布时间早,5w+节点控制,大规模节点的管理.

    缺点: 面向节点,而不是容器

    • Docker Swarm

    概念: 标准版的Docker API

    优势: 和Docker是集成的.

    缺点: 已经弃用了.没人用.

    • Google Kubernetes(一家独大)

    概念: 使用Label和Pod的概念来将容器分为逻辑单元.Pods是同步地写作(co-located)容器的集合. 这是kubernetes 和其他两个框架哎的主要区别.简化了管理.

    优势: 通过pods这一抽象的概念,解决了Container之间的依赖于通信问题,Pods,Services, Deployment 是独立部署的部分,可以通过 Selector 提供更多的灵活性,内置服务注册表和负载均衡.

    缺点: 相比于 Apache Mesos 管理节点规模小

学习K8s

集群架构和组件

相关组件
控制面板组件(Master)
  1. kube-apiserver

    接口服务,REST风格,k8s接口服务
    在这里插入图片描述

  2. kube-controller-manager

    控制器管理器: 管理各个类型的控制器,管理k8s的各个资源

  3. cloud-controller-manager

    云控制器管理器: 第三方云平台提供的控制器API对接管理平台

  4. kube-scheduler

    调度器: 负责将pod给予一定算法,将其调用到合适的节点(Node)上

  5. etcd

  6. k8s的数据库,键值对,分布式数据库,基于Raft算法,

    老版本: 基于内存

    新版本: 持久化存储

节点组件(Node)一般是多个Nodes
  1. kubelet

    负责容器的生命周期

    负责Volume(CVI)挂载,存储

    网络(CNI)管理

  2. kube-proxy

    网络代理,负责Service的服务发现,负载均衡(4层负载)

  3. container-runtime

    负责镜像管理已经Pod和容器的真正运行(CRI容器运行环境接口)

    docker,containerd,CRI-O,

附加组件
  1. kube-dns

    kube-dns 负责为整个集群提供 DNS 服务

  2. ingress Controller

    Ingress Controller 为服务提供外网入口

  3. Prometheus

    Prometheus 提供资源监控

  4. Dashboard

    Dashboard 提供 GUI

  5. Federtion

    Federation 提供跨可用区的集群

  6. Fluentd-elasticsearch

    Fluentd-elasticsearch 提供集群日志采集、存储与查询

分层架构
  1. 生态系统

    • Kubernetes 外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS 应用、ChatOps 等
    • Kubernetes 内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等
  2. 接口层

    kubectl 命令行工具、客户端 SDK 以及集群

  3. 管理层

    系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态 Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等)

  4. 应用层

    部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS 解析等)

  5. 核心层

    Kubernetes 最核心的功能,对外提供 API 构建高层的应用,对内提供插件式应用执行环境

核心概念与专业术语
服务的分类
  1. 无状态

    举例: Nginx /Apache

    优点: 对客户端透明,无依赖关系,可以高效实施扩容,迁移

    缺点: 不能储存数据,需要额外的数据服务支撑

  2. 有状态

    举例: Mysql/Redis

    优点: 可以独立存储数据,实现数据管理

    缺点: 集权环境下需要实现主从,数据同步,备份,水平扩容复杂

资源和对象

在这里插入图片描述

元数据型
  1. Horizontal Pod Autoscaler(HPA)

    Pod 自动扩容:可以根据 CPU 使用率或自定义指标(metrics)自动对 Pod 进行扩/缩容。

    • 控制管理器每隔30s(可以通过–horizontal-pod-autoscaler-sync-period修改)查询metrics的资源使用情况
    • 支持三种metrics类型
      • 预定义metrics(比如Pod的CPU)以利用率的方式计算
      • 自定义的Pod metrics,以原始值(raw value)的方式计算
      • 自定义的object metrics
    • 支持两种metrics查询方式:Heapster和自定义的REST API
    • 支持多metrics
  2. PodTemplate

    Pod Template 是关于 Pod 的定义,但是被包含在其他的 Kubernetes 对象中(例如 Deployment、StatefulSet、DaemonSet 等控制器)。控制器通过 Pod Template 信息来创建 Pod。

  3. LimitRange

    可以对集群内 Request 和 Limits 的配置做一个全局的统一的限制,相当于批量设置了某一个范围内(某个命名空间)的 Pod 的资源使用限制。

集群级别
  1. Namespace

    Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群,这些虚拟集群被称为命名空间。

    作用是用于实现多团队/环境的资源隔离。

    命名空间 namespace 是 k8s 集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间。

    默认 namespace:

    • kube-system 主要用于运行系统级资源,存放 k8s 自身的组件
    • kube-public 此命名空间是自动创建的,并且可供所有用户(包括未经过身份验证的用户)读取。此命名空间主要用于集群使用,关联的一些资源在集群中是可见的并且可以公开读取。此命名空间的公共方面知识一个约定,但不是非要这么要求。
    • default 未指定名称空间的资源就是 default,即你在创建pod 时如果没有指定 namespace,则会默认使用 default
  2. Node

    不像其他的资源(如 Pod 和 Namespace),Node 本质上不是Kubernetes 来创建的,Kubernetes 只是管理 Node 上的资源。虽然可以通过 Manifest 创建一个Node对象(如下 json 所示),但 Kubernetes 也只是去检查是否真的是有这么一个 Node,如果检查失败,也不会往上调度 Pod。

  3. ClusterRole

    ClusterRole 是一组权限的集合,但与 Role 不同的是,ClusterRole 可以在包括所有 Namespace 和集群级别的资源或非资源类型进行鉴权。

  4. ClusterRoleBinding

    ClusterRoleBinding:将 Subject 绑定到 ClusterRole,ClusterRoleBinding 将使规则在所有命名空间中生效。

命名空间级别

####### 工作负载型

对象规约和状态
微服务项目k8s环境演示

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

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

相关文章

Vue-图片懒加载

实现图片懒加载可以使用vue-lazyload插件 npm 链接&#xff1a;vue-lazyload - npm (npmjs.com) 使用方法&#xff1a; 1. 安装vue-lazyload npm i vue-lazyload npm i vue-lazyload1.3.3 // 如果是vue2就需要安装1.3.3版本 2. 引入vue-lazyload并使用 可以在使用该插…

设计模式——0前言目录

1 设计模式介绍 应当站在产品经理的角度来学习设计模式 是软件设计中常见问题的典型解决方案&#xff0c;可用于解决代码中反复出现的设计问题 学习效果一般的原因在于自己没有站在产品经理的角度学习&#xff0c;仅仅是为了学习怎么实现&#xff0c;用什么算法实现。 分类&…

STM32 RTC总结

RTC入侵检测Tamper RTC Tamper功能就是&#xff0c;MCU在Tamper管脚检测到一个指定边缘信号&#xff08;可配置&#xff09;时&#xff0c;就主动清除所有备份寄存器数据的功能。如果需要&#xff0c;可以使能Tamper中断&#xff0c;在每次检测到Tamper信号后执行指定代码。 在…

无人机在融合通信系统中的应用

无人驾驶飞机简称“无人机”&#xff0c;是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞行器&#xff0c;现今无人机在航拍、农业、快递运输、测绘、新闻报道多个领域中都有深度的应用。 在通信行业中&#xff0c;无人机广泛应用于交通&#xff0c;救援&#xff0c;消…

Postman使用总结--生成测试报告

1.执行生成的命令格式 newman run 用例集文件 .json -e 环境文件 .json -d 数据文件 .json/.csv -r htmlextra --reporter- htmlextra-export 测试报告名 .html -e 和 -d 是 非必须的。 如果没有使用 环境&#xff0c;不需要指定 -e 如果没有使用 数据…

【设计模式--行为型--备忘录模式】

设计模式--行为型--备忘录模式 备忘录模式定义结构案例实现白箱备忘录模式黑箱备忘录模式 优缺点使用场景 备忘录模式 定义 又叫快照模式&#xff0c;在不破坏封装性的前提下&#xff0c;捕获一个对象的对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;以便…

机器学习三个基本要素:优化算法

在确定了训练集 D、假设空间 ℱ 以及学习准则后&#xff0c;如何找到最优的模型&#x1d453;(x,θ∗) 就成了一个最优化&#xff08;Optimization&#xff09;问题。机器学习的训练过程其实就是最优化问题的求解过程。 参数与超参数 在机器学习中&#xff0c;优化又可以分为参…

kafka offset sasl加密连接

kafka-tool&#xff08;offset&#xff09; 进行SCRAM连接&#xff0c;直接上图 填写jaas的认证&#xff08;账密 引用包&#xff09;

案例077:基于微信小程序的停车场管理系统设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

基于SSM的旅游管理系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对旅游信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&am…

AR眼镜|AR智能眼镜开发|AR眼镜定制_5G联发科MTK解决方案

AR眼镜是一种提供身临其境的增强现实体验的设备&#xff0c;可以通过360度全方位展示产品的外观、结构和细节&#xff0c;让销售人员无需携带产品&#xff0c;用户也无需到店即可演示和体验产品。此外&#xff0c;AR眼镜还可以应用于远程协作&#xff0c;在任何时间和地点实现员…

pycharm手动安装ini插件

pycharm中新增pytest.ini文件时发现&#xff0c;文件的图标不是配置文件的图标 原因是没有安装ini插件 安装插件的方式有很多种&#xff0c;今天通过去官网下载插件&#xff0c;再安装的方式 第一步&#xff1a;去官网搜索&#xff0c;地址是&#xff1a;https://plugins.jet…

Java中的filter和Interceptor

一、filter&#xff08;过滤器&#xff09; 依赖于servlet容器。在实现上基于函数回调&#xff0c;可以对几乎所有请求进行过滤&#xff0c;但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作&#xff0c;获取我们想要获取的数据&am…

MSVC编译 openssl windows 库

开发需要在windows下集成 openssl 库&#xff0c;参考官方指导完成了编译&#xff1a;openssl/NOTES-WINDOWS.md at master openssl/openssl 不过&#xff0c;最后还是走了直接下载的捷径。 1. 安装 ActivePerl 需要在 ActiveState 注册账户&#xff0c;之后彼会提供具体的…

开启创意之旅:免费、开源的噪波贴图(noise texture)生成网站——noisecreater.com详细介绍

在当今数字创意领域&#xff0c;噪波贴图&#xff08;Noise Texture&#xff09;是游戏渲染、游戏开发、美术设计以及影视制作等行业不可或缺的艺术素材之一。为了满足广大创作者的需求&#xff0c;noisecreater.com应运而生&#xff0c;成为一款免费、开源的噪波贴图生成工具。…

RocketMQ系统性学习-RocketMQ原理分析之消费者的接收消息流程

文章目录 消费者的接收消息流程 消费者的接收消息流程 还是先把消费者接收消息的流程图贴出来&#xff0c;再细说代码流程&#xff1a; 首先先从消费者的业务调用出发 // 创建消费者对象 DefaultMQPushConsumer consumer new DefaultMQPushConsumer("delay_group&quo…

使用极狐gitlab初始化导入本地项目

本地有项目的情况需要同步到极狐gitlab上 第一步&#xff1a; 在gitlab上新创建一个空项目 ⚠️⚠️⚠️这里需要注意红色圈住的地方一定不要选择&#xff0c;因为选择了这个后续会有不必要的麻烦 第二步 在本地项目中删除原来的.git文件(这一步如果是新项目可以忽略&#…

c# OpenCV 基本绘画(直线、椭圆、矩形、圆、多边形、文本)(四)

我们将在这里演示如何使用几何形状和文本注释图像。 Cv2.Line() 绘制直线 Cv2.Ellipse() 绘制椭圆Cv2.Rectangle() 绘制矩形Cv2.Circle() 绘制圆Cv2.FillPoly() 绘制多边形Cv2.PutText() 绘制文本 一、绘制直线 Cv2.Line(image, start_point, end_point, color, thickness) …

CleanMyMac X 4 for Mac(Mac优化清理工具)v4.14.6中文破解版

CleanMyMac X for Mac中文破解版只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉&#xff0c;节省宝贵的磁盘空间。cleanmymac x个人认为X代表界面上的最大升级&#xff0c;功能方面有更多增加&#xff0c;与最新macOS系统更加兼容&#xff0c;流畅地与系统性…

云计算:FusionCompute 通过 FreeNAS 添加SAN存储

目录 一、实验 1.环境准备 2.FusionCompute添加CNA 3.在存储中创建LUN资源映射给CNA节点 3.添加存储资源关联CNA主机节点 4.扫描存储资源 5.将存储设备添加为数据存储 二、问题 1.FusionCompute中存储如何分类 2.存储资源与存储设备有何区别 3.FusionCompute支持哪些…