k8s-架构中各个组件介绍 -阿里云开发者社区

开发者社区> 游客njfpmzdnnmzi2> 正文

k8s-架构中各个组件介绍

简介: K8S
+关注继续查看

参考链接:https://github.com/opsnull/follow-me-install-kubernetes-cluster
1、基本概念和组件

基础架构
Kubernetes 是一个跨主机集群的 开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作 , 提供以容器为中心的基础架构。

使用 Kubernetes, 您可以快速高效地响应客户需求:

快速、可预测地部署您的应用程序
拥有即时扩展应用程序的能力
不影响现有业务的情况下,无缝地发布新功能
优化硬件资源,降低成本
我们的目标是构建一个软件和工具的生态系统,以减轻您在公共云或私有云运行应用程序的负担。

Kubernetes 具有如下特点:

便携性: 无论公有云、私有云、混合云还是多云架构都全面支持
可扩展: 它是模块化、可插拔、可挂载、可组合的,支持各种形式的扩展
自修复: 它可以自保持应用状态、可自重启、自复制、自缩放的,通过声明式语法提供了强大的自修复能力
集群有Master和Node节点,架构如下:
image.png
其中:

etcd 保存了整个集群的状态,就是一个数据库,只有API Server能与其通信;
apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;
kubelet 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理;
Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI);
kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡;
scheduler和controller-manager都是通过apiserver从etcd中获取各种资源的状态,进行相应的调度和控制操作。

除了上面的这些组件,还有一些第三方的组件:

kube-dns 负责为整个集群提供 DNS 服务
Ingress Controller 为服务提供外网入口
Heapster 提供资源监控
Dashboard 提供 GUI
组件之间的关系:
从上面图可以看到所有组件均是通过API Server进行通信,所以API Server就是一个中枢神经,在生产中我们会把master部署为多节点,做高可用。
etcd主要是存储集群里的信息,比如集群状态,集群的各Node信息等,只有API能与其通信,所以我们也会把etcd做高可用,etcd是一个单独的组件,一个应用软件,做高可用建议是奇数节点,比如3,5等,节点不应过多,因为节点过多,节点之间的数据同步是会有一定的开销,影响集群的性能。
Schduler负责整个集群的调度,它通过API Server来检测Node上Pod的状态,然后会根据定义的策略来调度pod并绑定Node。
Controller manager负责pod的控制,常见的比如定义了一个Pod为replicaSet,然后因为某些原因当前pod挂掉了,这时候Controller manager就会为你在Node上重启该Pod。
kubelet是Node上的组件,它会检测Node上的Pod,并将其状态更新到API Server。
kube-proxy主要是负责代理转发,主要控制service,并将sevice状态更新到API Server。
kubectl是集群的管理组件,主要也是调用API Server,然后进行整个集群的管理。

高可用
Kubernetes 集群,在生产环境,必须实现高可用:

实现Master节点及其核心组件的高可用;
如果Master节点出现问题的话,那整个集群就失去了控制;
具体的 HA 示意图:
kubernertes-HA-arch.png

具体工作原理:

etcd 集群:etcd集群建议和主集群分开,3个节点允许一个容错,5个节点允许2个容错,根据实际情况进行选择
master集群: 对master节点来说一般3个节点就够了,主要需要我们做高可用的组件是apiserver,我们可以在前面做一个负载均衡器,比如加一个Nginx,Nginx还可以通过keepalived做高可用,工作节点和客户端通过这个负载均衡器(VIP)和apiserver进行通信
pod-master保证仅是主master可用,scheduler、controller-manager 在集群中多个实例只有一个工作,其他为备用

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Kubernetes系列】第5篇 Ingress controller - traefik组件介绍
1. 概述 为了能够让Ingress资源能够工作,在Kubernetes集群中必须至少有一个运行中的ingress controller组件。也就是说如果在kubernetes集群中没有一个ingress controller组件,只是定义了ingress资源,其实并不会实现http、https协议的请求转发、负载均衡等功能。
1177 0
Kubernetes核心组件介绍
介绍Kubernetes Master节点、Node节点核心组件
36 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10022 0
数据集成模块流程组件之条件分发介绍
在数据集成的过程中,在一些场景下,需要对上游数据进行分发操作,条件分发组件可对上游数据根据配置条件进行分发,本文将介绍如何进行条件分发组件的配置。
18 0
平台日志组件使用介绍
平台日志组件使用介绍 需要导入的类: import com.frameworkset.platform.sysmgrcore.entity.Organization; import com.
566 0
Android基础_1 四大基本组件介绍与生命周期
    Android四大基本组件分别是Activity,Service(服务),Content Provider(内容提供者),BroadcastReceiver(广播接收器)。 一、四大基本组件 Activity :      应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
907 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10880 0
RISC-V生态全景解析(十二):YoC组件介绍系列二:AT组件
自上期开始,我们开启了YoC组件系列内容的介绍,并带大家了解了YoC的CSI组件。本期将为大家介绍的是YoC的AT组件。本文将详细阐述AT组件的使用原理,开发所需要的其他依赖组件资源,以及在网络方面的应用,以帮助广大开发者熟悉AT组件的使用。
28 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13829 0
+关注
3
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载