K8s 概念及组件

K8s 的全称为Kubernetes,是一种开源的容器编排平台,用于自动化部署以及扩展和管理容器化的应用程序,它提供了一种容器编排和管理的方式,可以帮助开发人员更轻松的管理容器化的应用程序,并且提供了一种跨多个主机的自动化部署和管理机制

作用:

        用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。
可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。

​官网:https://kubernetes.iogithub:https://github.com/kubernetes/kubernets​

为什么要用K8s

        传统的后端部署办法:把程序包(包括可执行二进制文件、配置文件等)放到服务器上,接着运行启动脚本把程序跑起来,同时启动守护脚本定期检查程序运行状态、必要的话重新拉起程序。
        如果服务的请求量上来,已部署的服务响应不过来怎么办?传统的做法往往是,如果请求量、内存、CPU超过阈值做了告警,运维人员马上再加几台服务器,部署好服务之后,接入负载均衡来分担已有服务的压力

        这样问题就出现了:从监控告警到部署服务,中间需要人力介入!那么,有没有办法自动完成服务的部署、更新、卸载和扩容、缩容呢?
        而这就是 K8S 要做的事情:自动化运维管理容器化(Docker)程序。

K8s 的目标是让部署容器化应用简单高效。

K8s 解决了裸跑Docker 的若干痛点:
  1. 单机使用,无法有效集群

  2. 随着容器数量的上升,管理成本梦升

  3. 没有有效的容灾、白愈机制

  4. 没有预设编排模板,无法实现快速、大规模容器调度

  5. 没有统一的配置管理中心工具

  6. 没有容器生命周期的管理工具

  7. 没有图形化运维管理工具

 

K8s特性

  • 弹性伸缩

保证应用业务高峰并发时的高可用性,业务低峰时回收资源,最小成本运行服务

  • 自我修复

节点故障时重新启动失败的容器,替换和重新部署,杀死健康检查失败的容器,未准备好之前不会处理客户端请求,保证线上服务不中断

  • 服务发现和负载均衡

k8s为多个容器提供一个统一访问入口【内部IP地址和一个DNS名称】,负载均衡关联所有的容器,使得用户无需考虑容器ip问题

  • 自动发布(默认滚动发布模式)和回滚

一次更新一个或部分 pod ,如果更新过程中出现问题,将回滚更改,确保升级不影响业务

  • 集中化配置管理和密钥管理

管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,包括用户密码、私钥、公钥

  • 存储编排,支持外挂存储并对外挂存储资源进行编排

挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储(如 NFS、Glusterfs、Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性

  • 任务批量处理运行

提供一次性任务,定时任务,满足批量数据处理和分析的场景

 

K8s集群架构和组件

K8s是属于主从设备模型【Master 和 Slave 架构】

  • Master节点负责集群的调度、管理和运维,

  • slave节点是集群中的运算工作负载节点。在K8s 中,主节点一般被称为Master节点,而从节点则被称为worker Node节点,每个Node 都会被Master分配一些工作负载

Master 组件

  • kube-apiserver  

所有访问的统一入口,资源请求或调用操作都是通过kube-apiserver提供的接口进行,所有对象资源的增删改查和监听操作都交给API Server处理后再提交给Etcd 存储。

  • kube-controller-manager(控制器)

  负责根据预设模板创建pod,维持pod等资源副本期望数目【创建删除维护pod】

  • kube-scheduler(调度器)

   负责调度 pod 通过预选、优选策略,选择合适的 node节点分配 pod    【调度算法:62种】

  • etcd:配置存储中心

     分布式键值对数据库,负责存储 k8s 集群的重要信息(持久化)
     go语言开发的 使用raft 一致性的算法  集群需要三台或以上奇数台组成
     【端口】
     2379:对外为客户端提供通讯
     2380:服务器之间内部通讯

Node组件

  • kubelet:

  在K8s集群中,在每个Node (又称 Worker Node)上都会启动一个kubelet 服务进程。每个kubelet进程都会在 API server 中注册信息,定期向 master 汇报节点资源的使用情况

  • kube-proxy: 

  在node 节点上实现 pod 的网络代理,维护网络规则和四层负载均衡器工作,负责写入规则到 iptables 或 ipvs 实现服务映射访问

  • docker 或 rocket:

  容器引擎,运行容器,负责本机的容器创建和管理工作

 

Pod

Pod是 Kubernetes 创建或部署的最小/最简单的基本单位,一个 Pod 代表集群上正在运行的一个进程。
可以把 Pod 理解成豌豆荚,而同一 Pod 内的每个容器是一颗颗豌豆。

一个 Pod 由一个或多个容器组成,Pod 中容器共享网络、存储和计算资源,在同一台 Docker 主机上运行。
一个 Pod 里可以运行多个容器,又叫边车模式(SideCar)。而在生产环境中一般都是单个容器或者具有强关联互补的多个容器组成一个 Pod。

同一个 Pod 之间的容器可以通过 localhost 互相访问,并且可以挂载 Pod 内所有的数据卷;但是不同的 Pod 之间的容器不能用 localhost 访问,也不能挂载其他 Pod 的数据卷。

Pod 控制器

Pod 启动的一种模版,用来保证在K8S里启动的 Pod 应始终按照用户的预期运行(副本数、生命周期、健康状态检查等)。

K8S 内提供了众多的 Pod 控制器,常用的有以下几种:

  • Deployment:无状态应用部署
  • Statefulset:有状态应用部署
  • ReplicaSet:确保预期的 Pod 副本数量,用于管理和控制Pod,受控于 Deployment
  • DaemonSet:确保所有节点运行同一类 Pod,保证每个节点上都有一个此类 pod 运行 
  • Job:一次性任务
  • Cronjob:周期性计划性任务

控制器有五大类:

标签选择器:
  • 标签选择器可以用来选择一组具有相同的标签的 Pod,service,RC,deployment 和 RS,使用标签选择器可以轻松的管理部署应用程序和其他资源

service:
  • service 是通过标签选择器关联具有对应 Label(标签)的Pod,再把相关 Pod的 IP 加入到自己的 endpoints 当中,service再根据 endpoints 里的IP 进行转发

ingress:
  • ingress是一种 API对象,用于管理 K8s集群中入口流量,它为我们提供了一种统一的方式来管理不同服务方式的路由规则和负载均衡

name:
  • 通常是指资源对象的名称

namespace:
  • K8s中的 namespace 是一种虚拟化的技术,它将一个物理的 K8s 集群划分成多个虚拟集群,每个虚拟机群都有自己的资源和对象,不同的虚拟机群之间相互隔离

CFSSL用来为etcd提供TLS 证书,它支持签三种类型的证书:

  1. client.证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如l kube-apiserver访问 etcd; 

  2. server 证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如 etcd对外提供服务;

  3. peer 证书,相互之间连接时使用的证书,如 etcd节点之间进行验证和通信。

          这里全部都使用同一套证书认证。

cfssl:证书签发的工具命令
cfssljson:将cfssl生成的证书(json格式)变为文件承载式证书
cfssl-certinfo:验证证书的信息
cfssl-certinfo -cert <证书名称>     #查看证书的信息

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

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

相关文章

【ELK 使用指南 3】Zookeeper、Kafka集群与Filebeat+Kafka+ELK架构(附部署实例)

EFLKK 一、Zookeeper1.1 简介1.2 zookeeper的作用1.3 Zookeeper的特点1.5 Zookeeper的数据结构1.6 Zookeeper的应用场景1.7 Zookeeper的选举机制&#xff08;重要&#xff09;1.7.1 第一次启动时1.7.2 非第一次启动时 二、Zookeeper集群部署2.1 安装前准备2.2 安装 ZookeeperSt…

用echarts在vue2中实现3d饼图

先看效果&#xff0c;再看文章&#xff1a; 一、安装插件 3d的图不仅用到echarts&#xff0c;还用到了echarts-gl&#xff0c;因此都需要安装一下哦~ npm install echarts npm install echarts-gl2.0.9 //可以指定版本&#xff0c;也可不指定二、在main.js中引入 import * …

Spring创建复杂对象

目录 一、什么是复杂对象 二、创建复杂对象的3种方式 2.1 实现FactoryBean接口 2.1.1 普通的创建方式 2.1.1 依赖注入的方式 2.1.3 FactoryBean的工作原理 2.2 实例工厂 2.3 静态工厂 一、什么是复杂对象 书接上回&#xff0c;我们已经分析了Spring是怎么去创建对象的了。那什…

springweb+vue前后端分离开发,集成部署

背景&#xff1a; 在自己做测试的时候&#xff0c;由于需要项目和项目的前端页面使用同样接口访问&#xff0c;所以需要将前端代码部署到后端项目下。前端采用vue&#xff0c;后端采用springboot。 首先时建立一个vue项目&#xff0c;这个可以参照网上的案例&#xff0c;创建方…

AI绘画使用Stable Diffusion(SDXL)绘制中国古代神兽

一、引言 说到神奇异兽&#xff0c;脑海中首先就会跳出我国古代神话传说中的各种神兽。比如青龙、白虎、朱雀、玄武&#xff0c;再比如麒麟、凤凰、毕方、饕餮等等&#xff0c;这些都是大家耳熟能详的的神兽。 这些神兽不仅体现了人们丰富的创造力和想象力&#xff0c;更是我…

一次说全COLA应用架构

一&#xff0c;为什么需要好的应用架构 上图比较清晰地说明了好的应用架构的作用——去繁为简&#xff0c;化无序为有序。 二&#xff0c;关于COLA的几种定义 1&#xff0c;原版 GitHub - alibaba/COLA: &#x1f964; COLA: Clean Object-oriented & Layered Architec…

【大数据】Kafka 数据存储

Kafka 数据存储 1.文件目录2.日志分段3.日志索引3.1 偏移量索引3.2 时间戳索引 4.日志清理4.1 日志删除4.1.1 基于时间4.1.2 基于日志大小4.1.3 基于日志起始偏移量 4.2 日志压缩 1.文件目录 Kafka 中的消息是存储在磁盘上的&#xff0c;一个分区副本对应一个 日志&#xff08…

异常数据检测 | Python基于Hampel的离群点检测

文章目录 文章概述模型描述源码分享文章概述 在时间序列数据分析领域,识别和处理异常点是至关重要的任务。异常点或离群点是明显偏离预期模式的数据点,可能表明存在错误、欺诈或有价值的见解。 应对这一挑战的一种有效技术是汉普尔过滤器(Hampel Filter)。 模型描述 汉…

OpenCV实现物体尺寸的测量

一 &#xff0c;项目分析 物体尺寸测量的思路是找一个确定尺寸的物体作为参照物&#xff0c;根据已知的计算未知物体尺寸。 如下图所示&#xff0c;绿色的板子尺寸为220*300&#xff08;单位&#xff1a;毫米&#xff09;&#xff0c;通过程序计算白色纸片的长度。 主要是通过…

2023区块链国赛有黑幕

2023全国职业院校技能大赛区块链技术应用赛项 有黑幕&#xff01;&#xff01;河北软件职业技术学院举行的全国职业院校技能大赛区块链技术应用赛项违反比赛公平原则&#xff1a; 1、在评分阶段居然允许企业人员进入裁判所在区域&#xff0c;偏向性的引导裁判评分&#xff0c…

小程序实现后台数据交互及WXS的使用

一&#xff0c;数据交互准备工作 1.1 后端准备 后端部分代码&#xff0c;可自行创建后端代码 package com.zking.minoa.wxcontroller;import com.zking.minoa.mapper.InfoMapper; import com.zking.minoa.model.Info; import com.zking.minoa.util.ResponseUtil; import org…

从入门到进阶 之 ElasticSearch 配置优化篇

&#x1f339; 以上分享从入门到进阶 之 ElasticSearch 配置优化篇&#xff0c;如有问题请指教写。&#x1f339;&#x1f339; 如你对技术也感兴趣&#xff0c;欢迎交流。&#x1f339;&#x1f339;&#x1f339; 如有需要&#xff0c;请&#x1f44d;点赞&#x1f496;收藏…

ant design vue Message 用法以及内容为 html片段情况

ant design vue 的 Message 用法 全局展示操作反馈信息 何时使用 # 可提供成功、警告和错误等反馈信息。顶部居中显示并自动消失&#xff0c;是一种不打断用户操作的轻量级提示方式。 全局配置&#xff1a; // main.ts// 进行全局配置 message.config({top: 0.7rem,//高度…

nvm管理不同版本nodejs

文章目录 nvm下载卸载本地node安装nvm安装nodejsnvm查看已安装版本nvm切换nodejs版本nvm删除nodejs版本 nvm下载 nvm github下载链接 nvm 1.1.7-setup.zip&#xff1a;安装版&#xff0c;推荐使用 卸载本地node 打开cmd where node 找到上面找到的路径&#xff0c;将node.…

【广州华锐互动】利用AR进行野外地质调查学习,培养学生实践能力

在科技发展的驱动下&#xff0c;AR&#xff08;增强现实&#xff09;技术已经在许多领域中找到了应用&#xff0c;包括医疗、教育、建筑和娱乐等。然而&#xff0c;有一个领域尚未充分利用AR技术的潜力&#xff0c;那就是野外地质调查。通过将AR技术引入到这个传统上需要大量人…

基于nodejs+vue中学信息技术线上学习系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

如何使用visual studio 2010构建SQLite3.lib文件

sqlite3官网只提供了dll&#xff0c;并没有lib文件。需要自己生成sqlite3.lib。因项目升级到x64&#xff0c;以前并没有生成64位的链接库&#xff0c;需要自己创建。本人电脑操作系统windows 10, 开发环境为visual studio 2010。下面是详细生成过程。 1. 从源下载源&#xff08…

低代码助力软件开发

低代码开发工具正在日益变得强大&#xff0c;它正不断弥合着前后端开发之间的差距。对于后端来说&#xff0c;基于低代码平台开发应用时&#xff0c;完全不用担心前端的打包、部署等问题&#xff0c;也不用学习各种框架&#xff08;Vue、React、Angular等等&#xff09;&#x…

深入探究音视频开源库 WebRTC 中 NetEQ 音频抗网络延时与抗丢包的实现机制

目录 1、引言 2、什么是NetEQ&#xff1f; 3、NetEQ技术详解 3.1、NetEQ概述 3.2、抖动消除技术 3.3、丢包补偿技术 3.4、NetEQ概要设计 3.5、NetEQ的命令机制 3.6、NetEQ的播放机制 3.7、MCU的控制机制 3.8、DSP的算法处理 3.9、DSP算法的模拟测试 4、NetEQ源文件…

PHP 基础/练习

练习 成绩定级 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>成绩定级脚本</title> </…