内容主要摘自官网文档资料 官网地址

本文概述了交付正常运行的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.组件的更多相关文章

  1. kubernetes kubelet组件中cgroup的层层"戒备"

    cgroup是linux内核中用于实现资源使用限制和统计的模块,docker的风靡一时少不了cgroup等特性的支持.kubernetes作为容器编排引擎,除了借助docker进行容器进程的资源管理外 ...

  2. kubernetes的组件和概念介绍

    1.控制平面组件(也被称为master节点组件) 控制平面的组件我们会找一台单独的机器来部署,我们习惯上把部署控制平面组件的机器称为master节点,以下都会用master节点来代替控制平面这个概念, ...

  3. k8s/Kubernetes常用组件Helm的部署

    Helm的安装 1.Helm的基本概念 Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理.可以把Helm比作CentOS的yum工具. Helm有如下几个基 ...

  4. centos7下kubernetes(4.kubernetes组件)

    Kubenetes cluster 由master和node组成 Master是kubenetes的大脑.运行着以下进程:kube-apiserver.kube-scheduler.kube-cont ...

  5. Kubernetes【K8S】(一):Kubernetes组件

    什么是Kubernetes ​ Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化.Kubernetes拥有一个庞大且快速增长的生态系统. ...

  6. Kubernetes初步

    Kubernetes是Google开源的容器集群管理系统.它构建于docker技术之上.为容器化的应用提供资源调度.部署执行.服务发现.扩容缩容等整一套功能.本质上可看作是基于容器技术的mini-Pa ...

  7. Ubuntu上手动安装Kubernetes

    背景 两台Ubuntu16.04服务器:ip分别为192.168.56.160和192.168.56.161.. Kubernetes版本:1.5.5 Docker版本:1.12.6 etcd版本:2 ...

  8. China Azure中部署Kubernetes(K8S)集群

    目前China Azure还不支持容器服务(ACS),使用名称"az acs create --orchestrator-type Kubernetes -g zymtest -n kube ...

  9. Kubernetes 架构(上)- 每天5分钟玩转 Docker 容器技术(120)

    Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务. Master 节点 Master 是 Kubernetes Cluster ...

  10. Kubernetes 概念整理

    注:以下大部分内容来自网上摘录,以便后期查阅. Kubernetes (通常称为 K8s) 是用于自动部署.扩展和管理容器化(containerized)应用程序的开源系统,是 Google 内部工具 ...

随机推荐

  1. Java工作中的并发问题处理方法总结

    Java工作中常见的并发问题处理方法总结 好像挺久没有写博客了,趁着这段时间比较闲,特来总结一下在业务系统开发过程中遇到的并发问题及解决办法,希望能帮到大家 问题复现 1. "设备Aの奇怪分 ...

  2. Codeforces Round #574 (Div. 2) E.OpenStreetMap

    题目链接 题目的意思就是给你一个矩阵你要求给定子矩阵的最小值的和 单调队列扫两边即可 #include <bits/stdc++.h> #define ll long long #defi ...

  3. 回溯法、子集树、排列树、满m叉树

    显示图: 明确给出了图中的各顶点及边 隐式图: 仅给出初始节点.目标节点及产生子节点的条件(一般有问题提议隐含给出)的情况下,构造一个图. 回溯法: 从初始状态出发,在隐式图中以深度优先的方式搜索问题 ...

  4. HDOJ 1848(SG函数)

    对于SG函数来说,sg[y]=x的意义为,x与y的输赢状态是相同的 sg[y]=mex(y)的定义与n.p点的定义是相同的 #include<iostream>#include<cs ...

  5. UVA 11475 Extend to Palindrome (kmp || manacher || 后缀数组)

    题目链接:点击打开链接 题意:给你一个串,让你在串后面添加尽可能少的字符使得这个串变成回文串. 思路:这题可以kmp,manacher,后缀数组三种方法都可以做,kmp和manacher效率较高,时间 ...

  6. C# TCP应用编程一 概述

    TCP 是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP 体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务.一旦通信双方建立了TCP 连接 ...

  7. 男孩周末班-k8s-架构图

    k8s-三层网络结构图 k8s-核心组件原理图 k8s-服务架构图 k8s-部署架构 小结 RBAC 用户账户: 角色: role(普通角色),只能运行在特定名称空间下 clusterrole,对集群 ...

  8. OpenStack Train版-10.安装neutron网络服务(网络节点:可选)

    可选:安装neutron网络服务节点(neutron01网络节点192.168.0.30)网络配置按照官网文档的租户自助网络 配置系统参数 echo 'net.ipv4.ip_forward = 1' ...

  9. KEIL + STM32 续

    接上一篇,debug出现问题 1.手动安装STM32 芯片包   Keil.STM32F1xx_DFP.2.2.0.pack; https://www.keil.com/dd2/Pack/ 百度网盘  ...

  10. python 编码问题随笔

    原文点击这里 借用原作者的一句话"据说,每个做 Python 开发的都被字符编码的问题搞晕过,最常见的错误就是 UnicodeEncodeError.UnicodeDecodeError,你 ...