1、k8s基本概念

news/2025/2/8 16:58:10 标签: kubernetes, k8s

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.niftyadmin.cn/n/5845119.html

相关文章

深浅拷贝~

深浅拷贝:直接赋值给的是地址,如果修改赋值后的变量,实际上连同原变量的值一并修改了。 浅拷贝 展开运算符 {...obj} 拷贝对象 Object.assign(新,旧) 深拷贝 递归:自己调用自己 以下实际是浅拷贝 递归调用处理数组问题…

从零开始:CentOS 7系统中Docker的安装与卸载全记录

准备工作 检查系统环境,确认你的操作系统是CentOS 7,并且处于最新状态(包括更新软件包) 使用cat命令来查看/etc/centos-release文件的内容。这个文件包含了CentOS操作系统的版本信息。 打开终端。输入以下命令并按下回车键&…

web前端对于后台界面的开发(综合运用)

<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>后台管理系统首页</title><link rel"…

Docker安装pypiserver私服

Docker安装pypiserver私服 1 简介 Python开源包管理工具有pypiserver、devpi和Nexus等&#xff0c;pypiserver安装部署比较简单&#xff0c;性能也不错。 搭建pypiserver私服&#xff0c;可以自己构建镜像&#xff0c;也可以使用官网的docker镜像。 # Github地址 https://g…

Docker在安装时遇到的问题(第一部分)

一、在用docker-config-manager安装yum源时出现错误 [rootlocalhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 已加载插件&#xff1a;fastestmirror, langpacks adding repo from: https://download.docker.com/linux/ce…

IEEE 802.3/802.2 | LLC / SNAP

注&#xff1a;本文为 “IEEE 802.3/802.2 | LLC / SNAP” 相关文章合辑。 未整理去重。 第三篇部分内容出自第二篇。 802.2 协议 haoay321 2010-01-28 20:52:02 LLC 协议 LLC&#xff08;Logic Link Control&#xff0c;逻辑链路控制&#xff09;是 IEEE 802.2 协议中规定…

Milvus 存储设计揭秘:从数据写入到 Segment 管理的全链路解析

作为一款云原生向量数据库&#xff0c;Milvus 的高效查询性能有赖于其独特的存储架构设计。然而&#xff0c;在实际使用过程中&#xff0c;许多社区用户常常会遇到以下问题&#xff1a; 为什么频繁调用 flush 后&#xff0c;查询速度会变慢&#xff1f; 数据删除后&#xff0c;…

音频文件格式——AAC、OGG和FLAC

3.AAC文件格式 3.1 封装格式解析 高级音频编码 &#xff08;Advanced Audio Coding&#xff09; 是一种用于有损数字音频压缩的音频编码标准。它被设计为 MP3 格式的继承者&#xff0c;在相同比特率下通常可以获得比 MP3 更高的音质。AAC有两种封装格式&#xff1a; ADIF&am…