k8s 组件

news2025/3/20 12:38:07

k8s:

kubernets:8个字母省略,就是k8s.

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

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

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

1.20面试版本

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

Kubernetes官网

https://github.com/kubernetes/kubernetes源码包注册账号

docker微服务,可以满足微服务使用,那么为什么还要使用k8s呢。

1,传统的部署方式:一般意义上的二进制部署,安装-运行-运行维护,需要专业的人员,如果主力工作还需要人工重新拉起来。而且如果业务量增大,子女水平的拓展,在部署一个。

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

k8s的作用: 简单高效的部署容器化的应用。

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

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

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

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

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

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

7,提供了图形化工具,可以用图形化工具对容器进行管理。

k8s是基于开源的容器集群管理系统,在docker容器技术的基础之上。

为容器化的集群提供部署,运行,资源调度,服务发现,动态伸缩等-系列完整的功能

大规模容器管理:

1,对docker等容器技术从应用包----部署----运行----停止---销毁,全生命周期管理

2,集群方式运行,跨机器的容器管理

3、解决docker的跨机器运行的网络问题

4、k8s可以自动修复,使得整个容器集群可以在用户期待的状态下运行。

k8s的特性:

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

2,自我修复:节点故障时,重新启动失败的容器,替换和重新部署。

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

4,自动发布和回滚:k8s采用滚动的策略更新应用。如果更新过程中出现问题,可以根据回滚点来进行回滚。

5,集中化的配置管理和密钥对管理

k8s集群内的各个组件都要进行密钥对验证的,但是k8s的安全性不够,核心的组件不建议部署,自定义应用。

6,存储编排

一,自动化的把容器部署在节点上。

二,可以可以通过命令行或者yml文件(自定义pod)实现指定节点部署。也可以通过网络存储,NFS gfs

7,任务进行批次处理。提供一次性的任务,定时任务,满足需要批量处理和分析的场景。

k8s的核心组件:(面试题)

1,kube-APIserver: k8s集群之中每个组件都要靠密钥来进行验证,组件之间的通信apiserver。API是应用接口服务,k8s的所有资源请求和调用操作都是kube-apiserver来完成。

所有对象资源的增,删,改,查和监听的存在都是kube-apiserver处理完之后交给etcd来进行。apiserver是所有请求的入口服务,apiserver接受k8s的所有请求(命令行和图形化界面),然后根据用户的具体请求,通知对应的组件展示或者运行命令。

apiserver相当于整个集群的大脑。

2,kube-controller-manager:运行管理控制器。是k8s集群中处理常规任务的后台线程。是集群中所有资源对象的自动化控制中心。一个资源对应一个控制器。

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

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

2.3,endpoints controller(端点控制器),监听service和对应的副本变化。端点就是服务器暴露出的访问点。要访问这个服务,必须要知道他的endpoints。就是内部每个服务的ip地址+端口

2.4,service accountje 和 roken controllers (服务账户和令牌控制)

为命名空间创建默认账户和API访问令牌。

2.5,resourcequota controller(资源控制器):可以对命名空间的资源使用进行控制。

2.6,namespace controller(命名空间的控制器),管理命名空间的生命周期。namespace.访问和控制不同的命名空间。

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

相当于中枢神经

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

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

优先策略:限制条件,

根据调度算法选择一个核数的node,node的节点的资源情况,node的资源控制情况等等,选一个资源最富裕, 负载最小的node来部署一般来说默认策略即可。

4,ETCD: . k8s的存储服务,etcd分布式键值存储系统(key:value) ,k8s的关键配置和用户配置,先通过APIserver调用etcd当中的存储信息,然后再实施。(这个集群当中,能对etcd存储进行读写权限的,只有APl-server.)

四大组件,一般来说在主节点上。

node组件:

1,kubelet:node节点的监视器,以及于MASTER节点的通讯器,也可以理解为master在node节点上的眼线。

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

接受来自master节点的调度命令。

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

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

2,kube-proxy:

实现每个node节点上的pod网络代理。负责节点上的网络规划和四层负载均衡工作。负责写入iptables(快淘汰)ipv4实现服务映射。

pod不是容器是基于容器来创建的一个节点。

