K8s简述

1、定义:是一种开源的容器集群管理系统,在docker 容器技术的基础之上,为容器化的集群提供部署、运行、资源调度、服务发现、动态伸缩等一系列完整的功能的大规模容器管理

2、功能

(1)对docker的容器技术应用的包,部署、运行、停止、销毁,全生命周期管理

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

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

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

3、作用:自动部署、自动扩展和管理容器化部署的应用程序

负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具。以分布式和容器化的方式进行容器管理

4常用版本:K8s 1.20(支持容器,1.23版本后不再支持容器)

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

官网:Kubernetes

源码包:https://github.com/kubernetes/kubernetes

6、传统部署、容器部署、k8s部署的区别

1传统部署方式:一般意义上的二进制部署,安装、运行、运行维护需要专业人员,若出现故障,需要人工重新拉起来,若业务量增大,只能水平拓展,再部署一台

2容器化部署:用dockerfile方式,编写好自定义容器,基于镜像,随时都可以运行。数量少,还可以管理,数量一旦增多,管理复杂,而且docker一般是单机运行,没有高可用

3k8s部署:简单、高效的部署容器化的应用

①可以解决docker单机部署和无法集群化的问题

②可以解决随着容器数量的增加,对应增加的管理成本的问题

③可以解决容器的高可用问题,提供一种容器的自愈机制

④可以解决容器没有预设模板,以及无法快速、大规模部署,以及大规模容器调度的问题

⑤提供集中化配置管理的中心

⑥可以解决容器生命周期的管理工具的问题

⑦提供图形化工具对容器进行管理

7、k8s特性

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

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

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

nginx-1

10.244.0.10:3000

DNS服务名称:nginx

nginx-2

nginx-3

(4)自动发布和回滚:k8s采用滚动的策略更新应用,若更新过程中出现问题,可以根据回滚点进行回滚到上一个老版本

nginx-1

先更新1

最新版本

nginx-2

再更新2

1和2若有问题,自动回滚到上一个版本

nginx-3

老版本

5集中化的配置管理和密钥管理:k8s集群内的各个组件都需要进行密钥对验证,但k8s的安全性不高,核心组件不建议部署在k8s上,适合部署一些自定义应用

(6)存储编排

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

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

③可以通过网络存储、NFS、GFS实现指定节点部署

(7)批次处理任务:提供一次性任务、定时任务,满足需要批量处理和分析的场景

8、master组件(核心组件)【重要】

(1)kube-apiserver—所有请求的入口服务:k8s集群中每个组件都靠密钥对进行验证,组件之间通信靠kube-apiserver

API是应用接口服务,在k8s的所有资源请求和调用操作都是通过kube-apiserver来完成。所有对象资源的增删改查和监听操作,都是kube-apiserver处理完后交给etcd来存储。apiserver接收k8s的所有请求(命令行和图形化界面的操作),然后根据用户的具体请求通知对应的组件,展示或运行命令。apiserver相当于整个集群的大脑

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

控制器

node controller节点控制器

负责节点的发现,以及节点故障的发现和响应

replication controller副本控制器

控制关联pod的副本数,可以随时扩、缩容(手动、自动)

endpoints controller端点控制器

监听service和对应pod的副本变化端点就是服务暴露出的访问点,要访问这个服务必须要知道endpoint,就是内部每个服务的IP地址+端口

service account和

roken controllers服务账户和令牌控制

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

resourcequota controller资源控制器

可以对命名空间的资源使用进行控制,也可以对pod的资源进行控制

namespace controller命名空间控制器

管理命名空间的生命周期

service controller服务节点控制器

k8s集群和外部的主机之间的接口控制器。控制集群的IP

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

策略

预先策略

人工定制,指定node节点部署

优先策略

限制条件,根据调度算法先择合适node

怎么选择合适node呢?根据node节点的资源情况、选择一个资源最富裕、负载最小的节点来部署

(4)etcd:k8s的存储服务,etcd分布键值存储系统,存储k8s的关键配置和用户配置。先通过apiserver调用etcd中的存储信息,然后再实施(在整个集群中,能对etcd存储进行读写权限的只有apiserver)

9node组件

(1)kubelet:node节点的监视器与master节点的通信器。可理解为master在node节点上的眼线

作用:

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

②接受来自master节点的调度命令。若发现自己的状态和master节点的状态不一致,会调用docker的接口同步数据

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

(2)kube-proxy:实现每个node节点上pod的网络代理,负责节点上的网络规划和四层的负载均衡工作,负责写入iptables(快淘汰)和ipvs实现服务映射。kube-proxy本身不直接给pod提供网络代理,proxy只是service资源的载体,proxy实际上代理的是pod的集群网络(虚拟网络)(proxy代理的是service地址,service地址是所有pod对外提供的一个统一的IP地址)

