k8s学习之体系架构介绍

CharlesYan CharlesYan     2023-01-28     676

关键词:

Kubernetes整体架构

  • 内容介绍

    每个Kubernetes集群都有两种类型的节点:master 和 worker

    master负责控制和监控worker工作集群

  • 整体组成

master构成

  • 整体图例

  • etcd

    作为数据库,所有kubernetes对象、当前状态、访问信息、集群配置信息…,都存在这。

  • API Server

    暴露集群操作的端点,master和worker上的组件都需要访问api server,以便完成自己的工作。

  • Scheduler

    调度程序,负责决定哪个工作由哪个机器干。

  • Control Manager

    控制管理器,监视集群的状态(通过调用API服务器来获取此数据)并采取措施将其置于预期状态

worker构成

  • 整体图例

  • kubelet

    worker节点的核心,与master的api server沟通,运行调度到本节点的容器

  • kube Proxy

    使用IP表/IPVS处理Pod的网络需求

  • Pod

    kubernetes 运行容器的主力提供了容器间联网的能力

    一个pod可以有多个容器,这些容器中的应用相互间都视为本地。

    pod的网络接口提供了一个机制,使其可以与本节点或其他节点上的pod进行网络连接

    每个pod都会被指定一个IP,kube-proxy将使用该IP地址来路由流量,而且此IP地址仅在集群中可见

    一个pod中挂载的数据卷可以被pod内所有容器看到,因为Pod中有一个叫Pause的根容器,其余的用户业务容器都是共享这个根容器的IP和Volume。例如,你的 APP 是一个图片上传应用,把图片保存在一个数据卷中,同一个 pod 中的其他容器可以监控这个数据卷,发现有新图片时,就开始处理,例如缩放多个尺寸的图片、上传到云存储。

Controller控制器

  • 内容介绍

    kubernetes中有很多控制器,例如ReplicaSet、Replication Controller、Deployments、StatefulSets和Service等。

    他们都控制pod的对象,下面介绍几个重点的控制器:

  • ReplicaSet

    主要职责是根据给定的Pod创建副本。如果一个pod挂了,这个控制器就会得到通知,立马创建一个新的。

  • Deployment

    使用ReplicaSet来管理副本。提供了滚动升级的能力,扩展新的,缩减旧的。

  • Service

    类似于一个负载均衡器一样,向相应节点分派包。可以跨worker节点构建一个pod组(通常是根据pod标签)

    例如你的前端应用、后端应用,各自都有很多个实例在运行,前后端怎么沟通?

    前端只需要知道后端各个实例的访问地址,硬编码后端IP的方式显然不能用,那么就需要把后端实例组成一个 service,前端只需要访问这个 service,由 service 对其中的后端实例进行流量负载均衡转发

    一旦service被创建,K8S会为其分配一个集群内唯一的IP,叫做ClusterIP,而且在service的整个生命周期中,ClusterIP不会发生变更,这样一来,就可以用与Docker Swarm类似的操作,建立一个ClusterIP到服务名的DNS域映射即可。

  • Ingress

    Ingress(入口)控制器是和外部世界沟通的唯一入口。外部世界通过Ingress与集群中的所有服务沟通,就像是一个网关,方便我们在一个地方统一设置安全策略、监控、记录日志。

其他

Label

  • 内容介绍

    Label本质是一个键值对,具体的值由用户决定。Label就是标签,可以打在Pod上,也可以打到Service上。总结来说,Label与被标记的资源是一个一对多的关系

  • 举例说明

    例如,我们给Pod打上了role=serviceA的标签,那么只需要在Service中的Label Selector中加入刚刚那个标签,这样一来,Service就可以通过Label Selector找到打了同一个Label的Pod副本集了。

参考链接

  • 图解 Kubernetes

    https://www.cnblogs.com/yogoup/p/12122676.html

  • 简单了解一下K8S,并搭建自己的集群

    https://zhuanlan.zhihu.com/p/97605697

物联网架构成长之路(24)-docker练习之compose容器编排(代码片段)

0.前言  一开始学的之后,是想一步到位直接上Kubernetes(K8s)的,后面没想到,好像有点复杂,有些概念不是很懂。因此学习东西还是要循序渐进,慢慢来。先了解单机编排技术DockerCompose,了解一些技术细节及原理后,在入手K8s... 查看详情

spring源码学习之beanfactory体系结构

一.BeanFactoryBeanFactory是SpringIOC容器的鼻祖,是IOC容器的基础接口,所有的容器都是从它这里继承实现而来。可见其地位。BeanFactory提供了最基本的IOC容器的功能,即所有的容器至少需要实现的标准。      BeanF... 查看详情

架构模式学习之blackboard模式

1.定义:黑板模式是一种常用的架构模式,应用中的多种不同数据处理逻辑相互影响和协同来完成数据分析处理。就好像多位不同的专家在同一黑板上交流思想,每个专家都可以获得别的专家写在黑板上的信息,同时也可以用自... 查看详情

我的rabbitmq学习之1(介绍)

