1、k8s基本概念

devtools/2025/2/12 6:45:07/

k8s概述

用于自动部署,自动扩展和管理“容器化应用程序”的开源系统。k8s是google基于go语言开发的自动化运维管理容器。

k8s的全称:kubernetes

k8s的版本:1.20------------用的最多的版本,1.18-1.21(1.24------------>k8s的镜像不再使用docker,containerd)。

k8s优势

1、docker是单机模式,不能实现跨主机部署,无法实现集群化

2、docker不能实现高可用和负载均衡。docker没有自愈机制(docker应用一旦报错,就会进入停止状态,不能自动恢复)。

3、随着容器数量的上升,管理成本也跟着一起攀升。

4、docker没有预设模板,无法实现快速,大规模的容器的调度。

5、docker没有生命周期的管理工具,没有图形化工具。

k8s是管理容器化部署的微服务管理工具。

k8s的组件和功能

架构

采用主从架构模式

主节点master:所有的操作都在主节点。

从节点node:工作节点,主节点发出的指令,在工作节点完成和实施。

主节点也可以作为工作节点,也可以进行容器应用程序的部署。(一般不用)

核心组件

master组件

1、kube-apiserver:是集群的核心的核心,所有的操作都是由apiserver调用集群内其他组件实现,apiserver也是整个集群的入口,访问apiserver来访问集群,apiserver一旦故障,整个集群都将无法使用。

所有对象和资源的增删改查和监听都是由apiserver来实现的,所有的信息的变更,都是由apiserver处理,处理完之后交给etcd进行保存。

2、etcd:是k8s集群自己的存储服务,类似于数据库,etcd是一个分布式键值存储系统,集群的所有信息都保存在etcd,k8s的配置信息也保存在这里。etcd只能是奇数台,只有apiserver可以访问etcd,读写权限。其他组件只能通过apiserver的接口才能够获取etcd的数据。——配置存储中心。

