欢迎光临散文网 会员登陆 & 注册

Kubernetes架构+核心组件最全介绍合集

2021-03-25 10:16 作者:微软MVP-Eleven  | 我要投稿

本篇目标

分析为什么选择kubernetes

kubernetes概述

kubernetes架构介绍和分析

kubernetes核心概念POD,POD控制器,Service详解

下一篇完整安装Kubernetes


为什么需要Kubernetes

      很多小伙伴儿对Kubernetes可能都是听过但没用过,然而如果你真的去落地微服务架构会发现,Kubernetes是绕不开的。在架构班压轴实战-微服务架构电商平台中,一共有15个微服务,7个定时作业processor,再加上Redis、RabbitMQ、MongoDB、ElasticSearch、Kafka、ELK、Apollo等各种组件,分别还得集群部署,算起来都得100多个进程了,怎么部署?当然是容器化的,但是100多容器真不是人能管的过来的。中途我演示了用docker-compose管理,写脚本都能让人崩溃,Kubernetes才是正解!






Kubernetes是什么

Kubernetes诞生之初就是个管理容器的工具,然而在管理好容器之后,又提供了各种进阶好用的功能,在架构班的实战中得到了很好的应用,下面一一介绍下:

自动发布与伸缩

可以通过声明式的配置文件定义想要部署的容器,Kubernetes将自动进行容器的部署,达到期望的结果;通过指定容器副本数,或者设置根据资源负载情况(如CPU、内存使用率),自动对容器组进行快速的伸缩——增大或缩小容器数量,做到流量自适应

滚动升级与灰度发布:采用逐步替换的策略实现滚动升级,使用Kubernetes也可以很轻易地管理系统的灰度发布

服务发现与负载均衡:Kubernetes通过DNS名称或IP地址暴露容器的访问方式,并且可在同一容器组内实现负载分发与均衡

存储编排:Kubernetes可以自动挂载指定的存储系统,如local storage/nfs/云存储等

故障恢复:Kubernetes自动重启已经停机的容器,替换不满足健康检查的容器


密钥与配置管理:Kubernetes可以存储与管理敏感信息,如Docker Registry的登录凭证,密码,ssh密钥等

Kubernetes架构:kubernetes是用于自动部署,扩展和管理容器化应用程序的开源系统。它源自Google15年生产环境的运维经验,他的灵活性能让我们在应对复杂系统时得心应手。



k8s核心组件:

  • etcd 保存了整个集群的状态;

  • apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;

  • controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

  • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;

  • kubelet 负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理;

  • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);

  • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;

  • 除了核心组件,还有一些推荐的插件,其中有的已经成为CNCF中的托管项目:

  • CoreDNS负责为整个集群提供DNS服务

  • Ingress Controller为服务提供外网入口

  • Prometheus提供资源监控

  • Dashboard提供GUI

  • Federation提供跨可用区的集群

  • Kubernetes架构示意图

整体架构

Master架构

Node架构

分层架构


  说 明       

核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境

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

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

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

生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴

Kubernetes外部:日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS应用、ChatOps、GitOps、SecOps等

Kubernetes内部:CRI、CNI、CSI、镜像仓库、Cloud Provider、集群自身的配置和管理等


K8S核心概念

POD是什么

POD是K8S创建、管理和部署的最小单元,其他资源对象都是支撑和扩展POD,一个POD包含一个或者多个容器。为了将容器的生命周期和进程的生命周期绑定,通常一个容器内只包含一个进程;当一个服务运行需要多个进程时,为了保持这个规则,因此需要比容器更高一级的对象,这就是POD。


POD 控  制  器

POD控制器是什么

为更好的使用POD,K8S一般不直接创建POD而是通过创建中间层POD控制器来使用POD。通过POD控制器可以更好的实现POD的保活、扩缩容和升级等操作。

Service&Ingress

Service是什么



本篇文章偏理论介绍,在下一篇将实操Kubernetes集群环境构建,一起来试试吧!

Kubernetes架构+核心组件最全介绍合集的评论 (共 条)

分享到微博请遵守国家法律