浅谈kubernetes:master节点和node节点

kubernetes 整个架构分为master节点和node节点,其中master节点负责pod的调度,pod的replication的数量node,endpoint以及服务账户以及令牌的管理等等;而node节点主要负责container创建,服务的代理以及其他相关应用。

Master节点



Master 组件提供的集群控制。Master 组件对集群做出全局性决策(例如:调度),以及检测和响应集群事件(副本控制器的replicas字段不满足时,启动新的副本)。

Master 组件可以在集群中的任何节点上运行。然而,为了简单起见,设置脚本通常会启动同一个虚拟机上所有 Master 组件,并且不会在此虚拟机上运行用户容器(高可用)

Master节点包括:kube-apiserver,kube-control-manager,kube-schduler,etcd,相关插件应用以及底层云控制器,其中:

1. kube-apiserver

kube-apiserver对外暴露了Kubernetes API。它是的 Kubernetes 前端控制层。它被设计为水平扩展,即通过部署更多实例来缩放

2. etcd数据库

etcd主要为kubernetes的后端数据库,就与k/v方式存储,所有的k8s集群数据都存放在此处。

3. kube-controller-manager

kube-controller-manager运行控制器,它们是处理集群中常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成独立的可执行文件,并在单个进程中运行。这些控制器包括:

节点控制器: 当节点移除时,负责注意和响应。

副本控制器: 负责维护系统中每个副本控制器对象正确数量的 Pod。

端点控制器: 填充 端点(Endpoints) 对象(即连接 Services & Pods)。

服务帐户和令牌控制器: 为新的命名空间创建默认帐户和 API 访问令牌
4. 云控制器管理器-(cloud-controller-manager)

cloud-controller-manager是用于与底层云提供商交互的控制器。云控制器管理器可执行组件是 Kubernetes v1.6 版本中引入的 Alpha 功能。

cloud-controller-manager仅运行云提供商特定的控制器循环。您必须在kube-controller-manager 中禁用这些控制器循环,您可以通过在启动 kube-controller-manager 时将 --cloud-provider 标志设置为external来禁用控制器循环。

cloud-controller-manager允许云供应商代码和Kubernetes核心彼此独立发展,在以前的版本中,Kubernetes 核心代码依赖于云提供商特定的功能代码。在未来的版本中,云供应商的特定代码应由云供应商自己维护, 并与运行 K8s 的云控制器管理器相关联。具有云提供商依赖关系:

节点控制器: 用于检查云提供商以确定节点是否在云中停止响应后被删除

路由控制器: 用于在底层云基础架构中设置路由

服务控制器: 用于创建,更新和删除云提供商负载平衡器

数据卷控制器: 用于创建,附加和装载卷,并与云提供商进行交互以协调卷
5. kube-scheduler

kube-scheduler监视没有分配节点的新创建的 Pod,选择一个节点供他们运行,即pod的调度

6. 插件(addons)

插件是实现集群功能的 Pod 和 Service。 Pods 可以通过 Deployments,ReplicationControllers 管理。插件对象本身是受命名空间限制的,被创建于 kube-system 命名空间。Addon 管理器用于创建和维护附加资源。

主要包括以下插件:

  1. DNS域名注册服务

为 Kubernetes 服务提供DNS记录,Kubernetes 启动的容器自动将 DNS 服务器包含在 DNS 搜索中。

  1. dashboard用户界面

为kubernetes集群提供一个状态概览的UI界面。

3.容器监控

容器资源监控将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供用于浏览这些数据的界面

4.日志采集

负责将容器的日志数据保存到一个集中的日志存储中,该存储能够提供搜索和浏览接口。

node节点



node节点组件在每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行时环境。其中包括以下组件:

1. kubelet

kubelet是主要的节点代理,它监测已分配给其节点的 Pod(通过 apiserver 或通过本地配置文件),提供如下功能:挂载 Pod 所需要的数据卷(Volume)。

1.下载 Pod 的 secrets。

2.通过 Docker 运行(或通过 rkt)运行 Pod 的容器。

3.周期性的对容器生命周期进行探测。

4.通过创建镜像Pod(Mirror Pod) 将 Pod 的状态报告回系统的其余部分。

5.将节点的状态报告回系统的其余部分
2. kube-proxy

kube-proxy通过维护主机上的网络规则并执行连接转发,实现了Kubernetes服务代理

3. container runtime interface

运行容器的cri,比如:container 或者rkt

4. supervisord