注:pod不是容器

在k8s中不直接和容器打交道,真正和容器打交道的是pod

http-dn1是基于deployment创建的资源对象,既不是pod名称,也不是容器名称

80:30394是容器和主机之间的映射

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

k8s创建pod上,kube-scheduler调度到node节点上,节点上的kubelet指示docker启动特定的容器,kubelet把容器的信息收集、发送到主节点。在主节点发布指令,节点上的kubelet就会指示docker对容器进行拉取、启动、停止容器

pod:运行在节点上的,k8s中创建、部署最小、最简单的基本单位,一个pod代表正在集群上运行的一个进程。同一个pod内的每个容器就是一颗豌豆

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

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

deployment

无状态应用部署,管理和控制pod以及replicaset(运行几个容器),管控其运行状态

replicaset

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

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

daemonset

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

statefulset

有状态应用部署(很少用)

job

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

cronjob

一直在运行的周期性任务

10、service★★★

(1)作用:在k8s整个集群中,每创建一个pod都会为其中运行的容器分配一个集群内的IP地址,由于业务变更,容器数量可能会发生变化,容器的IP地址也会随之变化,不便于管理,service提供整个pod对外统一的IP地址。可理解为service是一个网关(路由器),通过访问service可以访问pod内部的容器集群

service能实现负载均衡和代理,核心载体是kube-proxy来实现负载均衡,service是k8s微服务的核心,屏蔽服务的细节,统一的对外暴露端口,真正实现“微服务”

(2)service的流量调度

①userspace(用户空间。淘汰)

②iptables(即将废弃)

③ipvs(目前1.20版本使用的)

11、label标签

k8s的特色管理方式,用于分类管理资源对象,可自定义node、pod、service、namespace

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

12、ingress(非常重要)

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

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

ingress和service的区别【重要】

ingress是七层代理,转发http请求

service是四层代理,转发的是流量

转发过程:

http://www.yyy.com:80→ingress→service→pod→容器

13namespace命名空间

在k8s上可以通过namespace来实现资源隔离、项目隔离,通过namespace可以把集群划分为多个资源不可共享的虚拟集群组,不同命名空间里面的资源名称可以重复

14数据架构图(重要)

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

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

相关文章

RHCE9学习指南 第11章 网络配置

11.1 网络基础知识 一台主机需要配置必要的网络信息,才可以连接到互联网。需要的配置网络信息包括IP,子网掩码,网关和DNS。 11.1.1 IP地址 在计算机中对IP的标记使用的是32bit的二进制,例如, 11000000 10101000 00…

鸿蒙组件数据传递:ui传递、@prop、@link

鸿蒙组件数据传递方式有很多种,下面详细罗列一下: 注意: 文章内名词解释: 正向:父变子也变 逆向:子变父也变 **第一种:直接传递 - 特点:1、任何数据类型都可以传递 2、不能响应式…

远程访问及控制

一、SSH远程管理 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录.远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早期的Telent(远程登录)、…

2023软考电子证书如何下载,哪些省份有电子证书?

每年都有很多考生咨询“软考电子证书如何下载,哪些省份有电子证书?” 今天就这两个主要问题跟大家说明下。 软考电子证书如何下载 相信很多考生说的“软考电子证书”是指中国人事考试网查询的”证书电子文件“,其实这两者是有所区别的。 …

前端函数配置化编程 - Element-plus

Element-plus 前端函数配置化编程 介绍 yc-setting-elment-plus 是一款针对了 element-plus 框架进行实现的配置化项目开发插件。其主要是基于 yc-config-create-setting 进行实现的,并且也对 typescript 进行了处理,它能够有效的对 element-plus 所有…

半新手向,webservice开发调用wsdl,调用他人的服务

背景 调用别人的服务 首先得有一个wsdl文件 这个文件可以手动发你,也可以通过链接网页,复制网页上的所有内容保存为wsdl文件。 以上为前提。 假设你已经有了wsdl文件。 wsdl文件有两种方式转成java文件 第一种wsimport E:\temp\webservice>wsimpo…

CSRF和SSRF原理、区别、防御方法

CSRF(Cross-Site Request Forgery)原理:CSRF是一种由攻击者构造形成,由服务端发起请求的一个安全漏洞。它是一种利用用户在已登录的网站中提交非法请求的行为,攻击者通过伪造用户提交的请求,将恶意请求发送…

C++的多继承和虚继承

目录 多继承的定义和用法定义多继承多继承中派生类对象的内存布局访问基类成员多继承带来的问题 虚继承虚继承的语法虚继承对象的内存布局虚继承中的构造虚继承的缺点 多继承的定义和用法 C支持多继承,即一个派生类可以有多个基类。 很多时候,单继承就…