3、kube-scheduler:调度控制器,根据用户设置的调度算法,为新创建的pod选择一个合适的node节点。k8s所有node节点的调度器,用户要部署应用时,scheduler会根据调度算法选择一个最合适的节点部署pod。(先预选策略,再优先策略

4、kube-controller-manager:运行管理控制器,在k8s集群中,一个资源对应一个控制器,controller-manager就是来管理这些控制器。

控制器的类型

1、node controller:节点控制器,节点出现故障时发现和响应。

2、replication controller:副本控制器,k8s集群中,一个资源对象可以创建多个副本,也就是有多个pod。pod的数量定义好之后,副本控制器来进行管理(pod的数量可以动态的变化)

3、endpoints controller:端点控制器,service和pod之间的对应关系,负载监听service和pod之间的变化关系。访问指定的服务,必须要知道对应的endpoint。

4、service account & token controller:账户和令牌控制器,为新的命令空间内创建默认账户和api访问的令牌。

5、resourcequota controller:资源配额控制器,pod可以在配额的情况下使用系统资源。

6、namespace controller:命令空间控制器,管理namespace的生命周期。

7、service controller:服务控制器,k8s集群和外部的云平台之间的接口控制器。

node组件

1、kubelet: node节点的监视器,以及于master节点的通讯器。node节点上的信息,kubelet会定时向master汇报节点的情况(apiserver)并且接受来自master节点的指示,采取调整措施。

k8s集群中,每个node节点都会有一个kubelet,用来管理从节点的服务状态,信息等等,定时发送给master。

2、kube-proxy:在每个node节点上实现pod的网络代理。是service实现的载体,负责网络的规划和四层负载,写入iptables的数据包转发的规则,ipvs实现流量的分发。

3、docker: 容器引擎,拉去镜像,运行容器,都是由docker自己完成的。

数据流向图

pod

pod里面包含有容器,一个pod可以有多个容器,但是k8s集群管理的最小单位就是pod。

pod中的容器共享网络,存储,资源配额。

pod控制器

pod启动的模板,也属于controller-manager的一部分,当我们定义好模板之后(YAML文件),定义好之后,所有的pod都会按照这一模板创建。

pod控制器的类型

deployment:无状态应用部署,最常用的方式

replicaset:确保pod的数量。受控于deployment。

daemonset:确保所有节点都会运行一个pod。无法设置副本数。

statefulset:有状态部署,pod是按照序号排列,可以设定副本数。

job:一次性任务,根据用户的设置,任务执行完毕,pod就自动退出

cronjob:pod会按照定时任务执行,执行完毕退出。

k8s对外提供访问基本概念

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

pod service node replica label是一个键值对形式,key和value由用户来自行定义。

service-------------pod 1 2 3

k8s对外提供访问的方式

service:只要创建好了pod,集群一定会为pod分配一个全局独立的ip地址。但是pod的生命周期有限,pod的ip地址会发生变化。

service可以通过标签匹配pod的标签,就可以直接访问到对象pod的资源,无需再关联。

每个service都有一个固定的虚拟ip地址。cluster ip,只能局域网访问,自动的而且是动态的绑定后端的pod。

service有多种类型,都是基于四层的转发,ip+端口。通过kube-proxy,来实现网络的转发,转发的形式:iptables,ipvs(主流转发模式,性能最好)。适合内网使用。

ingress:对外提供访问,可以使用7层代理,可以使用域名。

namespace:命名空间,k8s集群做一个人为的划分,逻辑上的一种隔离方式,每个项目都在自己的命名空间内部署,互相隔离,互不干扰。


http://www.ppmy.cn/devtools/157633.html

相关文章

netty专栏导读

本篇主要作为netty专栏的导读和目录,可以花点时间了解下。 netty这个框架本人在实际开发中没有使用过,但是感觉挺重要的,所以自己看了些资料,并做了笔记,内容如果有错误请各位帮忙点出,大家一起共同进步&a…

Swipe横滑与SwipeItem自定义横滑相互影响

背景 vue项目&#xff0c;H5页面&#xff0c;使用vant的组件库轮播组件<Swipe>&#xff0c;UI交互要求&#xff0c;在每个SwipeItem中有内容&#xff0c;可自横滑&#xff0c;查看列表内容 核心代码 <template><Swipeclass"my_swipe":autoplay&quo…

DNS攻击方式有哪些,应该采取哪些应对措施?

在当今数字化时代&#xff0c;网络已成为人们生活和工作不可或缺的一部分。而 DNS&#xff08;域名系统&#xff09;作为互联网的关键基础设施&#xff0c;如同电话簿一般&#xff0c;将人们易于记忆的域名转换为计算机能够识别的 IP 地址&#xff0c;让我们能够轻松访问各类网…

战场物联网中的移动雾人工智能

论文标题 英文标题&#xff1a;Mobile Fog AI for Internet of BattleField Things (IoBT) 中文标题&#xff1a;战场物联网中的移动雾人工智能 作者信息 Sheuli Paul, DRDC, Canada Marius Silaghi, Veton Kepuska, Akram Alghanmi, Florida Institute of Technology, USA …

C# Winform怎么设计串口,客户端和相机控件界面显示

首先我们必须把这个类创建好 INIAPI using System; using System.Text; using System.Runtime.InteropServices;namespace Ini {public class IniAPI{#region INI文件操作/** 针对INI文件的API操作方法&#xff0c;其中的节点&#xff08;Section)、键&#xff08;KEY&#x…

MOSSE目标跟踪算法详解

1. 引言 MOSSE算法&#xff08;Multi-Object Spectral Tracking with Energy Regularization&#xff09;是多目标跟踪领域的一座里程碑式成果&#xff0c;被认为是开创性的工作&#xff0c;为后续研究奠定了重要基础。该算法通过创新性地结合频域特征分析与能量正则化方法&am…

计算机网络知识速记:三次握手

计算机网络知识速记&#xff1a;三次握手 一、三次握手的基础 在计算机网络中&#xff0c;TCP/IP协议是一种面向连接的协议&#xff0c;而三次握手则是建立TCP连接的关键步骤。其过程涉及到客户端和服务器之间的三次通信&#xff0c;确保双方准备好发送和接收数据。进行三次握…

Node.js中http模块(二)

一、http模块 http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer0) 方法&#xff0c;就能方便的把一台普通的电脑&#xff0c;变成一台 Web 服务器&#xff0c;从而对外提供 Web 资源服务。 二、域名和域名服务器 尽管 I…