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里面的资源名称是可以重复的,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣-收集足够苹果的最小花园周长[思维+组合数]

题目链接 题意: 给你一个用无限二维网格表示的花园,每一个 整数坐标处都有一棵苹果树。整数坐标 (i, j) 处的苹果树有 |i| |j| 个苹果。 你将会买下正中心坐标是 (0, 0) 的一块 正方形土地 ,且每条边都与两条坐标轴之一平行。 给你一个整…

【flink番外篇】7、flink的State(Keyed State和operator state)介绍及示例 - 完整版

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

dpdk原理概述及核心源码剖析

dpdk原理 1、操作系统、计算机网络诞生已经几十年了,部分功能不再能满足现在的业务需求。如果对操作系统做更改,成本非常高,所以部分问题是在应用层想办法解决的,比如前面介绍的协程、quic等,都是在应用层重新开发的框…

docker 私有仓库

Docker 私有仓库 一、私有仓库搭建 # 1、拉取私有仓库镜像 docker pull registry # 2、启动私有仓库容器 docker run -id --nameregistry -p 5000:5000 registry # 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories&quo…

Linux操作系统——进程(三) 进程优先级

进程优先级 首先呢,我们知道一个进程呢(或者也可以叫做一个任务),它呢有时候要在CPU的运行队列中排队,要么有时候阻塞的时候呢又要在设备的等待队列中排队,其实我们排队的本质就是:确认优先级。…

【数据结构】什么是二叉树?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌二叉树的定义 📌二叉树的特点 📌特殊二叉树 📌二叉树的性质 📌二叉树的存储结构 📌二叉树…

大语言模型说明书

在浩瀚的信息宇宙中,大语言模型如同一颗璀璨的星星正在熠熠生辉。21世纪以来,人工智能可谓是飞速发展,从简单的神经网络到大语言模型、生成式AI,这并非仅仅是一种技术的进步,更是人类智慧的飞跃。大语言模型不仅仅是语…

opencv入门到精通——形态学转换

目录 目标 理论 1. 侵蚀 2. 扩张 3. 开运算 4. 闭运算 5. 形态学梯度 6. 顶帽 7. 黑帽 结构元素 目标 在这一章当中, 我们将学习不同的形态学操作,例如侵蚀,膨胀,开运算,闭运算等。我们将看到不同的功能&…

期末复习【计算机图像处理】

期末复习【计算机图像处理】 前言版权推荐期末复习期末考点内容期末考试题型一、填空 2分*10 概念二、简答 5分*2三、计算 10分*6四、绘图 10分*1 测验二测验三最后 前言 2023-12-25 15:09:07 昨天没有睡好 0点~3点看B站 Google模拟面试 3点~5点没睡着 5~6点睡了一会 6~12点终…

isp代理/双isp代理/数据中心代理的区别?如何选择?

本文我们来详细科普一下几种不同的代理类型:isp代理/双isp代理/数据中心代理,了解他们的区别,选择更适合自己的代理类型。 在讲述这几种代理类型之前,我们先复习一下代理大类有哪几种。 一、机房代理和非机房代理 在做代理ip选…

《试题与研究》期刊发表投稿方式

《试题与研究》杂志是面向全国公开发行的国家CN级权威教育期刊。创刊以来一直以服务教育服务学生为办刊宗旨,以优秀的内容质量和编校质量深受广大读者好评,其权威性、导向性、针对性、实用性在全国教育期刊中独树一帜。为推动教育科研事业的发展&#xf…

20231225使用亿佰特的蓝牙模块dongle协议分析仪E104-2G4U04A抓取BLE广播数据

20231225使用亿佰特的蓝牙模块dongle协议分析仪E104-2G4U04A抓取BLE广播数据 结论:硬件蓝牙分析仪 不一定比 手机端的APK的效果好! 亿佰特E104-2G4U04A需要3片【单通道】,电脑端的UI为全英文的。 BLE-AnalyzerPro WCH升级版BLE-PRO蓝牙分析仪…

DRF视图组件

【1】两个视图基类 APIView APIView是 Django REST Framework 提供的一个基类,用于创建基于函数或基于类的视图。使用 APIView 可以根据需求自定义请求处理逻辑,对于简单的接口逻辑,可以直接继承APIView类。 GenericAPIView GenericAPIVi…

如何使用 YOLOv8 做对象检测

介绍 对象检测是一项计算机视觉任务,涉及识别和定位图像或视频中的对象。它是许多应用的重要组成部分,例如自动驾驶汽车、机器人和视频监控。 多年来,已经开发了许多方法和算法来查找图像中的对象及其位置。卷积神经网络对于此类任务有着非…

Dbeaver如何连接Oceanbase?

Dbeaver & Oceanbase 一、新增驱动二、连接数据库 一、新增驱动 1、新建驱动 点击数据库 -> 驱动管理器 -> 新建 2、设置驱动 驱动名称可随意填写注意驱动类型要是Generichost:port填写实际的host和port 库中新增下载的oceanbase驱动jar包 二、连接数据库 1、找…

linux 系统重启 Redis 服务

先 打开服务器 执行 sudo systemctl stop redis暂停Redis服务 然后 执行 sudo systemctl start redis启动 redis 服务 然后可以执行 sudo systemctl status redis查看 redis 状态

PyAV 使用浅谈

背景: PyAV是一个用于音频和视频处理的Python库,它提供了一个简单而强大的接口,用于解码、编码、处理和分析各种音频和视频格式。PyAV基于FFmpeg多媒体框架,它本质上是FFmpeg 的Python绑定,因此可以利用FFmpeg的功能来…

移动Web

文章目录 移动 Web一、平面转换1. 平移2. 旋转3. 渐变 二、空间转换1. 平移2. 旋转3. 动画 三、移动适配1. 谷歌模拟器2. rem3. less4. vw 四、响应式布局1. 媒体查询2. Bootstrap 移动 Web 一、平面转换 作用:为元素添加动态效果,一般与过渡配合使用 …

如何使用PatchaPalooza对微软每月的安全更新进行全面深入的分析

关于PatchaPalooza PatchaPalooza是一款针对微软每月安全更新的强大分析工具,广大研究人员可以直接使用该工具来对微软每月定期推送的安全更新代码进行详细、全面且深入的安全分析。 PatchaPalooza使用了微软MSRC CVRF API的强大功能来获取、存储和分析安全更新数…

MongoDB数据库本地部署并结合内网穿透实现navicat公网访问

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…