kubernetes组件大全

master节点组件
控制平面的组件我们会找一台单独的机器来部署,我们习惯上把部署控制平面组件的机器称为master节点,以下都会用master节点来代替控制平面这个概念,master节点的组件能够对k8s的集群做出全局决策(例如,调度),以及检测和响应集群事件(例如,当部署的副本字段不满足时启动一个新的POD)。Master节点组件可以在k8s集群中的任何机器上运行。 然而,为了简单起见,通常会在同一台机器上启动所有控制平面组件,这台机器上最好不运行其他的容器化程序,所以我们就把专门部署控制平面组件的集群称为master节点。
kube-apiserver
kube-apiserver是Kubernetes master节点的组件,它公开了Kubernetes API。 API服务是Kubernetes master节点的前端。Kubernetes API服务是通过kube-apiserver组件实现的,kube-apiserver被设计成可以进行自动扩缩容,你可以运行多个kube-apiserver组件,通过keepalive+lvs或者其他负载均衡策略在这些组件之间平衡流量。kube-apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制,负责接收、解析、处理请求。
kube-scheduler
kube-scheduler是kubernetes master节点的组件,用来监视已经被创建但是没有调度到node节点的pod,然后选择一个node节点用来运行它,kube-scheduler主要是负责pod的调度,按照预定的调度策略(如亲和性,反亲和性等)将Pod调度到相应的机器上。
kube-controller-manager
控制器管理器,用来检测控制器健康状态的,控制器是负责维护集群的状态,检查pod的健康状态,比如故障检测、自动扩展、滚动更新等一些操作。
etcd
etcd是一个key/value形式的键值存储,保存了整个kubernetes集群的状态,在kubernetes中使用etcd时,需要对etcd做备份,保证高可用。整个kubernetes系统中一共有两个服务需要用到etcd,用etcd来协同和存储配置,分别是:
(1)网络插件calico、对于其它网络插件也需要用到etcd存储网络的配置信息
(2)kubernetes本身,包括各种对象的状态和元信息配置
注意:网络插件操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API,所以在下面我们执行etcdctl的时候需要设置ETCDCTL_API环境变量,该变量默认值为2,表示使用v2版本的etcd api,v3表示使用v3版本的etcd api
docker
是一个容器引擎,用于运行容器
kube-proxy
k8s代理,是在集群中的每个节点上运行的网络代理,kube-proxy负责请求转发,一旦发现了某一个Service关联的Pod信息发生了改变(如IP、Port等),由Kube-Proxy就会把变化后的service转换成IPVS或IPtables规则中,完成对后端pod的负载均衡
calico
Calico是一个纯三层的网络插件,calico的bgp模式类似于flannel的host-gw,calico在kubernetes中可提供网络功能和网络策略
cordns
k8s1.11之前使用的是kube dns,1.11之后才有coredns,coredns是一个DNS服务器,能够为Kubernetes services提供DNS记录
kubelet
负责与master节点的apiserver进行通信的,接收到客户的请求,进行创建Pod,管理Pod,启动pod等相关操作
工作节点组件(也被称为node节点组件)
节点组件在k8s集群的每一个节点上都需要运行,工作节点用来运行业务pod,
kubelet
kubelet在k8s集群的每一个节点上都需要运行,属于节点组件,负责与master节点的apiserver进行通信的,接收到客户的请求,进行创建Pod,管理Pod,启动pod等相关操作
kube-proxy
k8s代理,是在群集中的每个节点上运行的网络代理,kube-proxy负责请求转发,一旦发现了某一个Service关联的Pod信息发生了改变(如IP、Port等),由Kube-Proxy就会把变化后的service转换成IPVS或IPtables规则中,完成对后端pod的负载均衡
docker
是一个容器引擎,用于运行容器
calico
Calico是一个纯三层的网络插件,calico的bgp模式类似于flannel的host-gw,calico在kubernetes中可提供网络功能和网络策略
附加组件
附件组件使用kubernetes的资源(如daemonset,deployment,statefulset等)实现集群功能,因为它们提供的是集群级别的属性,所以这些附件组件都需要部署到kube-system这个名称空间下。
coredns
k8s1.11之前使用的是kubedns,1.11之后才有coredns,coredns是一个DNS服务器,能够为 Kubernetes services提供 DNS记录。
Web UI(Dashboard)
Dashboard是k8s集群的一个web ui界面,通过这个界面可以对k8s资源进行操作,如创建pod,创建存储,创建网络等,也可以监控pod和节点资源使用情况。
Ingress Controller
七层负载均衡控制器,可以通过创建nginx或者traefik这种七层负载组件,实现域名和https访问。
prometheus+alertmanager+Grafana
监控系统,可以对kubernetes集群本身的组件监控,也可对物理节点,容器做监控,对监控到的超过报警阀值的数据进行报警,这个报警会发送到指定的目标,如钉钉,微信,qq,slack等。
efk-(全称elasticsearch、fluentd、kibana)
日志管理系统,可以对物理节点和容器的日志进行统一收集,把收集到的数据在kibana界面展示,kibana提供按指定条件搜索和过滤日志。
metrics
用于收集资源指标,hpa需要基于metrics实现自动扩缩容
k8s组件

