K8S理论

kubernetes:8个字母省略,就是k8s

自动部署自动扩展和管理容器化部署的应用程序的一个开源系统

k8s是负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具

分布式和集群化的方式进行容器化管理

版本有1.15 .1.18 .1.20

一般就是用1.20

k8s是google的borg系统作为原型,后期经go语言编写的开源软件

已经有docker微服务,可以满足微服务的使用,为什么还要使用k8s呢,

1、传统的部署方式:一般意义的二进制部署,安装-运行-运行-维护,需要专业的人员,如果除了故障还

2、容器化部署,我们可以用dockerfile编写好自定义的容器,只要运行随时都可以run起来,随时基于镜像都可以运行,数量少,还能管的过来,数量一旦太多,管理起来太复杂,docker一般是单机运行,没有高可用。

k8s的作用:简单,而且是高效的部署容器化应用

1、解决了docker的单机部署和无法集群化的特点

2、解决了随着容器数量的增加,对应增加的管理成本

3、容器的高可用,提供了一种容器自愈机制

4、解决了容器没有预设模板,以及无法快速,大规模部署,已经大规模的容器调度

5、k8s提供了集中化配置管理的中心

6、解决了容器的生命周期的管理工具

7、提供了图形化工具,可以用图形化工具进行管理

需要从新人工拉起来,而且业务量增大,只能水平的拓展,再部署一个

k8s的特性

1、弹性伸缩:可以基于命令,或者图形化界面,以及cpu的使用情况自动的扩容和缩容,自动的对部署的程序进行扩容和缩容,以最小的成本运行服务

2、自我修复:出现节点故障,可以自动重新启动失败的容器,替换和重新部署

3、服务发现和负载均衡:k8s为多个容器提供一个统一的访问入口(内部地址和一个内部dns名称),自动负载均衡关联的所有容器。

4、自动发布和回滚:k8s采用滚动的策略更新应用。

nginx-1 先更新1,最新的版本,如果更新过程中有问题,可以根据回滚点进行回滚

nginx-2 更新2,如果1访问有问题,会自动回滚到上一个版本

nginx-3

5、集群化配置管理和密钥管理

k8s集群内的各个组件都是进行密钥对验证的。但是k8s的安全性不够,核心的业务不建议部署,建议部署些自定义应用,像mysql和nginx最好不要部署在k8s

6、存储编排

1、可以自动化的把容器部署在节点上

2、也可以通过命令行或者yml文件(自定义pod(容器))实现指定节点部署

3、也可以通过网路存储 NFS gfs

7、任务进行批次处理,提供一个性任务,也可以提供定时任务,满足存储需要批量处理和分析的场景

k8s的核心组件

1、kube-apiserver:k8s集群之中每个组件都是要靠密钥对进行验证,组件之间的通信apiserver来进行解决,API是应用接口服务,k8s的所有请求和调配也能够操作都是kube-apiserver来进行完成。所有对象资源增删改查和资源之间监听的操作都是kube-apiserver处理完之后交给etcd来进行存储

2、api-server是k8s所有请求的入口服务,api-server接收k8s的所有请求(命令行和图形化界面),然后根据用户的具体请求,通知对应的组件展示或者运行命令

APiserver相当于整个集群的大脑来调度整个集群的资源

3、kube-controller-manager:运行管理控制器,是k8s集群中处理的

常规任务的后台线程,是集群中所有资源的对象的自动化控制中心,一个资源对应一个控制器,controller-manager负责来管理这些控制器

(1)node controller(节点控制器):负责节点的发现以及节点的故障的发现和响应

(2)relication controller(副本控制器):控制关联pod的副本数,可以随时扩缩容

(3)Endpoints controller(端点控制器),监听services和对应pod的副本变化,理解为端点就是服务暴露出的访问点,要访问这个服务必须要知道他的Endpoints,通信的方式就是内部每个服务的ip地址+端口

4、service account和roken controllers(服务账户和令牌控制),为命名空间创建默认的账户和API访问令牌,每个命名空间都是资源隔离

kube-system

namespace:访问不同的命名空间

