容器技术之快速了解K8S各抽象资源及组件架构

带你快速了解Kubernetes主要概念和组件架构。

Kubernetes的组件和架构比较多,功能也比较多。

如果详细探讨,每个Kubernetes组件都可以单独写篇博客详细讲解。

我们这里是快速了解,就写的相对比较简单一些。

主要是针对不熟悉Kubernetes的朋友,能够快速的了解一下Kubernetes的组件功能。对Kubernetes有一个直观的印象。

 


目录

一、快速了解kubernetes的主要概念

1、Pod

2、ReplicaSet

3、Deployment

4、Label

5、Service

二、快速了解kubernetes的主要架构

1、Master

2、Worker Node


一、快速了解kubernetes的主要概念

kubernetes架构中主要分为两个角色:Master和Worker Node。

在这两个角色中,都分别存在多个组件来支持Kubernetes的内部逻辑。

要熟悉这些组件,我们先要了解Kubernetes的一些常见的抽象概念及资源类型。

 

1、Pod

Pod是kubernetes中最小的调度单位,可以把他理解成在集群上运行的进程。

Pod里面可以运行单个容器或者运行多个需要协同工作的容器。

Pod运行在一个Worker Node中,这个Worker Node可以是物理机,也可以是虚拟机。

一个Worker Node中可能会有很多个Pod同时运行。

多个Pod可以协同工作。

在Pod中,有一个容器叫pause,这个是当前pod中所有容器的父容器,也叫基础容器。

pause启用PID的命名空间,pause的PID为1。

pause负责Pod中的容器的健康检查。

如果我们在Pod中部署两个容器,分别叫Container1和Container2。

那么Container1和Container2就会共享pause容器的网络栈,他们之间的通讯就会更快。

他们之间的关系是这样的:

 

2、ReplicaSet

ReplicaSet是一个副本集,简称RS。

它的作用就类似于Pod的负载均衡器。

通常情况下,ReplicaSet用于实现Pod的高可用性。

就是说呢,如果有Pod异常退出,会自动创建新的 Pod 来代替;并且自动回收异常退出的Pod。

 

3、Deployment

Deployment一般是用于滚动部署更新的组件。

更新Deployment的时候,会自动创建ReplicaSet,并自动启动新的pod

Deployment会自动实现ReplicaSet的创建和销毁的过程,并自动对新老Pod进行替换。

 

4、Label

Label是以key/value键值对的方式存在,比如app:nginx。

Label就像一个标签,可以贴到很多对象上。比如Pod,Service,Node,ReplicaSet等等。

Label可以在创建对象的时候贴上去;也可以在对象创建以后再添加或者修改。

贴上Label以后,我们就可以通过调用Label,来调用对象。

每个Label必须是唯一的。

 

5、Service

Service是一个抽象的api对象。

Service可以成为多个后端Pod代理。

Service可以通过Selector指定Label名称,通过Label Selector来调用对象,比如调用Pod。

Service可以通过ClusterIP,让外部的客户端client可以直接访问到内部的Pod。

我们可以把Service理解成一个桥梁,对内串联Pod或Pod组,对外串联客户端。

Service的本质是一个四层代理服务。

 

二、快速了解kubernetes的主要架构

Kubernetes是主从分布式架构。

Kubernetes主要包括两种角色:Master Node和Worker Node。

Master Node是主节点,也叫控制节点。

Worker Node是工作节点。

有时候,也会直接把主节点叫做Master,工作节点叫做Node。

我们分别说一下这两类节点:

 

1、Master

Master负责Kubernetes集群的控制和管理,是整个Kubernetes的控制中心。

Master通常至少都需要占据单独一台服务器,生产环境建议部署三台以实现高可用。

Master中包含了四种重要的服务,分别是:ApiServer、Scheduler、Controller Manager和Etcd。

 

1.1、ApiServer

ApiServer提供HTTP/HTTPS RESTful API。

ApiServer是整个kubernetes集群的中枢神经,是整个集群增删改查的唯一入口。

ApiServer串联了其他组件之间的数据交互。

ApiServer提供集群管理的授权、访问控制、发现、认证等等功能。

ApiServer是Etcd唯一的代理。

ApiServer部署在master节点上。生产环境中master节点通常会做成高可用。

 

1.2、Scheduler

Scheduler是一种调度器。

Scheduler会收集每个Worker资源的详细信息及运行情况,包括CPU、内存等。

Scheduler会收集每个Worker上运行什么服务。

Scheduler有自己的算法,在调度前会进行分析,然后会安排Pod到具体的worker节点上。

 

1.3、Controller Manager

Controller Manager包括了很多的Controller,它可以对Pod进行副本管理。

Controller Manager是处理kubernetes集群中常规任务的后台线程,它也是一个守护进程。