master节点:负责管理Node节点,用于接受用户请求,发送请求到Node节点
node节点:负责接受Master分配的任务,并且运行任务
scheduler:调度器
apiserver:整个架构的核心,所有组件都必须经过apiserver通信,他是中间的协调者
controller-manager:控制器
kubelet:接收master请求的接收者,并且完成它,类似于agent
kube-proxy:管理k8s网络
Docker-Engine:k8s利用docker的容器引擎
etcd:键值对数据库
架构图

kubernetes组件大全的更多相关文章
- kubernetes组件
kubernetes组件 @(马克飞象)[k8s] 组件 kubernetes除了必备的dns和网络组件外,官方推出大量的cluster-monitoring,dashboard,fluentd-el ...
- 构建Docker平台【第三篇】安装 kubernetes 组件
第一步:准备 1. 安装包: kubeadm-1.6.0-0.alpha.0.2074.a092d8e0f95f52.x86_64.rpm kubernetes-cni-0.3.0.1-0.07a8a ...
- centos7下kubernetes(4.kubernetes组件)
Kubenetes cluster 由master和node组成 Master是kubenetes的大脑.运行着以下进程:kube-apiserver.kube-scheduler.kube-cont ...
- [转]最流行的android组件大全
目录(?)[+] 目录(?)[-] 最流行的android组件大全 UI组件 类库 游戏引擎 Android HTML5应用 最流行的android组件大全 最新更新文档请访问我的网站 Andro ...
- Kubernetes组件与架构
转载请标明出处: 文章首发于>https://www.fangzhipeng.com/kubernetes/2018/09/30/k8s-basic1/ 本文出自方志朋的博客 Kubernete ...
- Kubernetes【K8S】(一):Kubernetes组件
什么是Kubernetes Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化.Kubernetes拥有一个庞大且快速增长的生态系统. ...
- 使用 C# 开发 Kubernetes 组件,获取集群资源信息
写什么呢 前段时间使用 C# 写了个项目,使用 Kubernetes API Server,获取信息以及监控 Kubernetes 资源,然后结合 Neting 做 API 网关. 体验地址 http ...
- Kubernetes组件-ReplicaSet
⒈简介 最初,ReplicationController是Kubernetes用于复制和在异常时重新调度节点的唯一组件,后来Kubernetes又引入了一个名为ReplicaSet的类似资源.它是新一 ...
- Kubernetes学习笔记之认识Kubernetes组件
前言:笔记知识点来源于Kubernetes官方文档说明,链接:https://kubernetes.io/docs/concepts/overview/components/ ,本记录仅仅是学习笔记记 ...
- Kubernetes 组件简介
关于Kubernetes是什么??? Kubernetes是致力于提供跨主机集群的自动部署.扩展.高可用以及运行应用程序容器的平台. Kubernets集群组成有哪些??? k8s由master和no ...
随机推荐
- Linux 上的 AppImage、Snap、Flatpak 之间的区别和联系
AppImage.Snap 和 Flatpak 是三种用于在 Linux 系统上分发和安装软件的包管理格式.它们都有助于解决软件依赖问题,使得应用程序可以在不同的 Linux 发行版上更容易地安装和运 ...
- 在 Windows 中启用 Administrator 帐户
打开管理员终端. 启用: net user administrator /active:yes 关闭: net user administrator /active:no
- Kubernetes-2:Pod(k8s最小单元)概念及网络通讯方式
Pod概念及网络通讯方式 什么是Pod? Pod是Kubernetes的最小单元. 一个Pod是一组紧密相关的容器,是一起运行在同一个工作节点上,以及同一个Linux命名空间中.每个Pod就像是一个独 ...
- vue动态绑定样式
每次点击方块时通过三元表达式,改变对应的class,每一个不同的class对应不同的样式,从而通过改变class实现样式的切换. 实现代码 <template> <div class ...
- Webpack4-使用expose-loader将变量注册到全局
首先贴一下 package.json中的插件版本,不同的版本也许会有很大的差异: // package.json{ "name": "WEBPACK-DEV-1" ...
- Azure 入门系列 (第四篇 Key Vault)
本系列 这个系列会介绍从 0 到 1 搭建一个 Web Application 的 Server. 间中还会带上一些真实开发常用的功能. 一共 6 篇 1. Virtual Machine (VM) ...
- Git冲突解决技巧
在多人协作的软件开发项目中,Git 冲突是不可避免的现象.当两个或更多的开发者同时修改了同一段代码,并且尝试将这些修改合并到一起时,冲突就发生了.解决这些冲突是确保代码库健康和项目顺利进行的关键.以下 ...
- MyBatis——案例——查询-多条件查询-动态条件查询(关键字 if where)
动态条件查询 SQL语句会随着用户的输入或外部条件的变化而变化,我们称为 动态SQL MyBatis 对动态SQL有很强大的支撑: if choose(when,otherwise) ...
- pytorch中LSTM各参数理解
nn.LSTM(input_dim,hidden_dim,nums_layer,batch_first) 各参数理解: input_dim:输入的张量维度,表示自变量特征数 hidden_dim:输出 ...
- Spring技术书的代码资源下载
我是清华社编辑,这些资源获得作者授权,免费提供给读者个人学习使用.禁止任何形式的商用. 二维码用微信扫,按提示填写你的邮箱,转到电脑上打开邮箱下载.清华国企网盘,比较快速.安全.放心下载. 百度网盘链 ...