5、resourcequota controller(资源控制器):可以对命名空间的资源使用进行控制,也可以对pod的资源进行控制

6、namespace controller(命名空间控制器):管理命名空间的生命周期

7、service controller(服务节点控制器):k8s集群和外部的主机之间的接口控制器

3、kube-scheduler(资源调度组件):核心作用就是根据调度算法为新创建的pod选择一个合适的node节点。可以理解为k8s的所有node节点的调度器,部署和调度node

有预先策略:人工定制,指定的node节点上部署

和优先策略:会有限制条件,根据调度算法选择要给合适的node,根据一些限制条件如资源情况、node资源控制的情况,选一个资源最富裕,资源最小的node来部署

4、ETCD:是k8s的存储服务,是一个分布式的键值存储系统(key:value),存储k8s的关键配置和用户配置,其他组件如何来调用,先通过APIserver调用etcd当中的存储信息,然后在实施,在整个集群当中,能对etcd存储进行读写权限的,只有API-server。

node组件

1、kubelet:node节点的监视器,以及master节点的通讯器,也可以理解为master安插在node节点的监控

kubelet会定时向API server 汇报自己的node上的运行服务的状态,API server会把节点状态保存在etcd存储当中

可以接收来自master节点的调度命令。

如果发现自己的状态和master节点的状态不一致,调用docker的接口,同步数据。

对节点上容器的生命周期进行管理,保证节点上的镜像不会占满磁盘空间,退出的容器的资源进行回收

2、kube-proxy:这个是实现每个node节点上的pod网络代理。负责节点上的网络规划和四层负载均衡工作,还可以负责写入iptables(快淘汰) ipvs实现服务映射

kube-proxy:本身是不直接给pod提供网络代理,proxy只是service资源的载体,

kube-proxy:实际上代理pod集群网络(虚拟网络)

k8s:每个node节点上都有一个kube-proxy组件

3、docker容器:容器引擎,运行容器,负责本机的容器创建和管理

k8s要创建pod时,会通过kube-scheduler调度到节点上(node节点上)节点上的kubelet只是docker启动特定的容器。

kubelet把容器的信息收集,发送给主节点,只需要在主节点发布指令,节点上的kubelet就会指示docker拉取镜像,启动或者停止容器

4、pod:pod不是容器,是运行在节点上的,他是k8s当中创建或者部署的最小/最简单的基本单位,一个pod只代表集群上正在运行的一个进程

一个Pod由一个或多个容器组成,pod中容器可以共享网络,存储和计算,可以部署在不同的docker主机上

一个pod可以运行多个容器也可以是一个容器,在生产环境中,一般都是单个容器或者具有关联关系的多个容器组成一个pod

由kubelet控制运行在不同节点上的容器,kubelet把主节点的命令转发给docker

httpd-dn-6b9db7cc7-jfx62就是每个节点上的pod

httpd-dn是基于deployment声明的资源对象

在k8s当中不直接和容器进行打交道

http-dn1只是deployent创建的资源对象,每个资源都使用统一的镜像

kubectl expose delotment httpd-dn1 --port=30000 --target-port=80

声明基于deployment创建的pod,可以使用对外的端口

声明资源对象的副本数

pod控制器

deployment:叫做无状态的应用部署,作用就是管理和控制pod以及他的repliset(运行几个容器)管控他的运行状态

replicaset:保证pod的副本数量 副本数量受控于deployment

在k8s当中,部署服务,实际上就是pod,deployment部署的服务就是pod,replicaset就是定义pod的容器数量,可以保证pod的不可重复性,在当前命名空间不可重复,不同命名空间名称可以重复,官方推荐deployment进行服务(pod)部署

kubectl create ns wqb 创建命名空间

daemonset:确保所有节点运行同一类的pod,保证每个节点上都有一个此类 Pod 运行

statefulset:有状态应用部署

job:可以给pod中设置一次性任务(运行完就退出)

cronjob:一直在后台运行的周期性任务