Controller Manager通过ApiServer监视kubernetes集群的共享状态,确保整个集群处于预期的工作状态。

Controller Manager是kubernetes高可用的保证。

 

1.4、Etcd

Etcd是一个存储组件,就像是Kubernetes集群的数据库。

Etcd会存储整个kubernetes集群状态。比如各个Node的信息和状态等。

Etcd作为一个节点是相对独立的。

只有ApiServer才能和Etcd进行通讯,Etcd会为ApiServer的操作记录持久化。

Etcd不光可以存储,还可以监听。

Etcd的键值发生变化会通知ApiServer,由ApiServer去通知客户端。

因为Etcd的重要性,生产环境中Etcd最好部署多台,实现高可用。

 

 

2、Worker Node

Worker Node也叫Node,顾名思义,就是工作节点。我们Kubernetes的程序应用就会部署在这里。

Node主要就是为Pod提供一个运行的环境,以及可以对Pod进行操作的空间。

Node受Master的管理。

Node主要由Kuberlet、Container Runtime、kube-proxy组件构成。

下面快速说一下这三个组件:

 

2.1、Kubelet

每个Worker Node上都有Kubelet,Kubelet就像是Node的客户端。

Kubelet会监听和维护Pod的生命周期。

当Master上的Scheduler确定了某个Node后,就会把Pod的配置信息发送给这个Node的kubelet,

kubelet就会根据这些配置信息自动创建和运行容器。

 

2.2、Container Runtime

每个Worker Node上都有Container Runtime。

Container Runtime负责下载image并运行容器,它提供一个容器运行环境

Kubernetes的Container Runtime支持的容器有很多,最常见的就是Docker

 

2.3、kube-proxy

kube-proxy就是一个代理,它可以转发Service的请求到Pod。

kube-proxy可以实现一个内部Pod的负载均衡。

 

 

参考文章:

  • https://blog.csdn.net/fangfu123/article/details/105792826

 

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

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

相关文章

Python可视化神器之pyecharts

目录 概述安装参数实例 柱状图-Bar饼图-Pie折线图-Line散点图-scatter3D 柱状图-Bar3D仪表盘-Gauge雷达图-Radar词云图-WordCloud地理坐标系-Geo地图-Map概述 Pyecharts是一款将python与echarts结合的强大的数据可视化工具。使用 pyecharts 可以生成独立的网页,也…

腾讯的强大不是偶然,小马哥很强大

为什么80%的码农都做不了架构师?>>> 其实自己对于腾讯没什么好感,不过也没有太多的坏感,之前还有一篇日志,小批评了一下腾讯,今天看到小马哥写给内部员工的反思邮件。记录下两点提醒自己:对待敌…

计算机三级网络技术第一道大题 网络地址 主机号 直接广播地址 网络技术

加粗样式#计算机三级网络技术 ##网络地址,直接广播地址,主机号,子网中第一个可以IP地址,子网中最后一个可用IP地址 这是我在备考计算机三级网络技术中,写的几个例题,有哪里错的,还请大佬们帮忙纠…

SQL Server2008 附加数据库时出错

开机后附加数据库失败: 1.正常操作附加数据库。 右键单击sqlserver中的数据库,选择【附加】左击【添加】,选择文件路径,左击【确定】,之后弹出“附加数据库时出错”:确定,继续下一步进而查看原因,如图&…

j2me 学习资料

为什么80%的码农都做不了架构师?>>> 1:J2ME移动应用开发实战视频教程 http://www.pconline.com.cn/pcedu/videoedu/asp/0809/1425959.html 转载于:https://my.oschina.net/sunyh/blog/10534

VSTO应用程序中加入键盘钩子

在VSTO应用程序中有时为了处理一些快捷按键操作等实现一些特殊的功能,此时需要对键盘进行挂钩,此时使用P/Invoke函数实现,参考如下: VSTO加载和卸载时进行钩子的初始化和卸载 代码 KeyboardHook hook;privatevoidThisAddIn_Startu…

深入理解JavaScript中的this关键字

在JavaScript中this变量是一个令人难以摸清的关键字,this可谓是非常强大,充分了解this的相关知识有助于我们在编写面向对象的JavaScript程序时能够游刃有余。 对于this变量最要的是能够理清this所引用的对象到底是哪一个,也许很多资料上都有自…

NET中使用Identity+CodeFirst+Jwt实现登录、鉴权

目录 前言 一、创建上下文类 1.自定义MyContext上下文类继承IdentityDbContext 2.在Program中添加AddDbContext服务 二、使用Migration数据迁移 1.在控制台中 依次使用add-migration 、updatebase 命令 2.如何修改表名 3.如何自定义字段 三、使用Identity实现登录、修改密码 …