效果图渲染电脑渲染好?还是云渲染更好?

效果图的渲染是建筑和室内设计领域中不可或缺的一步,随着技术的发展,云渲染作为一项新技术,正逐渐受到人们关注。今天,让我们深入探讨电脑渲染和云渲染这两种方法的优缺点以及它们的适用场景。 本地电脑渲染 本地电脑渲染是利用用…

往年面试精选题目(前50道)

常用的集合和区别,list和set区别 Map:key-value键值对,常见的有:HashMap、Hashtable、ConcurrentHashMap以及TreeMap等。Map不能包含重复的key,但是可以包含相同的value。 Set:不包含重复元素的集合&#…

库函数atoi的功能及模拟实现

atoi函数的功能 int atoi(const char * str) 参数是字符指针,函数值是转换后的int型数据。使用时要包含头文件stdlib.h。 atoi函数的功能是:跳过不可见(空白)字符(如空格、换页\f、换行\n、回车\r、制表符\t、垂直制表符\v),碰到正负号或…

cfa一级考生复习经验分享系列(十四)

首先说一下自己的背景,一个和金融没有半毛钱关系的数据分析师,之前考出了FRM。这次用一个半月突击12月的1级考试拿到了9A1B的成绩,纯属运气。以下纯属经(chě)验(dn),请看看就好&…

【webservice】cxf开发常见问题汇总

文章目录 1. 使用soapui测试时存在cdata嵌套的问题 1. 使用soapui测试时存在cdata嵌套的问题 说明&#xff1a;如果使用soapui进行webservice测试时要求数据放置在<![CDATA[ 和]]>中间&#xff0c;但是如果传递的XML文件中也存在cdata&#xff0c;并且不做处理的话&…

在k8s中使用cert-manager部署gitlab集群

写在前面的话&#xff1a;前面有详细的分享过在k8s集群中部署gitlab&#xff0c;不过当时使用gitlab的访问证书是阿里云上免费的ssl证书&#xff0c;今天特意专门介绍下另外一种基于cert-manager发布自签证书的方式实现部署gitlab到k8s集群中。 往期gitlab部署系列如&#xff1…

【ESP32运行MicroPython】连接无线网络、延迟和定时、实时时钟 (RTC)、WDT(看门狗定时器)

常用语法如下 import network wlan network.WLAN(network.STA_IF) #创建工作站接口 wlan.active(True) #激活接口 Wlan.scan() #扫描接入点 wlan.isconnected() #检查站点是否连接到AP wlan.connect(ssid&#xff0c; key) #连接AP wifi名称与密码 wlan.config(mac) #获取接口…

麒麟信安桌面操作系统顺利上线长沙职业技术学院,深度促进产教融合,赋能信创人才培养

随着信息基础设施国产化进程的加快&#xff0c;信息技术创新产业对人才的需求量激增&#xff0c;为解决信创人才培养难题、深度促进产教融合&#xff0c;近日&#xff0c;麒麟信安、湖南欧拉生态创新中心携手长沙职业技术学院共同组建的“麒麟信安&欧拉(openEuler)国产操作…

【小黑嵌入式系统第十三课】PSoC 5LP第二个实验——中断控制实验

上一课&#xff1a; 【小黑嵌入式系统第十二课】μC/OS-III程序设计基础&#xff08;二&#xff09;——系统函数使用场合、时间管理、临界区管理、使用规则、互斥信号量 文章目录 1 实验目的2 实验要求3 实验设备4 实验原理4.1 中断(1) 中断机制概述(2) 中断源(3) 中断系统的功…

DshanMCU-R128s2硬件设计参考

R128 DevKit 开发板 硬件工程开源地址&#xff1a;https://oshwhub.com/gloomyghost/r128-module电路图&#xff1a;SCH_R128-DevKit_2023-09-05.pdfPCB&#xff1a;ProDocument_R128-DevKit_2023-09-05.eproGERBER&#xff1a;Gerber_R128-DevKit_2023-09-05.zipSTL&#xff…

鸿蒙开发语言介绍--ArkTS

1.编程语言介绍 ArkTS是HarmonyOS主力应用开发语言。它在TypeScript (简称TS)的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等相应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。 2.TypeScript简介 自行补充TypeScript知识吧。h…

python对图片进行旋转操作

Python提供了许多库来对图片进行操作,其中最常用的可能是PIL(Python Imaging Library,又名Pillow)。Pillow库允许你进行诸如读取、修改和保存图像等操作。 以下是一个简单的例子,展示了如何使用Pillow库来打开一张图片,对其进行一些简单的操作,然后保存结果: from PI…