kupe-proxy:本身不直接提供网络,proxy是service资源的载体。

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

k8s的每个节点上都有一个kube-proxy组件。

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

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

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

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

资源存放的东西。

每一个都是一个pod是含有3个副本,每一个副本使用的是同一个镜像

只是基于容器创建的

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

详细查看,可以看到容器

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

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

replicaset:保证pod的副本数量,受控于deplayment。

在k8s中,部署服务,实际上就是pod,deployment部署的服务就是podrereplicaset的就是来调用pod的容器数量。可以保证pod的不可重复性。在当前命名空间不能重复。不同命名空间可以重复。

官方推荐使用deployment进行服务部署。

daemonset:确保所有节点运行同一类的pod。

statefulset:有状态应用部署。

job:可以在pod中设置一次性任务,运行完即退出。

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

service:

在k8s集群当中,创建一个pod之后,都会在其中运行的容器分配一个集群内的IP地址,由于业务的变更,容器可能会发送变化,IP地址也会发生变化,service的作用就是提供整个pod对外统一的ip地址。

service就是一个网关(路由器)通过赋权service就可以访问内部的容器集群。

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

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

service的流量调度:userspace(用户空间,废弃)iptables(即将废弃)ipvs(目前1.20都用ipvs)

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

可以用于 node pod service namespace

lable标签可以用户自定义。

lable选择器:等于,不等于。使用定义的标签名。

面试题:

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

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

namespace:在k8s上可以通过namesapce来实现资源隔离,项目隔离。

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

不同的命名空间的资源名称可以重复的。

结构:

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

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

相关文章

如何使用 Matplotlib 绘制 3D 圣诞树

系列文章目录 前言 转自:How to draw a 3D Christmas Tree with Matplotlib | by Timur Bakibayev, Ph.D. | Analytics Vidhya | Mediumhttps://medium.com/analytics-vidhya/how-to-draw-a-3d-christmas-tree-with-matplotlib-aabb9bc27864 因为我们把圣诞树安装…

基于深度学习的性别识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 GoogLeNet网络结构 4.2. 基于GoogLeNet的性别识别算法 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..............................…

Jupyter Notebook的安装及在网页端和VScode中使用教程(详细图文教程)

目录 一、Jupyter Notebook1.1 组成组件1.2 优点1.3 常规用途 二、安装及使用2.1 网页端2.1.1 安装Jupyter Notebook2.1.2 检验是否安装成功2.1.3 启动Jupyter Notebook2.1.4 使用Jupyter Notebook 2.2 VScode中安装及使用2.2.1 安装Jupyter2.2.2 使用Jupyter 三、常用命令3.1 …

Vue核心语法、脚手架与组件化开发、VueRouterVuex、综合案例(待办事项工具)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈 一、Vue核心语法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name…

约束-练习题

练习1 已经存在数据库test04_emp&#xff0c;两张表emp2和dept2 CREATE DATABASE test04_emp; use test04_emp; CREATE TABLE emp2( id INT, emp_name VARCHAR(15) ); CREATE TABLE dept2( id INT, dept_name VARCHAR(15) );题目: 向表emp2的id列中添加PRIMARY KEY约束向表d…

广州华锐互动VRAR:VR安全模拟驾驶让顾客身临其境感受真实试驾体验

随着科技的不断发展&#xff0c;汽车行业也在不断地进行创新。从电动汽车到自动驾驶&#xff0c;再到如今的虚拟现实技术&#xff0c;汽车行业的未来充满了无限的可能性。而在这些创新中&#xff0c;VR安全模拟驾驶无疑是最具吸引力的一项。通过戴上一副虚拟现实眼镜&#xff0…

计算机毕业设计 基于SpringBoot的高校宣讲会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

JMeter逻辑控制器之IF控制器

Jmeter控制器之IF控制器 1.应用背景2.介绍3.使用4.添加控制器5.表达式说明6.函数助手调用7.举例 1.应用背景 存在一些使用场景&#xff0c;比如&#xff1a;一个测试场景中&#xff0c;包含多个请求&#xff0c;当上一个请求的结果不符合要求&#xff0c;就不需要执行下一个请求…

