k8s 组件

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.mzph.cn/news/576949.shtml

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

相关文章

[PyTorch][chapter 8][李宏毅深度学习][DNN 训练技巧]

前言: DNN 是神经网络的里面基础核心模型之一.这里面结合DNN 介绍一下如何解决 深度学习里面过拟合,欠拟合问题 目录: DNN 训练常见问题 过拟合处理 欠拟合处理 keras 项目 一 DNN 训练常见问题 我们在深度学习网络训练的时候经常会遇到下面…

Oracle初始化参数修改后,是否需要重启才能生效

可以查看 v$parameter或v$parameter2动态性能视图的ISSYS_MODIFIABLE列。此列指示是否可以使用 ALTER SYSTEM 更改参数以及更改何时生效: IMMEDIATE - 无论用于启动实例的参数文件的类型如何,都可以使用 ALTER SYSTEM 更改参数。 更改立即生效。DEFERRE…

易基因2023年度DNA甲基化研究项目文章精选

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 2023年,易基因参与的DNA甲基化研究成果层出不穷,小编选取其中5篇不同方向的论文与您一起来回顾。 01、易基因微量DNA甲基化测序助力中国科学家成功构建胚胎干细胞…

工厂设备维护管理有什么比较好的解决方案?哪家的工单管理系统功能强大?

生产设备对于工厂来说是十分宝贵的资产。一方面,工厂依赖设备进行生产活动,一旦设备故障就会影响产量;另一方面,工厂中的生产设备一般造价都比较高昂,如果出现故障就会增加工厂的生产成本;再一方面&#xf…

Linux部署MeterSphere结合内网穿透实现远程访问服务管理界面

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

makefile教程(1)

makefile教程 makefile是什么: makefile是用户自行完成的IDE(integrated development environment集成开发环境)程序,与传统的操作系统下的编译不同,makefile可以通过用户自行安排,决定文件的编译顺序&am…

第 377 场周赛虚拟参赛记录及补题

最小数字游戏 3 题目 - 思路 模拟代码 class Solution { public:vector<int> numberGame(vector<int>& nums) {sort(nums.begin(),nums.end());vector<int> ans;for (int i 0;i < nums.size();i ) if (i&1)ans.push_back(nums[i-1]);else ans.…

postman的下载安装和使用

第一章、使用postman向后端发送请求 1.2&#xff09;postman下载与安装使用 我的百度网盘postman点击下载 提取码&#xff1a;bybp 下载后双击.exe文件直接安装 点击此次创建集合 点击此处创建请求 1.2&#xff09;发送get请求 选择自己的请求方式&#xff0c;输入请求…

Uboot

这里写目录标题 什么是Bootloader?Bootloader启动流程NAND Flash uboot是怎么和内核完成参数传递的&#xff1f; 什么是Bootloader? Linux系统要启动就必须需要一个 bootloader程序&#xff0c;也就说芯片上电以后先运行一段bootloader程序。 这段 **bootloader程序会先初始…

使用 FFmpeg 清除文件夹下所有 .mp4 文件声音

运行以下命令来清除声音&#xff1a; ffmpeg -i input.mp4 -c copy -an output.mp4这个命令会将 “input.mp4” 替换为你要处理的 .mp4 文件名。它会生成一个新的文件名为 “output.mp4” 的文件&#xff0c;该文件是没有声音的副本。 如果你想要直接替换原始文件&#xff0c;…

【网络编程】基于UDP数据报实现回显服务器程序

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 前言 我们如果…

互联网+建筑工地:技术革新引领建筑行业的未来

随着科技的飞速发展&#xff0c;互联网正日益渗透到建筑工地的方方面面。从设计、施工到管理&#xff0c;互联网建筑工地的深度融合不仅推动了建筑行业的数字化转型&#xff0c;还为工地管理、信息交流、安全监控等带来了全新的解决方案。本文将介绍互联网建筑工地的几个关键技…

java.lang.EnumConstantNotPresentException

枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象&#xff0c;但该枚举对象并不包含常量时&#xff0c;抛出该异常 1.遇到的问题是我删除了带有CustomAnnotation注解的类,启动服务器还是会抛出异常 2.首先全局搜索了相关的枚举名字 确认没有引用。后发现项目…

keras 人工智能之VGGNet神经网络的图片识别训练

上期文章我们分享了如何使用LetNet体系结构来搭建一个图片识别的神经网络: 人工智能Keras的第一个图像分类器(CNN卷积神经网络的图片识别) 本期我们基于VGGNet神经网络来进行图片的识别,且增加图片的识别种类,当然你也可以增加更多的种类,本期代码跟往期代码有很大的相…

【MySQL】:超详细MySQL完整安装和配置教程

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. MySQL数据库1.1 版本1.2 下载1.3 安装1.4 客户端连接 &#x1f324;️全篇总…

LaTex设置标题页、修改文字颜色和文字高亮

目录 一、标题页 1&#xff09;常用的代码 2&#xff09;添加脚注 二、修改文字颜色和文字高亮 1&#xff09;设置文本的颜色 2&#xff09;添加文本高亮 3&#xff09;给文本添加有颜色的方框 一、标题页 主要的代码&#xff1a; \begin{titlepage} \noindent\fonts…

如何实现https密钥对登录方式

先安装docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo systemctl start docker.service systemctl enable docker.service yum install -y docker…

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(一)

社会工程学—世界头号黑客凯文米特尼克在《欺骗的艺术》中曾提到&#xff0c;这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 SET最常用的攻击方法有&#xff1a;用恶意附件对目标进行 E-mail 钓鱼攻击、Java Applet攻…

nosql-redis整合测试

nosql-redis整合测试 1、创建项目并导入redis2、配置redis3、写测试类4、在redis中创建key5、访问80826、在集成测试中测试方法 1、创建项目并导入redis 2、配置redis 3、写测试类 4、在redis中创建key 5、访问8082 6、在集成测试中测试方法 package com.example.boot3.redis;…

SpringMVC之跨域请求

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 SpringMVC之跨域请求 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是同源策略…