k8s是什么

生么是k8s:

Kubernetes:8个字母省略,就是k8s

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

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

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

1.15   1.18    1.20  1.28   现在普遍用的是1.20

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

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

  1. 传统的部署方式:一般意义上的二进制部署,安装-运行-运行维护,需要专业的人员,如果出现故障还需要人工重新拉起来,而且如果业务量增大,只能水平的拓展,再部署一个。
  2. 容器化,可以用dockerfile编写好自定义的容器,随时基于镜像都可以运行,数量少,还能管的过来,数量一旦太多管理起来太复杂。而且。Docker一般是单机运行,没有高可用。

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

  1. 解决了docker的单机部署和无法集群化的特点
  2. 解决了随着容器数量的增加,对应增加的管理成本。
  3. 容器的高可用,提供了一种容器的自愈机制。
  4. 解决了容器没有预设模版,以及无法快速,大规模部署,以及大规模的容器调度。
  5. ks8提供了集中化配置管理的中心。
  6. 解决了容器的生命周期的管理工具。
  7. 提供了图形化工具,可以用图形化工具对容器进行管理。

k8s是基于开源的容器集群管理系统,在docker容器技术的基础之上。为容器化的应用提供部署。运行,资源调度。服务发现,动态伸缩等一系列完整的功能。

大规模容器管理:作用

  1. 对docker容器技术从应用的包----部署----运行----停止----销毁,全部生命周期管理。
  2. 集群方式运行,跨机器的容器管理
  3. 解决docker的跨机器运行的网络问题
  4. k8s可以自动修复,使得整个容器集群可以在用户期待的状态下运行。

k8s的特性:

  1. 弹性伸缩:基于命令,或者图形化界面基于CPU的使用情况,自动的对部署的程序进行扩容和伸缩。以最小的成本运行服务。
  2. 自我修复:节点故障时,重启启动失败的容器,替换和重新部署。
  3. 服务发现和负载均衡:k8s为多个容器提供一个统一的访问入口(内部地址和一个内部的DNS名称),自动负载均衡关联所有的容器。
  4. 自动发布和回滚:k8s采用滚动的策略更新应用。如果更新过程中出现故障,可以根据回滚点来进行回滚。
  5. 集群化的配置管理和密钥管理。 k8s集群内的各个组件都是要进行秘钥对验证的。但是k8s的安全性不够。核心的组件不建议部署,自定义应用。

     6,存储编排:                 

                1,可以自动化的吧容器部署在节点上。

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

                3,可以通过网络存储,NFS g fs

     7,任务进行批次处理:

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

k8s的核心组件:

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

       所有对象资源的增,删,改。查和监听的操作都是kube-apiserver处理完成之后交给etcd来进行。

Api-server是k8s所有请求的入口服务,api-server接受k8s的所有请求(命令行和图像化界面)

然后根据用户的具体请求,通知对应的组件展示或者运行命令。

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

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

  1. node controller(节点控制器):负责节点的发现以及节点故障时的发现和响应。
  2. Replication controller(副本控制器):控制关联pod的副本数。可以随时扩容。
  3. Endpoints controller(端点控制器):监听service和对应pod的福本变化。端点就是服务暴漏出的访问点。要访问这个服务,必须要知道他的endpoints。就是内部每个服务的IP地址+ 端口。
  4. Service account 和roken controllers(服务账户和令牌控制)      为命名空间创建,默认账户和API访问令牌。Namespace,访问不同的命令空间。
  5. resourcequota controller(资源控制器):可以对命名空间的资源使用进行控制。   也可以对pod的资源进行控制。
  6. namespace controller(命名空间的控制器):管理命名空间的生命周期。
  7. Server 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存储进行    读写权限的,只有API-server)  主节点上

node组件:

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

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

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

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

      2.kube-porxy:

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

 Pod不是容器

Kube-prxoxy:本身不直接给pod提供网络代理,proxy是service资源的载体。

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

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

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

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

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

      

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

   同一个pod内的每个容器就是一颗豌豆。

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

   一个pod里面可以运行多个容器或者具有关联的多个容器组成一个pod

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

Replicaset:保证pod的副本数量,受控于deploment。

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

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

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

Statefulset:有状态应用部署。

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

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

Service的作用:

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

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

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

Service是k8s微服务的核心,屏蔽了服务的细节,统一的对外暴漏的端口,真正实现了“微服务”。

