Kubernetes-2.组件
内容主要摘自官网文档资料 官网地址
本文概述了交付正常运行的Kubernetes集群所需的各种组件。
本文编写基于kubernetes v1.17版本
Kubernetes集群
Kubernetes集群主要组成为Master和Node
简单概述,Master节点就是集群的调度节点、其管理集群;Node节点是应用程序实际运行的节点。
Master组件
Master组件提供集群的Control Plane。Master组件对集群进行全局决策(例如,调度),并检测和响应集群事件(例如,当不满足部署的replicas字段时,启动新的pod)。
Master组件可以在集群中的任何节点上运行。然而,为了简单起见,安装脚本通常会启动同一个计算机上所有Master组件,并且不会在计算机上运行用户容器。
Master组件:
- kube-apiserver
- kube-scheduler
- kube-controller-manager
- etcd
- cloud-controller-manager
kube-apiserver
主节点上负责提供Kubernetes API服务的组件;它是Kubernetes control plane的前端,Kubernetes集群的操作均通过此API接口进行控制。
kube-apiserver在设计上考虑了水平扩缩的需要。换言之,通过部署多个实例可以实现扩缩。
kube-scheduler
主节点上的组件,该组件监视那些新创建的未指定运行节点的Pod,并选择节点让Pod在上面运行,简言之就是负责资源调度(Pod调度)。
调度决策考虑的因素包括单个Pod和Pod集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限。
kube-controller-manager
Kubernetes中所有资源对象的自动化控制中心。
从逻辑上讲,每个控制器控制器通过apiserver监控集群的公共状态,并致力于将当前状态转变为期望的状态。都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。
这些控制器包括:
- 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应。
- 副本控制器(Replication Controller):负责为系统中的每个副本控制器对象维护正确数量的Pod。
- 端点控制器(Endpoints Controller):填充端点(Endpoints)对象(即加入Service与Pod)。
- 服务帐户和令牌控制器(Service Account & Token Controllers):为新的命名空间创建默认帐户和API访问令牌.
etcd
etcd是兼具一致性和高可用性的键值数据库,可以作为保存Kubernetes所有集群数据的后台数据库。
您的Kubernetes集群的etcd数据库通常需要有个备份计划。
云控制器管理器-(cloud-controller-manager)
cloud-controller-manager运行与基础云提供商交互的控制器。cloud-controller-manager二进制文件是Kubernetes 1.6版本中引入的alpha功能。
cloud-controller-manager仅运行云提供商特定的控制器循环。您必须在kube-controller-manager中禁用这些控制器循环,可以通过在启动kube-controller-manager时将--cloud-provider参数设置为external来禁用控制器循环。
cloud-controller-manager允许云供应商的代码和Kubernetes代码彼此独立地发展。在以前的版本中,核心的Kubernetes代码依赖于特定云提供商的代码来实现功能。在将来的版本中,云供应商专有的代码应由云供应商自己维护,并与运行Kubernetes的云控制器管理器相关联。
以下控制器具有云提供商依赖性:
- 节点控制器(Node Controller):用于检查云提供商以确定节点是否在云中停止响应后被删除
- 路由控制器(Route Controller):用于在底层云基础架构中设置路由
- 服务控制器(Service Controller):用于创建、更新和删除云提供商负载均衡器
- 数据卷控制器(Volume Controller):用于创建、附加和装载卷、并与云提供商进行交互以编排卷
Node组件
Node节点是运行容器应用化的机器,维护着运行的Pod并提供Kubernetes运行环境。
Node组件:
- kubelet
- kube-proxy
- 容器运行环境
kubelet
与apiserver通信,并管理所在节点的容器。kubelet不会管理不是由Kubernetes创建的容器。
kube-proxy
kube-proxy是集群中每个节点上运行的网络代理,实现Kubernetes Service概念的一部分。
kube-proxy负责组件之间的负载均衡网络流量,维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与Pod进行网络通信。
容器运行环境(Container Runtime)
容器运行环境是负责运行容器的软件(例如Docker)。
Kubernetes支持多个容器运行环境:Docker、containerd、cri-o、rktlet以及任何实现Kubernetes CRI(容器运行环境接口)。
插件(Addons)
插件使用Kubernetes资源(DaemonSet,Deployment等)实现集群功能。因为这些提供集群级别的功能,所以插件的命名空间资源属于kube-system命名空间。
可用插件的扩展列表:插件
DNS
尽管并非严格要求其他附加组件,但所有示例都依赖集群DNS,因此所有Kubernetes集群都应具有DNS,它为Kubernetes服务提供DNS记录。
ClusterDNS是一个DNS服务器,和您部署环境中的其他DNS服务器一起工作,为Kubernetes服务提供DNS记录。
Kubernetes启动的容器自动将DNS服务器包含在DNS searches(DNS搜索域)。
Dashboard
Kubernetes集群的Web UI。它使用户可以管理集群中运行的应用程序以及集群本身并进行故障排除。
容器资源监控
容器资源监控将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供用于浏览这些数据的界面。
集群层面日志
集群层面日志机制负责将容器的日志数据保存到一个集中的日志存储中,该存储能够提供搜索和浏览接口。
Networking and Network Policy
网络插件负责为接口配置和管理IP地址,并且通常提供与IP管理、每个容器的IP分配、以及多主机连接相关的功能。网络策略插件允许集群群组与其他网络终端进行通信时的规范以定义规则。
总结
kubernetes的主要组成
主要有两部分组成,master节点以及node节点。master节点包含kube-apiserver,kube-scheduler,kube-controller-manager,etcd,cloud-controller-manager组件;node节点包含kubelet,kube-proxy,容器运行环境。
哪些附件组件能够更好地帮助我们完善kubernetes集群的属性
DNS:为Kubernetes服务提供DNS记录解析。
Dashboard:kubernetes集群的Web UI,使管理更方便。
资源监控:更好地了解集群状态。
集群日志:更好地排查解决问题。
网络插件:管理网络及网络策略。
小结
更加详细地了解了Kubernetes的组成,以及各组件的一些细节。了解到运行一个Kubernetes集群需要哪些组成,怎么样才能够更好地运行和管理Kubernetes集群等一些基础理论知识。
Kubernetes-2.组件的更多相关文章
- kubernetes kubelet组件中cgroup的层层"戒备"
cgroup是linux内核中用于实现资源使用限制和统计的模块,docker的风靡一时少不了cgroup等特性的支持.kubernetes作为容器编排引擎,除了借助docker进行容器进程的资源管理外 ...
- kubernetes的组件和概念介绍
1.控制平面组件(也被称为master节点组件) 控制平面的组件我们会找一台单独的机器来部署,我们习惯上把部署控制平面组件的机器称为master节点,以下都会用master节点来代替控制平面这个概念, ...
- k8s/Kubernetes常用组件Helm的部署
Helm的安装 1.Helm的基本概念 Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理.可以把Helm比作CentOS的yum工具. Helm有如下几个基 ...
- centos7下kubernetes(4.kubernetes组件)
Kubenetes cluster 由master和node组成 Master是kubenetes的大脑.运行着以下进程:kube-apiserver.kube-scheduler.kube-cont ...
- Kubernetes【K8S】(一):Kubernetes组件
什么是Kubernetes Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化.Kubernetes拥有一个庞大且快速增长的生态系统. ...
- Kubernetes初步
Kubernetes是Google开源的容器集群管理系统.它构建于docker技术之上.为容器化的应用提供资源调度.部署执行.服务发现.扩容缩容等整一套功能.本质上可看作是基于容器技术的mini-Pa ...
- Ubuntu上手动安装Kubernetes
背景 两台Ubuntu16.04服务器:ip分别为192.168.56.160和192.168.56.161.. Kubernetes版本:1.5.5 Docker版本:1.12.6 etcd版本:2 ...
- China Azure中部署Kubernetes(K8S)集群
目前China Azure还不支持容器服务(ACS),使用名称"az acs create --orchestrator-type Kubernetes -g zymtest -n kube ...
- Kubernetes 架构(上)- 每天5分钟玩转 Docker 容器技术(120)
Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. Master 节点 Master 是 Kubernetes Cluster ...
- Kubernetes 概念整理
注:以下大部分内容来自网上摘录,以便后期查阅. Kubernetes (通常称为 K8s) 是用于自动部署.扩展和管理容器化(containerized)应用程序的开源系统,是 Google 内部工具 ...
随机推荐
- jQuery读取数据
1.jQuery读取JSON <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
- Codeforces Round #631 (Div. 2) D.Dreamoon Likes Sequences
题目连接:Dreamoon Likes Sequences 题意:给你d和m,让你构造一个递增数组a,使数组b(i==1,b[i]=a[i] ; i>1, b[i]=b[i-1]^a[i])递 ...
- hdu2430Beans(单调队列)
Mr. Pote's shop sells beans now. He has N bags of beans in his warehouse, and he has numbered them ...
- 2020ICPC·小米 网络选拔赛第一场 A.Intelligent Warehouse (DP)
题意:给你一组数,选一些数出来组成一个排列,使得每个数都能被前一个数整除,求排列的最大元素. 题解:我们先用欧拉筛筛出\(1e7\)的质数,设\(dp[i]\)表示当前选的数都是\(i\)的约数且合法 ...
- git仓库更换远程地址
首先进入项目所在文件夹,右键git bash (1)查看当前的远程地址 git remote -v (2)删除当前的远程地址 git remote rm origin (3)添加远程地址 git re ...
- C# 之 dynamic
C#中的dynamic用于避免编译时类型检查,编译器在运行时获取类型. dynamic无法使用VisualStudio的intelliSense(智能感知),即调用dynamic修饰的对象的方法或字段 ...
- c#记两个变量进行值交换
今天腊月二十九啦,无心上班,专注划水.然后就在那里翻帖子消磨时光. 看到了这样一个问题,有人提问为什么 a=b+(b=a)*0 ??? 第一眼看上去,我也有点蒙,仔细推敲了一下,嗯~的确是交换了 ...
- GO - 高级编程
https://books.studygolang.com/gopl-zh/ https://chai2010.cn/advanced-go-programming-book/
- Java 并发机制底层实现 —— volatile 原理、synchronize 锁优化机制
本书部分摘自<Java 并发编程的艺术> 概述 相信大家都很熟悉如何使用 Java 编写处理并发的代码,也知道 Java 代码在编译后变成 Class 字节码,字节码被类加载器加载到 JV ...
- 数位dp【模板 + 老年康复】
学习博客: 戳这里 戳这里 "在信息学竞赛中,有这样一类问题:求给定区间中,满足给定条件的某个D 进制数或此类数的数量.所求的限定条件往往与数位有关,例如数位之和.指定数码个数.数的大小顺序 ...