Kubernetes集群组件

一个典型的Kubernetes集群由多个工作节点和一个集群控制节点,以及一个集群状态存储系统etcd组成。其中Master节点负责整个集群管理工作,为集群提供管理接口,并监控和编排集群中的各个工作节点。各个节点负责以pod的形式运行容器,因此,各个节点需要实现配置好运行容器的依赖到的所有服务及资源,如容器运行时环境等

Master节点主要由apiserver、controller-manger和scheduler 三个组件,以及一个用于集群状态存储的etcd存储组成,而每个Node节点则主要包含kubelet、kube-proxy及容器引擎(Docker是最为常见的实现)等组件。此外,完整的集群服务还依赖一些附加组件,如kubeDNS等

Master组件

Kubernetes的集群控制平面由多个组件组成,这些组件可以统一运行于单一的Master节点,也可以以多副本的方式同时运行于多个节点,以为Master提供高可用功能,甚至可以运行于Kubernetes集群自身之上。Master包括以下几个组件

(1)API server: API-server 负载输出RESTful风格的Kubernetes API, 它是集群的所有REST操作命令的接入点,并负责接收、校验并响应所有REST请求,结果状态被持久存储于etcd中。因此API server 是整个集群网关

(2)集群状态存储(Cluster state Store):Kubernetes集群的所有状态信息都需要持久存储于etcd中,不过,etcd是有CoreOS基于Rart协议开发的分布式键值存储,可用服务发现、共享配置以及数据一致性保障。因此,etcd是独立的服务组件,并不属于Kubernetes集群自身。生产环境中应该以etcd集群的方式运行以保障服务可用性;etcd不仅提供键值数据存储,而且还为其提供了监听机制,用于监听和推送变更。Kubernetes集群中,etcd键值发生变化时会通知到API server,并由其通过watch API 向客户的输出。基于watch机制,Kubernetes集群组件实现高效协同

(3)控制器管理器(controller Manager ):Kubernetes中,集群级别的大多数功能都是由几个称为控制器的进程执行完成的,这几个进程被集成与kube-controller-manager守护进程中,由控制器完成的功能主要包括生命周期功能和API业务逻辑,具体如下

生命周期功能:包括namespace创建和生命周期、Event垃圾回收、pod终止相关垃圾回收、级联垃圾回收及Node垃圾回收等。

API逻辑:例如由ReplicaSet执行Pod扩展

(4)调度器(Scheduler):Kubernetes是用于部署和管理大规模容器应用的平台,根据集群规模不同,其托管运行的容器很可能会数以千计甚至更多。APIserver确认Pod对象的创建请求之后,便以需要有Scheduler根据集群内各个节点的可用资源状况,以及要运行的容器的资源需求做出调度决策,另外,Kubernetes还支持用户自定义调度器

Node组件

Node负责提供运行容器的各种依赖环境,并接受Masert管理。每个Node由一下几个组件构成

(1)Node的核心代理程序kubelet:kubelet是运行在工作节点之上的守护进程,它从API server接收关于pod对象的配置信息并确保它们的处于期望状态(desired state目标状态)。kubelet会在API server上注册当前节点,定期向Master汇报节点资源使用情况,并通过cAdvisor监控容器和节点资源占用情况

(2)容器运行时环境:每个Node都要提供一个容器运行时环境,它负责下载镜像并运行容器。kubelet并未加固连接至某容器运行时环境。这种方式清晰的定义了各种组件的边界,目前,Kubernetes支持的容器运行环境至少包括Docker、RKT、cri-o 和Fraik等

(3)kube-proxy:每个工作节点都运行一个kube-proxy守护进程,它能够按需为server资源对象生成iptables或ipvs规则,从而捕获访问当前server和GlusterIP 的流量并将其转发至后端正真pod对象

核心附件 

       Kubernetes集群还依赖于一组称为附件的组件以提供完整的功能,他们通常是由第三方提供的特定应用程序,且托管运行于Kubernetes集群之上;几个附件各自为集群从不同角度引用了所需的核心组件

(1)kubeDNS:在Kubernetes集群中调度运行提供DNS服务的Pod,同一集群中的其他Pod可使用此DNS服务解决主机名,Kubernetes自1.11版本开始默认使用CoreDNS项目为集群提供服务之策服务发现的动态名称解析服务,之前的版本中用到的是kube-dns项目,而SkyDNS则是更早一代项目