Service的流量调度:userspace(用户空间,废弃)iptablees(即将废弃),IPVS(目前1.20都用IPVS)

 Label:标签:

k8s的特色管理方式,分类管理资源对象。

Label标签可以用户自定义

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

Ingress:的作用:

 k8s集群对外暴漏提供访问的接口。属于应用层,七层代理,转发的是http请求 http/https   service是四层转发,转发的是流量。

Namespace:

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

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

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

工作过程

首先认证主节点

k8s管理员访问集群的第一步  auth(权限验证,有权限才能访问),API-server 提供集群的统一访问接口(调用集群内部的各个服务,收集集成信息保存到<etcd>所有集群信息)----->kube-contronller-manager(节点控制器)---> kube-schudel(调度器)主节点认证完成之后。

(kubelet)节点的监控器,管理node节点上的docker资源----> (kube-proxy)代理服务,负责代理pod节点的网络地址.

当客户端来访问节点:  客户端通过防护墙访问kube-proxy(kube-proxy对应pod的server)获取容器内部的资源

调度节点(kube-schudel)形成新的pod,会把pod指定安排到指定的容器上(创建pod的过程)

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

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

相关文章

nodejs+vue+ElementUi大学新生入学系统的设计与实现1hme0

采用B/S模式架构系统&#xff0c;开发简单&#xff0c;只需要连接网络即可登录本系统&#xff0c;不需要安装任何客户端。开发工具采用VSCode&#xff0c;前端采用VueElementUI&#xff0c;后端采用Node.js&#xff0c;数据库采用MySQL。 涉及的技术栈 1&#xff09; 前台页面…

简析SoBit 跨链桥图文教程

从BTC网络到Solana网络桥接BRC20 1.打开SoBit平台&#xff1a;在您的网络浏览器中启动SoBit Bridge应用程序。 2.连接您的钱包&#xff1a; 选择SoBit界面右上角的比特币网络来连接您的数字钱包。 3.选择源链、目标链和您想桥接的代币&#xff1a; 从下拉菜单中选择’BTC’作为…

项目应用多级缓存示例

前不久做的一个项目&#xff0c;需要在前端实时展示硬件设备的数据。设备很多&#xff0c;并且每个设备的数据也很多&#xff0c;总之就是数据很多。同时&#xff0c;设备的刷新频率很快&#xff0c;需要每2秒读取一遍数据。 问题来了&#xff0c;我们如何读取数据&#xff0c…

支付宝、学习强国小程序input、textarea数据双向绑定

前言 和 vue 的绑定有些区别&#xff0c;需要注意。直接 value"{{inputValue}}" 是无法双向绑定的。 正确思路 文档说的比较详细&#xff0c;不过没有组合使用的案例&#xff0c;需要自行理解。这里正确的方法是先用 value 绑定数据&#xff0c;再使用 onInput 事件…

关于Sneaky DogeRAT特洛伊木马病毒网络攻击的动态情报

一、基本内容 作为复杂恶意软件活动的一部分&#xff0c;一种名为DogeRAT的新开源远程访问特洛伊木马&#xff08;RAT&#xff09;主要针对位于印度的安卓用户发动了网络安全攻击。该恶意软件通过分享Opera Mini、OpenAI ChatGOT以及YouTube、Netfilx和Instagram的高级版本等合…

7.7、kali linux环境下搭建DVWA

目录 一、资料下载准备工作 1.1、DVWA源代码下载 二、开启Apache、mysql服务 2.1、下载Apache2文件 2.2、开启Apache2服务 方法一&#xff1a;开启Apache2服务&#xff08;手动&#xff09; 方法二&#xff1a;开启Apache2服务&#xff08;系统自启动&#xff09; 2.3、…

面试题之二HTTP和RPC的区别?

面试题之二 HTTP和RPC的区别&#xff1f; Ask范围&#xff1a;分布式和微服务 难度指数&#xff1a;4星 考察频率&#xff1a;70-80% 开发年限&#xff1a;3年左右 从三个方面来回答该问题&#xff1a; 一.功能特性 1)HTTP是属于应用层的协议&#xff1a;超文本传输协议…

TypeScript下载安装,编译运行

TypeScript是拥有类型的JavaScript超集&#xff0c;它可以编译成普通、干净、完整的JavaScript代码。 简单理解&#xff1a;TypeScript就是加强版的JavaScript。 TypeScript最终会被编译成JavaScript代码&#xff0c;那么我们必然需要对应的编译环境 环境搭建前提&#xff1a…