sevice:在k8s的集群当中,每创建一个pod都会为其中运行的容器分配一个集群内的ip地址,由于业务的变更,容器可能会发生变化,ip地址可能也会发生变化,service的作用就是提供整个pod对外统一的ip地址。sevice更像是网关层(路由器),通过访问service就可以访问pod内部的容器集群

sevice能实现负载均衡和代理------kube-proxy----来实现负载均衡

这个集群的代理由kube-proxy来实现

service是k8s微服务的核心,屏蔽了服务的细节,统一对外的暴露的端口,真正的"微服务"

sevice的负载流量调度:以前是userspace(用户空间已经废弃了),iptables(即将废弃),ipvs(现在的1.20主流.后面版本也用ipvs)

label:标签 k8s特色管理方式,用于分类管理资源对象

NODE:可以给node或者sevice/namespace起一个标签

label标签可以用户自定义

lable选择器:类似于等于或者不等于,相当于使用定义的标签名

ingress:是k8s对外暴露提供访问的方式属于应用层,对外暴露的接口,七层代理是转发的http请求

service是四层转发,转发的是流量。

重点:https://www.wqb.com:80 >ingress > service > pod > 容器

namespace:k8s可以通过namesapce命名空间的方式来实现资源隔离,项目隔离

通过namesapce可以把集群会分为多个资源不可共享的虚拟集群组

不同namesapce里面的资源名称是可以重复的,

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

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

相关文章

问答区故意在结题前回答混赏金的狗

此贴专记录CSDN问答社区里面,一些回答者在临近结题时胡乱回答,只为分取结题赏金的人。 所有图片均为事实,绝无半点虚假。各位看官可以自行搜索问题题目或者通过查看此人回答求证 所有图片均为事实,绝无半点虚假。各位看官可以自行…

c语言中数据结构

一、结构体的由来 1. 数据类型的不足 C语言中,基本数据类型只有整型、字符型、浮点型等少数几种,无法满足复杂数据类型的需要。 2. 数组的限制 虽然数组可以存储多个同类型的数据,但是数组中的元素个数是固定的,无法动态地改变…

渗透测试——1.3计算机网络基础

一、黑客术语 1、肉鸡:被黑客攻击电脑,可以受黑客控制不被发现 2、端口(port):数据传输的通道 3、弱口令:强度不高,容易被猜到的口令、密码 4、客户端:请求申请电脑(…

10. UVM Environment

环境为agents, scoreboards和其他验证组件(包括有助于在 SoC 级别重用块级环境组件的其他环境类)提供良好的层次结构和容器。用户定义的 env 类必须从 uvm_env 类扩展。 10.1 uvm_env class hierarchy 类声明: virtual class uvm_env extend…

k8s的二进制部署(一)

k8s的二进制部署:源码包部署 环境: k8smaster01: 20.0.0.71 kube-apiserver kube-controller-manager kube-schedule ETCD k8smaster02: 20.0.0.72 kube-apiserver kube-controller-manager kube-schedule Node节点01: 20.0.0.73 kubelet kube-pr…

nodejs+vue+ElementUi大学新生入学系统的设计与实现1hme0

采用B/S模式架构系统,开发简单,只需要连接网络即可登录本系统,不需要安装任何客户端。开发工具采用VSCode,前端采用VueElementUI,后端采用Node.js,数据库采用MySQL。 涉及的技术栈 1) 前台页面…

Stable Diffusion模型原理

1 Stable Diffusion概述 1.1 图像生成的发展 在Stable Diffusion诞生之前,计算机视觉和机器学习方面最重要的突破是 GAN(Generative Adversarial Networks 生成对抗网络)。GAN让超越训练数据已有内容成为可能,从而打开了一个全新…

Elasticsearch8.x结合OpenAI CLIP模型实现图搜图及文搜图功能

前言 在当今大数据时代,搜索引擎已经是许多应用的核心组件之一,近年随着大模型以及AI技术(如:自然语言处理NLP)的流行,这些技术的结合将会创造出更多的应用场景,比如:电商商品搜索、…

系列十五(面试)、RocketMQ消息重复消费问题

