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…

远程访问及控制

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

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),碰到正负号或…

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

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

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

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

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

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

鸿蒙开发语言介绍--ArkTS

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

鸿蒙列表,item组件封装传参问题?@ObjectLink 和@Observerd

鸿蒙列表渲染,封装内容组件,进行item传参会报错? class FoodClass {order_id: number 0food_name: string ""food_price: number 0food_count: number 0 }Entry Component struct Demo07 {State message: string Hello World…

ElasticSearch 架构设计

介绍 ElasticSearchMySQLIndexTableDocumentRowFieldColumnMappingSchemaQuery DSLSQLaggregationsgroup by,avg,sumcardinality去重 distinctreindex数据迁移 参考博客 [1]

ZooKeeper Client API 安装及使用指北

下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz解压 tar -zxf zookeeper-3.5.4-beta.tar.gz安装 cd zookeeper-3.5.4-beta/src/c/ ./configure make sudo make install到 make 这一步大概率会出现报错:…

【数据结构初阶】二叉树(2)

二叉树顺序结构 1.二叉树的顺序结构及实现1.1二叉树的顺序结构 1.2 堆的概念及结构1.3 堆的实现1.3.1向上调整1.3.2向下调整1.3.3交换函数1.3.4打印1.3.5初始化1.3.6销毁1.3.7插入1.3.8删除1.3.9获得堆顶元素1.3.10判断是否为空1.3.6 堆的代码实现 1.3.2堆的创建1.3.3 建堆时间…

怎么修复MSVCR110.dll文件?全面解析MSVCR110.dll缺失修复方法

MSVCR110.dll文件缺失问题在Windows操作系统用户中相当普遍,经常导致应用程序启动失败或崩溃。MSVCR110.dll是Microsoft Visual C Redistributable for Visual Studio 2012的一部分,且应用程序通常依赖这个DLL文件来执行C库中的代码。文件的丢失可能源自…

【代码随想录】刷题笔记Day39

前言 下午答疑课过于无聊了,后台在跑代码也写不了作业,再刷点题吧~难得一天两篇 56. 合并区间 - 力扣(LeetCode) 和之前重叠区间是同个类型,和res里的元素比较,重叠就更新res里最后元素的最右边界 class…

VS2020使用MFC开发一个贪吃蛇游戏

背景: 贪吃蛇游戏 按照如下步骤实现:。初始化地图 。通过键盘控制蛇运动方向,注意重新设置运动方向操作。 。制造食物。 。让蛇移动,如果吃掉食物就重新生成一个食物,如果会死亡就break。用蛇的坐标将地图中的空格替换为 #和”将…

常用JavaScript库

一、认识前端工具库 1.前端工具类库 jQuery是一个快速、小型且功能丰富的 JavaScript 库,它使HTML文档遍历和操作、事件处理、动画和 AJAX 之类的事情变得 更加简单。当时jQuery库不但简化了代码,而且提供出色的跨浏览器支持,其极大的提高了…

黑马头条-day10-xxl-job热点文章计算

目录 一.需求分析 实现思路 定时计算 定时任务框架-xxljob 二. 学习目录 分布式任务调度 1 xxl-Job简介 2 XXL-Job-环境搭建 2.1调度中心环境要求 2.2源码仓库地址 2.3 初始化“调度数据库” 2.4配置部署“调度中心” 3.配置部署调度中心-docker安装 4.简单实例 创建…

每周一算法:邻值查找

给定一个长度为 n n n的序列 A A A&#xff0c; A A A中的数各不相同。 对于 A A A 中的每一个数 A i A_i Ai​&#xff0c;求&#xff1a; m i n 1 ≤ j < i ∣ A i − A j ∣ min_{1≤j<i}|A_i−A_j| min1≤j<i​∣Ai​−Aj​∣&#xff0c;以及令上式取到最小值的…