supervisord 是一个轻量级的进程监控系统,可以用来保证 kubelet 和 docker 运行。

5. Fluentd

fluentd 是一个守护进程,它有助于提供集群层面日志 集群层面的日志

全局组件



全局组件主要指的是CNI,即容器网络,它贯穿整个kubernetes集群,不管master节点应用还是node节点应用都必须同处于一个网络,从而保证整个服务正常访问!

以上就是整个k8s节点相关的功能介绍,具体介绍请参考kubernetes官方文档!

原文地址:https://blog.51cto.com/blief/2387377

时间: 2024-07-31 15:20:45

浅谈kubernetes:master节点和node节点的相关文章

浅谈 kubernetes service 那些事(上篇)

欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.问题 首先,我们思考这样一个问题: 访问k8s集群中的pod, 客户端需要知道pod地址,需要感知pod的状态.那如何获取各个pod的地址?若某一node上的pod故障,客户端如何感知? 二.k8s service 什么是service 是发现后端pod服务: 是为一组具有相同功能的容器应用提供一个统一的入口地址: 是将请求进行负载分发到后端的各个容器应用上的控制器. 对service的访问来源 访问service的请求来源有两种:k8s集

浅谈 kubernetes service 那些事

说明 关于 k8s 服务这一块知识,我之前的博文中有些实例应用和说明.下面分享几位大佬的文章,加固对 service 这块有更深的理解- 分享 浅谈 kubernetes service 那些事 本文详细介绍了 k8s service 实现原理和新特性,值得深度拜读和理解- K8s Deployment YAML 名词解释 本文对 Deployment yaml 名词进行了详细解释,值得参考学习- 使用 k8s 部署你的第一个应用: Pod,Deployment 与 Service 通过简单的

k8s master 节点和 node 节点 启动分析

Master 节点 coredns 2 个 ,对应的pause 容器 2 个flannel 1 个 ,对应的pause 容器 1 个proxy 1 个 ,对应的pause 容器 1 个scheduler 1 个 ,对应的pause 容器 1 个controller 1 个 ,对应的pause 容器 1 个apiserver 1 个 ,对应的pause 容器 1 个etcd 1 个 ,对应的pause 容器 1 个 master 节点 端口监听情况 kubelet TCP:10248kubelet

Kubernetes集群部署之五node节点部署

部署kubelet: 1.二进制包准备 将软件包可执行文件从k8s-master复制到node节点中去. [[email protected] ~]# cd /usr/local/src/kubernetes/server/bin [[email protected]-master bin]# scp kubelet kube-proxy 10.200.3.106:/opt/kubernetes/bin/ [[email protected]-master bin]# scp kubelet k

手动安装K8s第六节:node节点部署-kubelet

部署kubelet1.准备二进制包[[email protected] ~]# cd /usr/local/src/kubernetes/server/bin/ [[email protected] bin]# scp kubelet kube-proxy k8snode1:/opt/kubernetes/bin/ [[email protected] bin]# scp kubelet kube-proxy k8snode2:/opt/kubernetes/bin/ 2.创建角色绑定[[ema

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

0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 master 服务器的组件有:kube-apiserver.kube-controller-manager.kube-scheduler 因此需要下载k8s master,下载地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGE

[经验交流] Active-Active 方式设置 kubernetes master 多节点高可用

关于 kubernetes master 多节点以及高可用,网上的方法多采取 Active-Standby 方式,即: 通过 pacemaker 等软件使得某种 master 服务(apiserver,scheduler,controller-manager)同一时间只运行一个实例.具体来说,如果有多台master node,上面都安装了scheduler,controller-manager, apiserver: 对于schduler服务,同一时间只在一台master 节点上运行, 对于co

Kubernetes master节点的高可用配置

了解Kubernetes架构都知道Master节点在整个集群中的位置,为了保证整个架构的高可用,Kubernetes提供了HA的架构,处于兴趣和对架构的进一步了解,我在自己的电脑实践以下. 环境: CentOS 7.3,Kubernetes版本 Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1", GitCommit:"82450d03cb057b

三、安装并配置Kubernetes Node节点

1. 安装并配置Kubernetes Node节点 1.1 安装Kubernetes Node节点所需服务 yum -y install kubernetes ? 通过yum安装kubernetes服务时默认将所有的Kubernetes服务全部安装,我们只需要在Master和Node上启动相应的服务即可. 1.2 修改Kubernetes服务配置文件 vim /etc/kubernetes/config KUBE_LOGTOSTDERR="--logtostderr=true" KUB