第四章 云原生架构之Kubernetes基础知识

这篇具有很好参考价值的文章主要介绍了第四章 云原生架构之Kubernetes基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、K8S整体架构

1.1、概述

​ Kubernetes是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,简称 K8S。K8S的本质是一组服务器集群,可以在对应服务器集群的每个节点上运行程序,来对节点中的容器进行管理。类似Master-Work方式,每个服务器上安装特定的k8s组件,就可以形成集群,然后部署对应的应用即可。

(1)K8S常见功能

服务发现和负载均衡

  • Kubernetes 可以使用 DNS 名称或自己的 IP 地址来暴露容器。
  • 如果进入容器的流量很大, Kubernetes 能够自动实现请求的负载均衡分配网络流量,从而使部署稳定

存储编排

  • Kubernetes 允许自动挂载选择的存储系统,例如本地存储、云提供商存储等。

自动部署和回滚

  • 可以用k8s自动化部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
  • 当版本发布错误,可以立刻回退到之前的版本

自我修复

  • 如果某个容器宕机了,K8S 可以快速重新启动新的的容器,替换旧的容器

密钥与配置管理

  • K8S允许存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥

(2)K8S整体架构

​ K8S整体架构为Client-Server模型:

第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

(1)控制节点【Master-Node】:负责集群管管理

(2)工作节点【Worker-Node】:负责为集群提供运行环境
第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

1.2、K8S控制节点

​ 控制节点Master-Node,负责集群的管理,控制节点包含如下组件
第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes
(1)apiserver【资源入口】

​ 提供操作【k8s集群资源】的唯一入口,RESTful方式请求,并提供认证、授权、访问控制、API注册和发现等

(2)scheduler【计算】

​ 负责资源的调度,按照预定的调度策略,【计算】将Pod调度到相应的Node节点进行应用部署

(3)controller-manager【管理】

​ 控制器管理中心负责维护集群的状态,比如故障检测、滚动更新等,根据调度器的安排通知对应的节点创建pod。

(4)etcd【存储】

​ 存储中心,是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库

1.3、K8S工作节点

工作节点Worker-Node,负责为集群提供运行环境。Node是Pod真正运行的主机,可以是物理机也可以是虚拟机, Node本质上不是K8S来创建的, K8S只是管理Node上的资源,为了管理Pod,每个Node节点上至少需要运行container runtime(Docker)、kubelet和kube-proxy服务,具体如下:

第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

(1)kubelet

​ 相当于主节点派到工作节点的一个代表,用于管理本机容器(相当于master节点的化身),负责维护容器的生命周期也负责Volume(CVI)和网络(CNI)的管理

  • 主要职责

①控制Pod生命周期

②控制CSI生命周期

③负责CNI创建和访问规则

(2)kube-proxy

​ 负责为Service提供cluster内部的服务发现/网络代理/负载均衡等操作,为部署的应用程序提供访问入口,和apiserver是不一样的,后者用于操作k8s集群内部。

  • 核心职责:节点运行的负责创建Pod网络访问规则工具

(3)kude-dns

​ 作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,因此需要一个集群范围内的DNS服务来完成从服务名到ClusterIP的解析。

第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

(4)Ingress Controller

①Ingress概述

第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

​ Ingress 简单的理解就是你原来需要改 Nginx 配置,然后配置各种域名对应哪个 Service,现在把这个动作抽象出来,变成一个 Ingress 对象,你可以用 yaml 创建,每次不要去改 Nginx 了,直接改 yaml 然后创建/更新就行了。

②Ingress Controller

​ Ingress Controoler 通过与 Kubernetes API 交互,动态的去感知集群中 Ingress 规则变化,然后读取他,按照他自己模板生成一段 Nginx 配置,再写到 Nginx Pod 里,最后 reload 一下,工作流程如下图:

第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

2、K8S基本概念

2.1、Master

​ Master指的是集群控制节点(相当于整个集群的指挥中心),在每个Kubernetes集群里都需要有一个Master来负责整个集群的管理和控制。

2.2、Node

