学习k8s

学习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.rhkb.cn/news/220821.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《点云处理》 点云去噪

前言 通常从传感器&#xff08;3D相机、雷达&#xff09;中获取到的点云存在噪点&#xff08;杂点、离群点、孤岛点等各种叫法&#xff09;。噪点产生的原因有不同&#xff0c;可能是扫描到了不想要扫描的物体&#xff0c;可能是待测工件表面反光形成的&#xff0c;也可能是相…

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

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

IntelliJ IDE 插件开发 | (三)消息通知与事件监听

系列文章 IntelliJ IDE 插件开发 |&#xff08;一&#xff09;快速入门IntelliJ IDE 插件开发 |&#xff08;二&#xff09;UI 界面与数据持久化IntelliJ IDE 插件开发 |&#xff08;三&#xff09;消息通知与事件监听 前言 在前两篇文章中讲解了关于插件开发的基础知识&…

C语言:前缀和

【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 前缀和&#xff1a;将数组小于该前缀的数加起来的新数组。 例&#xff1a; 该数组为1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5。前缀和为1&#xff0c;3&#xff0c;6&#xff0c;10&#xff0c;15 。 如果要求…

1-完全理解以太坊智能合约

了解区块链 区块链技术的核心概念是分布式账本&#xff0c;它是许多参与者共享的特定类型的数据库。 这个特殊的数据库只是一个交易列表&#xff0c;记录着网络中发生的每笔交易。每个人都可以拥有自己的交易列表备份&#xff0c;再加上强有力的货币激励措施消除各方之间信任…

比 style gan 更好的 style gan2

上一篇博客介绍了style gan 原理&#xff0c;但是 style gan 的结果会有水珠伪影&#xff0c;作者实验后发现是 Adain 导致的&#xff0c;AdaIN对每一个feature map的通道进行归一化&#xff0c;这样可能破坏掉feature之间的信息。当然实验证明发现&#xff0c;去除AdaIN的归一…

广州华锐互动VRAR:利用VR开展新能源汽车触电安全演练,降低培训成本和风险

随着新能源汽车行业的快速发展&#xff0c;相关的安全培训也变得越来越重要。其中&#xff0c;触电急救培训对于保障驾驶员和乘客的安全具有重要意义。传统培训方式存在一些不足&#xff0c;而利用VR技术进行培训则具有很多优势。 利用VR技术开展新能源汽车触电安全演练可以在模…

2023 英特尔On技术创新大会直播 | 窥探未来科技的边界

2023 英特尔On技术创新大会直播 | 窥探未来科技的边界 写在最前面观后感其他有趣的专题课程 写在最前面 嘿&#xff0c;你是不是对科技和创新充满好奇&#xff1f;2023 英特尔 On 技术创新大会线上活动邀请你一起探索最前沿的科技世界&#xff01; 这不仅是一场普通的聚会&…

AWS Linux安装桌面并远程访问

文章目录 小结问题及解决参考 小结 在AWS Linux安装了桌面并进行远程访问。 问题及解决 需要使用过程桌面访问AWS Linux&#xff0c;这里在AWS服务器安装并使用Amazon Linux 2 MATE desktop。 检查OS版本&#xff1a; [ec2-userip-10-0-3-241 ~]$ grep PRETTY_NAME /etc/o…

WordCloud—— 词云

【说明】文章内容来自《机器学习入门——基于sklearn》&#xff0c;用于学习记录。若有争议联系删除。 wordcloud 是python的第三方库&#xff0c;称为词云&#xff0c;也成文字云&#xff0c;可以根据文本中的词频以直观和艺术化的形式展示文本中词语的重要性。 依赖于pillow …

Windows本地搭建开源企业管理套件Odoo并实现公网访问

文章目录 前言1. 下载安装Odoo&#xff1a;2. 实现公网访问Odoo本地系统&#xff1a;3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件&#xff0c;是一个一站式全功能ERP及电商平台。 开源性质&#xff1a;Odoo是一个开源的ERP软件&#xff0c;这意味着企…

零刻EQ12 N100 2.5G双网口 All In One新手教程

零刻EQ12 N100 2.5G双网口 All In One新手教程 前言1.硬件配置2.准备工作2.1. ESXI8.0U2镜像2.2. Rufus磁盘工具下载2.3. ikuai镜像下载2.4. StarWindConverter虚拟磁盘格式转换工具下载2.5. OpenWrt镜像下载2.6. 黑群晖RR引导镜像下载(DSM7.2)2.7. 需要准备的硬件2.8. 格式化需…

《每天一分钟学习C语言·二》

1、当使用const关键字变量就无法修改可当常量来用。常量指针不能通过指针来改变变量的值&#xff0c;但可以通过其他引用来改变变量的值常量指针也可以指向其他变量地址&#xff0c;如 int a5,b6; const int *pt &a; *pt6; //错误 a6; //正确 pt&b; //正确指针常量指…

Databend 开源周报第 124 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 新增对 Delta 和…

使用下载代替物理串口输出-STM32 Debug (printf) Viewer

使用下载代替物理串口输出-STM32 Debug 硬件要求配置方法代码要求打印输出结果 硬件要求 STM32的PB9、PB10引脚的串口1通常用作其他功能使用后&#xff0c;无法通过printf()函数打印输出想要调试输出查看变量或调试信息。现已使用另外一种方法实现printf()函数打印输出。 ST…

R语言采集获取58商铺出租转让信息

前两篇文章给我一个朋友分析出店铺商品以及地址房源信息&#xff0c;后来去看了下店铺房租有点贵&#xff0c;还是毛坯房&#xff0c;要自己装修&#xff0c;本着节约成本的原则。熬了个通宵&#xff0c;给他采集了一些转租商铺数据&#xff0c;因为数据比较多&#xff0c;过于…

virtualbox 虚拟机ubuntu22 识别不了CH340串口

首先启用USB设备&#xff0c;CH340识别为QinHengXXXXX USB Serial. 设置以后发现还是无法识别到/dev/ttyUSB0&#xff0c;但是cp2102按照相同的设置能够正确识别到&#xff0c;查看tty系统日志 sudo dmesg | grep tty 发现串口被brltty占用了 将其卸载试试 sudo apt remove …

Pytorch深度强化学习案例:基于Q-Learning的机器人走迷宫

目录 0 专栏介绍1 Q-Learning算法原理2 强化学习基本框架3 机器人走迷宫算法3.1 迷宫环境3.2 状态、动作和奖励3.3 Q-Learning算法实现3.4 完成训练 4 算法分析4.1 Q-Table4.2 奖励曲线 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理&#xff0c;并且采用Pytorch框架对常见…

C# WPF上位机开发(利用tcp/ip网络访问plc)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 c# wpf如果是用来开发非标上位机的&#xff0c;那么和plc的通信肯定是少不了的。而且&#xff0c;大部分plc都支持modbus协议&#xff0c;所以这个…

lv12 linux 内核移植 10

目录 1 内核概述 1.1 内核与操作系统 1.2 Linux层次结构 1.3 Linux内核特点 2 Linux内核源码结构 2.1 Linux内核源码获取 2.2 源码结构 3 Linux内核移植 3.1 在 Linux 官网下载 Linux 内核源码&#xff08;这里我们下载 linux-3.14.tar.xz&#xff09; 3.2 拷贝内核源…