Upload上传图片,回显图片,编辑图片,限制图片,不显示上传图标,图片放大功能

效果图&#xff1a; 新增、编辑时&#xff1a;限制上传四张&#xff0c;当超过四张隐藏上传图标 图片放大 &#xff1a;效果图 详情&#xff1a;回显时不显示上传图标 页面&#xff1a;template 部分 图片在前端存储&#xff0c;提交时一并给后端 :file-list"repairPlan…

python 通过opencv及face_recognition识别人脸

效果&#xff1a; 使用Python的cv2库和face_recognition库来进行人脸检测和比对的 0是代表一样 认为是同一人。 代码&#xff1a; pip install opencv-python pip install face_recognition# 导入cv2库&#xff0c;用于图像处理 import cv2 # 导入face_recognition库&#…

Java框架基础--maven,http,postman

maven Maven 提供了一个标准的构建生命周期和一组约定的目录结构&#xff0c;以简化和规范项目的构建过程。它主要用于 Java 项目&#xff0c;但也可以用于其他类型的项目。提高了项目的可维护性、可重复性和一致性&#xff0c;简化了构建和依赖管理的复杂性&#xff0c;使得开…

python:改进型鳟海鞘算法(SSALEO)求解23个基本函数

一、改进型鳟海鞘算法SSALEO 改进型鳟海鞘算法&#xff08;SSALEO&#xff09;由Mohammed Qaraad等人于2022年提出。 参考文献&#xff1a;M. Qaraad, S. Amjad, N. K. Hussein, S. Mirjalili, N. B. Halima and M. A. Elhosseini, "Comparing SSALEO as a Scalable Larg…

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

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

Node.js版本对比

目录 1. node版本与Npm版本对照表 2. node版本与node-sass版本对照表 3. node-sass与sass-loader版本对照表 1. node版本与Npm版本对照表 以往的版本 | Node.js 下面显示最新的对应内容&#xff0c;如果需要查找历史版本&#xff0c;可以进入上面的页面查询 VersionLTSDateV8np…

ios 之 数据库、地理位置、应用内跳转、推送、制作静态库、CoreData

第一节&#xff1a;数据库 常见的API SQLite提供了一系列的API函数&#xff0c;用于执行各种数据库相关的操作。以下是一些常用的SQLite API函数及其简要说明&#xff1a;1. sqlite3_initialize:- 初始化SQLite库。通常在开始使用SQLite之前调用&#xff0c;但如果没有调用&a…

【宇宙猜想】AR文创入驻今日美术馆、北京天文馆等众多展馆,在AR互动中感受科技魅力!

近日&#xff0c;由「宇宙猜想」推出的AR系列文创产品先后入驻今日美术馆、北京天文馆、国家自然博物馆、上海天文馆、国家海洋馆、中华手工展馆等各大馆场并与其展开相关合作。 「宇宙猜想」致力于创造虚拟空间价值&#xff0c;用AR技术与文创产品碰撞出新的火花&#xff0c;为…

【PTA】L1-016 验证身份(C++)

题目链接 &#xff1a; 题目要求&#xff1a; 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0…

LabVIEW快速入门

参考&#xff1a; 知乎labview快捷键 https://www.zhihu.com/question/287709225github 上 LabVIEW教程 https://lv.qizhen.xyz/LabVIEW 参考书籍 链接&#xff1a;https://pan.baidu.com/s/1irc0iftM0Gg3GCN2cBHCKw?pwdy1mz 提取码&#xff1a;y1mz --来自百度网盘超级会员V…

华为ipv6配置之ospf案例

R1 ipv6 ospfv3 1 router-id 1.1.1.1 //必须要手动配置ospf id&#xff0c;它不会自动生成 interface GigabitEthernet0/0/0 ipv6 enable ipv6 address 2000::2/96 ospfv3 1 area 0.0.0.0 interface LoopBack0 ipv6 enable ipv6 address 2001::1/96 ospfv3 1 area 0.0.0.0 R2…

java进阶学习笔记

学习java深度学习&#xff0c;提升编程思维&#xff0c;适合掌握基础知识的工作者学习 1.反射和代理1.1 概念介绍1.2应用场景1.3 反射-reflect1.3.1 获得类-Class1.3.2 获得类的字段-Field1.3.3 动态访问和修改对象实例的字段1.3.4 获得类方法-Method1.3.5 调用方法.invoke1.3.…