官方网址:http://www.rabbitmq.com 我翻译官网的文档,仅供自己学习用...................RabbitMQ 是什么,它就是一个消息队列,用在哪里,用在不需要及时处理的地方,比如发送验证码,发送邮件等等,多用户订阅,最大化发挥... 查看详情

机器学习之anaconda介绍

AnacondaDistribution最受欢迎的Python/R数据科学发行版轻松安装1,400多个Python/R数据科学包并管理您的包,依赖项和环境-只需单击一下按钮即可。免费和开源。?数据科学图书馆Anaconda数据科学图书馆超过1,400个Anaconda策划和社区数据科... 查看详情

spark学习之lambda架构日志分析流水线

单机运行一、环境准备Flume1.6.0Hadoop2.6.0Spark 1.6.0Javaversion1.8.0_73Kafka2.11-0.9.0.1zookeeper3.4.6 二、配置spark和hadoop配置见()kafka和zookeeper使用默认配置1、kafka配置启动bin/kafka-server-start.shconfig/server.prope 查看详情

架构学习之aarch64内存模型

本文翻译自文档Learnthearchitecture_aarch64memorymodel1Overview        本指导介绍Armv8-A中的内存模型。它开始于解释描述内存的属性来自哪里以及它们是如何被赋予给内存区域。然后它介绍有效的不同属性和memoryorder的基础。     ... 查看详情

驱动学习之led驱动框架

一:什么是驱动框架 (1)内核中驱动部分维护者针对每个种类的驱动设计一套成熟的、标准的、典型的驱动实现,然后把不同厂家的同类硬件驱动中相同的部分抽出来自己实现好,再把不同部分留出接口给具体的驱动开发工程... 查看详情

数据库学习之十四:读写分离atlas架构(代码片段)

十四、读写分离Atlas架构1、安装软件rpm-ivhAtlas-2.2.1.el6.x86_64.rpm2、修改配置cd/usr/local/mysql-proxy/vim/usr/local/mysql-proxy/conf/test.cnf[mysql-proxy]admin-username=useradmin-password=pwdproxy-backend-addresses=10. 查看详情

(转)django学习之第一章:django介绍

Django:Python编程Web框架如果你上djangoproject.com你会发现对Django的如下解释:“Djangoisahigh-levelPythonWebframeworkthatencouragesrapiddevelopmentandclean,pragmaticdesign.”让我们展开来看Django是高级Web框架高级Web框架免去了构建动态Web站点的痛苦,... 查看详情

gradle学习之插件介绍(代码片段)

目录一、Gradle设计介绍二、Gradle插件介绍1.二进制插件2.脚本插件3.应用第三方发布的插件一、Gradle设计介绍Gradle的扩展性十分强,它本身提供基本的概念和整体的核心框架,其他的具体场景逻辑,都是以插件的形式进... 查看详情

dpdk学习之开篇介绍

1、前言  记得刚开始工作的时,老大将我安排到数据面组,当时第一次听说”数据面“这个概念,感觉挺新鲜的。误打误撞就开始搞了,刚开始接触的时候,由于不懂其中的原理,觉得很神奇,因为报文的转发是在应用... 查看详情

机器学习之算法介绍

什么是程序(Program)计算机程序,是指为了得到某种结果而可以由计算机(等具有信息处理能力的装置)执行的代码化指令序列(或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列)。通俗讲,计算... 查看详情

tensorflow源码学习之一--tf架构

目前总共4篇:tensorflow源码学习之一--tf架构tensorflow源码学习之二--clienttensorflow源码学习之三--mastertensorflow源码学习之四--worker  tensorflow的架构图如下:我们主要使用的是Pythonclient+CAPI+Distributedmaster+Dataflowexecutor(worker&am 查看详情

android开发学习之控件架构与自定义控件(代码片段)

(学习参考书:Android群英传)一、Android控件架构Android中的控件大致被分为两大类,即ViewGroup控件和View控件。ViewGroup控件作为父控件可以包含多个View控件,并对其进行管理。通过ViewGroup整个界面上的控件形成... 查看详情

android开发学习之控件架构与自定义控件(代码片段)

(学习参考书:Android群英传)一、Android控件架构Android中的控件大致被分为两大类,即ViewGroup控件和View控件。ViewGroup控件作为父控件可以包含多个View控件,并对其进行管理。通过ViewGroup整个界面上的控件形成... 查看详情

分布式架构学习之:015--activemq的安装与使用(单节点)

ActiveMQ的安装与使用(单节点)IP:192.168.4.101环境:CentOS6.6、JDK71、安装 JDK并配置环境变量(略)JAVA_HOME=/usr/local/java/jdk1.7.0_722、下载 Linux版的 ActiveMQ(当前最新版 apache-activemq-5.11.1-bin.tar.gz)$wgethttp:/ 查看详情

springcloud学习之-什么是springcloud?

SpringCloud什么是微服务?要想学习微服务,首先需要知道什么是微服务?为什么会有微服务?相信看完架构的发展史读者就会明白架构发展史单体应用架构如图所示:将所有的模块,所有内容(页面、Dao、Service、Controller)全部写入... 查看详情