一、RocketMQ消息重复消费问题 1.1、官网 1.2、消息重复被消费原因 通过上述官网的描述我们可以知道,RocketMQ中的消息是存在重复消费的情况的。那么消息为什么会被重复消费呢?先来回顾一下RocketMQ的消息是怎么发送和接收的: 从上图可以看出…

c++primer—读书笔记【全能详细版】

第1章 开始 1.1 编写一个简单的c程序 1.1.1 编译.运行程序 ​ int类型是一种内置类型,即语言自身定义的类型 1.2 初识输入输出 ​ 输入流和输出流而言,一个流就是一个字符序列。术语“流”的意思表示,随时间的推移,字符是顺序…

dl转置卷积

转置卷积 转置卷积,顾名思义,通过名字我们应该就能看出来,其作用和卷积相反,它可以使得图像的像素增多 上图的意思是,输入是22的图像,卷积核为22的矩阵,然后变换成3*3的矩阵 代码如下 import…

Django(三)

1.快速上手 确保app已注册 【settings.py】 编写URL和视图函数对应关系 【urls.py】 编写视图函数 【views.py】 启动django项目 命令行启动python manage.py runserverPycharm启动 1.1 再写一个页面 2. templates模板 2.1 静态文件 2.1.1 static目录 2.1.2 引用静态…

【三维生成】稀疏重建、Image-to-3D方法(汇总)

系列文章目录 总结一下近5年的三维生成算法,持续更新 文章目录 系列文章目录一、LRM:单图像的大模型重建(2023)摘要1.前言2.Method3.实验 二、SSDNeRF:单阶段Diffusion NeRF的三维生成和重建(ICCV 2023&am…

HTML---定位

目录 文章目录 一.定位属性概述 二.position 基础数值 三.z-index属性 网页元素透明度 练习 一.定位属性概述 HTML中的定位属性指的是用来控制HTML元素在页面中的位置和布局的属性,包括position、top、bottom、left和right等。 position属性指定了元素的定位方式&a…

腾讯云轻量2核2G3M带宽服务器、40G系统盘、200G月流量优惠62元一年

继昨天阿里云2核2G3M带宽轻量应用服务器降价到63元后,腾讯云迅速做出响应,腾讯云轻量2核2G3M服务器降价到62元一年,1元之差,你选择阿里云还是腾讯云?值得一提的是,阿里云不限制月流量,但是腾讯云…

VMware安装笔记

1、首先准备安装文件 没有的小伙伴可以网上自行下载,或者给我留言,我发给你。 2、开始安装 2.1、双击运行exe安装文件,下一步 2.2、接受许可,下一步 2.3、选择安装路径 2.4、选择好安装路径后,继续下一步 2.5、取消勾…

侦探IP“去推理化”:《名侦探柯南》剧场版走过26年

2023年贺岁档,柯南剧场版的第26部《黑铁的鱼影》如期上映。 这部在日本狂卷票房128亿日元的作品,被誉为有史以来柯南剧场版在商业成绩上最好的一部。 但该作在4月份日本还未上映前,就于国内陷入了巨大的争议。 试映内容里,灰原…

设计从容不迫!12款在线平面设计工具,让你事半功倍!

平面设计是图形表达和信息展示的重要手段,在游戏场景、人物造型、插图、广告制作等艺术设计领域有着重要的应用,如海报设计、包装设计等。 平面设计强调视觉传达,一般以图像、图形、文字等视觉元素为主要手段,通过排版、配色、构…

普中STM32-PZ6806L开发板(烧录方式)

前言 有两种方式, 串口烧录和STLink方式烧录;串口烧录 步骤 开发板USB转串口CH340驱动板接线到USB连接PC使用自带工具普中自动下载软件.exe烧录程序到开发板 ST Link方式 这种方式需要另外进行供电, 我买的如下,当年用于调试STM8的,也可…

Upload-lab(pass1~2)

Pass-1-js检查 这里检验 因为是前端js校验,所以只用绕过js前端校验 用burp抓包修改文件类型 写一个简易版本的php Pass-2-只验证Content-type 仅仅判断content-type类型 因此上传shell.php抓包修改content-type为图片类型:image/jpeg、image/png、image/gif