(2)Kubernetes Dashboard:Kuber-netes集群的全部功能都要基于Web的UI,来管理集群中的应用甚至集群自身

(3)Heapster:容器和节点性能监控与分析系统‘,它收集并解析多种指标数据,如资源利用率、生命周期事件等,新Kubernetes中功能会逐渐由Prometheus结合其他组件所代替

(4)Ingress Controller:service 是一种工作与传统层的负载均衡器,而Ingress是在应用实现的HTTP(s)负载均衡机制。不过,Ingress控制器(Ingress Controller)发挥作用,目前,此类的可用项目有nginx,Traefik、Envoy及HAProxy

k8s集群介绍的更多相关文章

  1. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

  2. kubernetes系列03—kubeadm安装部署K8S集群

    本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...

  3. 【K8S学习笔记】Part2:获取K8S集群中运行的所有容器镜像

    本文将介绍如何使用kubectl列举K8S集群中运行的Pod内的容器镜像. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同. 0x00 准备工作 需要有一个K8S集群,并且配置好了k ...

  4. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  5. 基于prometheus监控k8s集群

    本文建立在你已经会安装prometheus服务的基础之上,如果你还不会安装,请参考:prometheus多维度监控容器 如果你还没有安装库k8s集群,情参考: 从零开始搭建基于calico的kuben ...

  6. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  7. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...

  8. 关于K8s集群器日志收集的总结

    本文介绍了kubernetes官方提供的日志收集方法,并介绍了Fluentd日志收集器并与其他产品做了比较.最后介绍了好雨云帮如何对k8s进行改造并使用ZeroMQ以消息的形式将日志传输到统一的日志处 ...

  9. 使用kubectl管理k8s集群(二十九)

    前言 在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理.命令和语法记不住没有关系,但是请记住主要的语法和命令以及帮助命令的使用. 在下一篇,我们将讲述 ...

随机推荐

  1. MySQL(12)---纪录一次left join一对多关系而引起的BUG

    MySQL(11)---纪录一次left join一对多关系而引起的bug BUG背景 我们有一个订单表 和 一个 物流表 它们通过 订单ID 进行一对一的关系绑定.但是由于物流表在保存订单信息的时候 ...

  2. OPENGL2_基本框架

    一些概念 HDC:设备描述句柄(窗口着色描述表句柄),是WINDOWS的一种数据类型,HDC定义的变量指向一块内存,这块内存用来描述一个设备的相关的内容(设备描述表). HGLRC:OpenGL渲染环 ...

  3. 用shell脚本监控MySQL主从同步

    企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:阶段1:开发一个守护进程脚本每30秒 ...

  4. [题解](树形dp/换根)小x游世界树

    2. 小x游世界树 (yggdrasi.pas/c/cpp) [问题描述] 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当 ...

  5. GYM 101673E(暴搜预处理)

    1.不会超过500个不同的串-- 2.样例没给has到has是怎么样的,实测是true. 3.记忆化别剪错枝就好,嘤嘤嘤-- const int maxn = 505 + 5; int n, m, t ...

  6. 类加载机制 + Classloader.loadClass(String name)和Class.forName(String name)

    Classloader.loadClass(String name)和Class.forName(String name)的区别 Java的类在jvm中的加载大致分为加载,链接或者叫link(里面包含 ...

  7. 关于controller返回的页面js文件和css文件404问题的正式解决

    谨用此博客记录一下这条卡了两个星期的bug…… 还是之前的问题,通过get方法,后台@Controller返回页面然后弹窗.但是不知道为什么一直所有js文件和css文件都报404…… (之前的博客记录 ...

  8. 部署ASP.Net Core 2.1 項目到 IIS

    用Asp.net core 2.1 寫了一個小的系統框架,記錄一下部署過程: 1. 首先是安裝 IIS 了,從 控制面板→程序→启用或关闭Windows功能→勾选Internet Informatio ...

  9. 【Linux】使用Cockpit进行主机管理

    Cockpit 进行主机监控 官网文档: https://cockpit-project.org/running.html 版本信息 针对Red Hat [root@master ~]# cat /e ...

  10. webpack入门之最简单的例子 webpack4

    webpack在目前来说应该是前端用的比较多的打包工具了,那么对于之前没有接触过这块的该怎么办呢?答案很明显嘛,看资料,查文档,自己去琢磨,自己去敲一敲,跑一跑: 那么,这边我将以一个最基础的例子来将 ...