​ 除了master,k8s集群中的其他机器被称为Node节点,Node节点才是kubernetes集群中的工作负载节点。每个Node节点都会被master分配一些工作负载(docker容器),node节点上的docker负责容器的运行。

2.3、Pod

​ Pod是一组容器, 在K8S中,最小的单位是Pod, 一个Pod可以包含多个容器,但通常情况下我们在每个Pod中仅使用一个容器。


  • 形象化:可以把Pod理解成豌豆荚, Pod内的每个容器是一颗颗豌豆。
    第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

  • 分类如下:
    • 自主创建:直接创建出来的Pod,这种pod删除后就没有了,也不会自动重建
    • 控制器创建:通过控制器创建的pod,这类Pod删除了之后还会自动重建

2.4、Pod Controller

​ Pod Controller控制器是管理pod的中间层,只需要告诉Pod控制器,想要创建多少个什么样的Pod,它会创建出满足条件的Pod并确保每一个Pod资源处于用户期望的目标状态。如果Pod在运行中出现故障,它会基于指定策略重新编排Pod

  • 作用:通过它来实现对pod的管理,比如启动pod、停止pod、扩展pod的数量等等

  • 类型:ReplicaSet、Deployment、Horizontal Pod Autoscaler、DaemonSet等

2.5、Service

​ 在k8s里面,每个Pod都会被分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失,Service (服务)就是用来解决这个问题的,提供对外服务的统一入口,用于为一组提供服务的Pod 抽象一个稳定的网络访问地址

  • 注意事项:一个Service可以看作一组提供相同服务的Pod的对外访问接口,作用于哪些Pod是通过标签选择器来定义的

2.6、Label

​ K8S提供了Label【标签】机制来为Pod进行分类,同一类pod会拥有相同的标签,Label的具体形式是key-value的标记对,可以在创建资源的时候设置,也可以在后期添加和修改。

  • 注意事项:给某个资源对象定义一个Label,就相当于给它打了一个标签,可以通过Label Selector(标签选择器)查询和筛选拥有某些Label的资源对象,K8S通过这种方式实现了类似SQL的对象查询机制

2.7、LabelSelector

​ 对应的资源打上标签后,可以使用标签选择器过滤指定的标签。

  • 标签选择器目前有两个
    • 基于等值关系(等于、不等于)
    • 基于集合关系(属于、不属于、存在)
  • 范例:通过添加这两个标签,基本上已经将Pod组织成两个维度(按应用程序横向组织,按Release纵向组织)

第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

2.8、NameSpace

命名空间是在多个用户之间划分集群资源的一种方法(通过资源配额),**通过命名空间可以在一个物理集群上运行多个虚拟集群,用来隔离pod的运行环境,**同一个名字空间中的资源名称必须唯一,而不同名字空间之间则没有这个要求,NameSpace是不能嵌套的,每一个 Kubernetes 的资源都只能在一个NameSpace内。
第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes

  • Kubernetes 会创建四个初始NameSpace名称空间:
    • default 没有指明使用其它名字空间的对象所使用的默认名字空间
    • kube-system Kubernetes 系统创建对象所使用的名字空间
    • kube-public
    • kube-node-lease

.3、设计理念

​ Kubernetes 设计理念和功能其实就是一个类似 Linux 的分层架构,具体如下图所示:
第四章 云原生架构之Kubernetes基础知识,云原生架构,云原生,kubernetes
(1)核心层:Kubernetes 最核心的功能,对外提供 API 构建高层的应用,对内提供插件式应用执行环境

(2)应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS 解析等)

(3)管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态 Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等)

(4)接口层:kubectl 命令行工具、客户端 SDK 以及集群联邦

(5)生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴文章来源地址https://www.toymoban.com/news/detail-580145.html

  • Kubernetes 外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS 应用、ChatOps 等
  • Kubernetes 内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

4、组件选型

组件作用 组件选型 备注
一致性和服务发现 CoreDNS
远程调用服务 gRPC
南北流量 OpenRety 七层反向代理
服务网格 Istio
API网关 trafik
存储 Ceph
云原生网络 flannel
容器运行时 docker
容器注册 dockerhub【公网】、HARBOR【私网】
权限管理 RBAC
监控 prometheus + Grafana
日志 beats