LYNC解决方案巡展

今天有幸参加了微软的LYNC解决方案巡展,也捕捉到一些镜头。和大家分享一下。 酒店入口的易拉宝。这个酒店的海鲜自助不错,可惜不是旋转餐厅。 微软中国及大中华区信息工作者业务群峰鹰巩的演讲。不过是纯英文的,没有翻译。我觉得微软在这些方…

巨额流量费其实可以避免

巨额流量费其实可以避免<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />“史上最贵微博”一度被人们热议。说是运营商的错&#xff0c;而运营商也很无奈&#xff0c;本来这种事情就非运营商所能掌控的。其实天价流量看似可怕其实…

渗透测试岗位面试题(重点:渗透测试思路)

转载自公众号&#xff1a;alisrc 本文主要是讲解遇到问题的各思路解决方法&#xff0c;不仅可做为面试题查看&#xff0c;在实操中收到思绪的阻碍也可作为参考. 1、拿到一个待检测的站&#xff0c;你觉得应该先做什么&#xff1f;1)信息收集1&#xff0c;获取域名的whois信息,获…

使用Symantec Altiris 来监控 Dell 服务器 的 硬件

最近一直在折腾DMC 监控 Dell 服务器&#xff0c; Altiris 6 对Dell的监控策略会丰富很多 &#xff0c;到了 7 严重缩水&#xff0c;6的策略又不能转化成7 ~~比较郁闷~~ 唯有自己去写不过最算给我写完了大部分常用的~~ 主要是 电源、电压、风扇、温度、处理器、内存、电池 等等…

AD+DNS安装步骤详解

一.安装ADDNS准备工作&#xff08;虚拟机使用VPC&#xff09; 1.准备一台纯净版的Windows Server2003&#xff0c;并且设置只有一块网卡其属性为Local only。 2.配置网卡IP地址&#xff0c;一定要设置DNS服务器地址。若是第一台域控制器&#xff08;AD&#xff09;&#xff0c;…

第一个Android工程HelloAndroid

2019独角兽企业重金招聘Python工程师标准>>> 从这一节我们将正式进入Android编程世界,希望大家多多给我留言以及提些建议.首先我们打开Eclipse选择左上方的菜单[File->New->Project->Android Project]双击后会出现新建Android工程对话框,如下图所示:如果你…

IP地址 子网掩码 网关

A类、B类、C类IP地址区别 IP地址&#xff08;其实这个是IPV4&#xff09;是一个32位的二进制数&#xff0c;由四个八位字段组成。每个IP地址包括两部分&#xff1a;一部分为网络标识&#xff0c;一部分为主机标识。 A类地址前8位为网络标识。后24位为主机标识 B类地址前16位为网…

用FileZilla Server搭建ftp服务器

用FileZilla Server搭建ftp服务器 1.先在浏览器搜索 filezilla server 2.点开FileZilla软件的官网&#xff0c;下载该软件 3.下载完成后&#xff0c;按照操作流程一步步完成安装 4.打开filezilla Server软件&#xff0c;运行该软件&#xff0c;使FTP Server运行起来 5.…

不使用Vmware easy install 安装

进行了多次ubuntu的安装&#xff0c;始终发现ubuntu很多命令都没有安装到&#xff0c;用起来十分不方便&#xff0c;连最基本的init等命令都不具备&#xff0c;开始怀疑是版本的问题&#xff0c;尝试了多次&#xff0c;依旧无法解决。后来重新安装虚拟机的时候发现 选择Instal…

centos配置网络笔记

centos配置笔记 &#xff08;1&#xff09; 2021.1.12 hyp 1.使用net模式连接主机网络 1.1首先配置本机网络 在本地连接的属性中开启共享选择虚拟机网络VMnet8 配置VMnet8 的IPv4属性 1.2配置虚拟机网络设置 配置网络相关ip 2.centos便捷设置网络 在安装界面中开启网络…

ip,子网与子网掩码

ip&#xff0c;子网与子网掩码 2021.1.13 hyp 1.概念 IP是一个网络地址&#xff0c;一个网络地址可以划分多个网段称为子网&#xff0c;通过子网掩码可以计算出划分子网的主机数 2.子网 子网掩码为255.255.255.0 的IP地址192.168.2.5的可用主机地址数为254个 3.计算子网…

DZ论坛系统 UC_KEY拿webshell

关于DZ后台拿shell&#xff0c;很多同志都很苦恼是把&#xff0c;&#xff0c;不过最近外面看到一篇文章&#xff0c;应该 才出来的把&#xff0c;&#xff0c;这里给大家发出来把&#xff0c;。。 转载者&#xff1a;littleli 我们只要得到UC_KEY&#xff0c;提交数据就可以修…