听GPT 讲Rust源代码--src/tools(27)

File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs 文件rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs的作用是实施Clippy lint规则&#xff0c;检测产生潜在性能问题的字符转换代码&#xff0c;并给出相关建议。 在Rus…

vscode中使用GitHub Copilot Chat

文章目录 一、什么是Github Copilot Chat二、安装使用三、如何使用1. 聊天功能2. 内联功能 一、什么是Github Copilot Chat GitHub Copilot Chat 由 OpenAI 的 GPT-4 大型多模态模型提供支持&#xff0c;能带来更准确的代码建议、解释和指导。GitHub Copilot Chat 的内联功能可…

AI安全综述

1、引言 AI安全这个话题&#xff0c;通常会引伸出来图像识别领域的对抗样本攻击。下面这张把“熊猫”变“猴子”的攻击样例应该都不陌生&#xff0c;包括很多照片/视频过人脸的演示也很多。 对抗样本的研究领域已经具备了一定的成熟性&#xff0c;有一系列的理论来论述对抗样本…

Opencv学习笔记(二)图像基本操作

图像基本操作 一、边界填充 二、图像融合 三、图像阈值 四、图像平滑 五、形态学预算 1、腐蚀操作 2、膨胀操作 3、开闭运算操作 4、梯度运算 5、顶帽运算 6、黑帽运算 一、边界填充 cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borde…

[内功修炼]函数栈帧的创建与销毁

文章目录 1:什么是函数栈帧2:理解函数栈帧能解决什么问题呢3:函数栈帧的创建与销毁的解析3.1:什么是栈3.2:认识相关寄存器与汇编指令相关寄存器相关汇编指令 3.3 解析函数栈帧的创建和销毁3.3.1 预备知识3.3.2 详细解析一:调用main函数,为main函数开辟函数栈帧First:push前push…

C++力扣题目20--有效的括号

给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…

ElasticSearch之RestClient笔记

1. ElasticSearch 1.1 倒排索引 1.2 ElasticSearch和Mysql对比 1.3 RestClient操作 导入依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.15.…

中科驭数与宽睿科技达成战略合作,共筑超低时延软硬一体技术底座

近日&#xff0c;中科驭数&#xff08;北京&#xff09;科技有限公司&#xff08;简称“中科驭数”&#xff09;和上海宽睿信息科技有限责任公司&#xff08;简称“宽睿科技”&#xff09;完成战略合作协议签署。双方将结合各自在超低时延软硬件领域的深厚业务积累和技术产品优…

PPT中加入页码

PPT中加入页码 文章目录 简单版本样式更改 简单版本 PPT中插入页码&#xff0c;基础的就是在“插入”选项卡中单机“幻灯片编号”即可 样式更改 然而&#xff0c;就像我们做幻灯片不满足于白底黑字一样&#xff0c;页码也总不能是默认的样式。 比如&#xff0c;在页码下面…

看图了解ODF光纤配线架,详细熔接过程学习

弱电工程&#xff0c;远距离传输离不开光纤&#xff0c;只有光纤才能让网络传输的更远&#xff0c;今天了解光纤的配套产品&#xff0c;光纤配线架&#xff08;Optical Distribution Frame&#xff09;用于光纤通信系统中局端主干光缆的成端和分配&#xff0c;可方便地实现光纤…

运行天地图Cesium.js三维服务案例

零、技术选型及相关网址 技术选型&#xff1a;Vue2、VueCli5、Cesium.js、天地图 相关网址&#xff1a;三维服务 - 天地图 帮助文档 一、cesium 初始化参数解析 initializeCesium() {this.viewer new Cesium.Map("cesiumContainer", {shouldAnimate: true, // 是否…

MATLAB中确定峰宽

创建由钟形曲线之和组成的信号。指定每条曲线的位置、高度和宽度。 x linspace(0,1,1000);Pos [1 2 3 5 7 8]/10; Hgt [4 4 2 2 2 3]; Wdt [3 8 4 3 4 6]/100;for n 1:length(Pos)Gauss(n,:) Hgt(n)*exp(-((x - Pos(n))/Wdt(n)).^2); endPeakSig sum(Gauss); 绘制各单…