到了这里,关于第四章 云原生架构之Kubernetes基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第四章 路由基础

    目录 4.1 路由器概述 4.1.1 路由器定义 4.1.2 路由器工作原理 4.1.3 路由表的生成方式 (1)直连路由 (2)静态路由 (3)动态路由 4.1.4 路由器的接口 (1)配置接口 (2)局域网接口 (3)广域网接口 4.1.5 路由器的硬件连接 (1)局域网线缆:双绞线 (2)广域网接口 (3)配置专

    2024年02月08日
    浏览(53)
  • 【重识云原生】第四章云网络4.7.8节——SR-IOV方案

            SR-IOV是Single Root I/O Virtualization的缩写。SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性

    2024年02月11日
    浏览(31)
  • 云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka

    第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 今天我们讲解Spring Cloud微服务的第一代实现:Spring Cloud Netflix Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。 Spring Cloud 使用 Spring Boot 思想为 Eur

    2024年02月08日
    浏览(37)
  • 【云原生进阶之PaaS中间件】第四章RabbitMQ-4.1-原理机制与进阶特性

    1.客户端连接到消息队列服务器,打开一个Channel。 2.客户端声明一个Exchange,并设置相关属性。 3.客户端声明一个Queue,并设置相关属性。 4.客户端使用Routing key,在Exchange和Queue之间建立好绑定关系。 5.客户端投递消息到Exchange。 6.Exchange接收到消息后,就根据消息的key和已经

    2024年02月21日
    浏览(35)
  • 计算机网络基础第四章

    主要任务是把 分组 从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是 数据报 。 功能一:路由选择与分组转发( 最佳路径 ) 功能二:异构网络互联 功能三:拥塞控制(若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于 拥塞

    2024年02月16日
    浏览(74)
  • 第四章:前端框架Vue基础入门

    本章学习目标: 了解Vue框架架构思想 掌握Vue核心指令 掌握计算属性与监视 掌握组件化开发模式 官方文档:https://cn.vuejs.org/guide/introduction.html. 文档可选择使用optionsAPI(选项式API)阅读,或者CompositionApi(组合式API)阅读。选项式API更适合平滑从vue2过渡,以下示例均以Compositi

    2024年02月12日
    浏览(33)
  • 【第四章 flutter学习之flutter基础组件】

    android、ios各自平台的资源文件 lib 项目目录 linux macos PC平台资源文件 web web平台资源文件 其他的基本上是一些配置文件 pubspec.yaml 配置文件类似vue中的json 核心文件是main.dart文件 首先我们先清空main.dart文件 引入主题 import ‘package:flutter/material.dart’; 定义入口方法 用来调用组件

    2024年02月15日
    浏览(38)
  • 数据结构基础内容-----第四章 栈与队列

    栈(Stack)是计算机科学中的一种抽象数据类型,它是一个只能在一端进行插入和删除操作的线性数据结构。栈按照后进先出(LIFO)的原则存储数据,即最后放入的元素最先被取出。类比物理世界中的堆叠物品,每次加入的物品都被放在上面,取出时也只能从上面取出,最后

    2024年02月07日
    浏览(32)
  • 【云原生进阶之PaaS中间件】第四章RabbitMQ-4.3-如何保证消息的可靠性投递与消费

            根据RabbitMQ的工作模式,一条消息从生产者发出,到消费者消费,需要经历以下4个步骤: 生产者将消息发送给RabbitMQ的Exchange交换机; Exchange交换机根据Routing key将消息路由到指定的Queue队列; 消息在Queue中暂存,等待消费者消费消息; 消费者从Queue中取出消息消费

    2024年03月11日
    浏览(55)
  • C++算法之旅、06 基础篇 | 第四章 动态规划 详解

    状态表示 集合 满足一定条件的所有方案 属性 集合(所有方案)的某种属性(Max、Min、Count等) 状态计算(集合划分) 如何将当前集合划分成多个子集合 状态计算相当于集合的划分 :把当前集合划分成若干个子集,使得每个子集的状态可以先算出来,从而推导当前集合状态

    2024年02月09日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包