Master

k8s里的master指的是集群控制节点,每个k8s集群里需要有一个Master节点来负责整个集群的管理和控制,基本k8s所有控制命令都发给它,它负责整个具体的执行过程,后面执行操作基本都是在master节点上运行的,master通常会占据一个独立的服务器(高可用建议3台至少),主要原因它太重要,是整个集群的首脑,如果宕机不可用,那么对集群内容器应用管理都将失效

Master节点上运行的程序
kubernetes API Server (kube-apiserver):提供了HTTP Rest接口的关键服务进程,是kubernetes里所有资源的增删改查等操作唯一入口,也是集群控制入口进程

Kubernetes Controller Manager (kube-controller-manager):Kubernetes里所有资源对象的自动化控制中心,可以理解资源对象的“大总管”。

Kubernetes Schedule (kube-scheduler):负责资源调度(pod调度)的进程,相当于公交公司的“调度室”

另外,在Master节点上还需要启动一个etcd,因为Kubernetes里的所有资源对象的数据全部保存etcd中的

Node  

除了master,kubernetes集群的其他机器被称为node节点,在较早的版本中也称为Minion节点。与master一样,node节点可以是一台物理主机,也可以是台虚拟机。node节点才是kubernetes集群中的工作负载节点,每个node都会被maste分配一些工作负载,当某个node宕机时,其上的工作负载会被master自动转移到其他节点。

每个Node有核心程序kubelet、容器运行时环境和kube-proxy

来自k8s中文社区

Kubernetes特性

      Kubernetes 是一种用于在一组主机上运行核协同容器化应用程序的系统,指在提供可预测性、可扩展性与高可用性的方式来完全管理容器化应用和生命周期的平台。用户可以定义应用程序的运行方式,以及与其他应用程序或者外界交互的途径,并能实现服务的扩容和缩容,执行平滑滚动更新。以及在不同版本之间调度流量以测试功能或回滚有问题的部署,Kubernetes提供了接口和和组合的平台原语,使得用户能够以高度的灵活性和可靠性定义管理应用程序。简单总结起来,它具有以下几个重要特性

(1) 自动封装:构建与容器之上基于资源依赖以及其他约束自我完成容器的部署且不影响可以性,并通过调度机制混合关键型应用和非关键型应用的工作负载与同一个节点以提高资源的利用率。

(2)自我修复(自愈):支持容器故障后自动重启、节点故障后重新调度容器,以及其他可以节点的健康状态监测失败后关闭容器并重新创建等自我修复机制

(3)水平扩展:支持通过简单的命令或者UI手动水平扩展,以及基于CPU等资源负载率的自动水平扩展机制。

(4)服务发现和负载均衡:Kubernetes通过其附加组件之一的KubeDNS(或CoreDNS)为系统内置了服务发现功能,他为每个server配置DNS名称,并允许集群内部的客户端直接使用此名称发出请求,而server则通过iptables或者ipvs内建了负载均衡机制

(5)自动发布和回滚:Kubernetes支持“灰度”更新应用程序或其他配置信息,它会监控更新过程中应用程序的健康状态,以确保它不会再同一时刻杀掉所有实例,而此过程中一旦发生故障,就会立即执行回滚操作

(6)密钥和配置管理:Kubernetes的ConfigMap实现了配置数据与Docker镜像的解耦,需要时,仅对配置做出更新而无需重构Docker镜像,这为开发应用部署带来了很大的灵活性。此外,对于应用所依赖的一些敏感信息,如用户名、密码、令牌、密钥等信息,Kubernetes专门提供了secret对象为其解耦,及便利; 应用的快速开发和交付,有提供了一定程度上的安全保障。

(7)存储编排:Kubernetes支持pod对象按需自动挂载不同类型的存储系统,这包括本地存储、公有云服务商的云存储(如AWS和GCP等),以及网络存储系统(如,NFS、iscsi、GlusterFS、Ceph、Cinder和Flocker等)

(8)批量处理执行操作:除了服务型应用、Kubernetes还支持批量处理作业及CI(持续集成),如果需要,一样可是实现容器故障后恢复

Kubernetes概念及术语

Kubernetes使用共享网络将多个主机或虚拟机汇集到一个集群里,在各个服务器之间进行通信,该集群是配置Kubernetes的所有组件、功能和负载均衡的物理平台,集群中一台服务器(或者高可用部署中的一组服务器)用于Master,负载管理整个集群,余下的其他机器作为Node,它们是使用本地和外部资源接收和运行工作负载的服务器。机器中这些服务器可以是物理主机,也可以是虚拟机。

(1) Master是集群的网关和中枢,负载诸如为用户和客户端暴露API、跟踪其他服务的健康状态,以最优方式调度工作负载、以及编排其他组件之间的通信等任务,它是用户或客户端与集群之间的核心联络点,并负载Kubernetes系统的大多数集中式管控逻辑。但Master节点即可完成所有的功能,但出于冗余及负载均衡等目的,生产环境中通常需要协同部署多个此类主机,Master节点类似于集群中的蜂王

(2)Node 是Kubernetes集群中的工作节点,负载接收master的工作指令并根据指令响应地创建或销毁pod对象,以及调整网络规则以合理地路由和转发流量等。理论上讲Node节点可以是任何形式的计算设备,不过Master会同一将其抽象为Node对象进行管理,Node类似于封群中的工蜂,生产环境中他们数量众多;Kubernetes将所有Node节点资源集结一处形成一台更加强大的“服务器”,用户将所有应用程序部署其上式,Master会使用调度算法将其自动指派到某个特定的Node节点上运行,在Node加入集群或者从集群移除是,Master也会按需重新编排影响到的Pod。于是,用户无需关心其应用究竟运行与何处。从抽象的角度讲,Kubernetes还有众多组件来支持其内部的业务逻辑,包括运行应用、应用编排、服务暴露、应用恢复等,它们在Kubernetes中抽象为pod、service、Controller等资源类型。几个常用的资源抽象

pod:Kubernetes中的最小调度单位。同一个Pod中容器共享网络名称空间和存储资源,这些容器可经过本地回环接口lo直接通信,但彼此直接有在mount、User及PID等名称空间上保持隔离。尽管pod里可以包含多个容器,但作为最小调度单元,它应该尽可能保持少数的容器,即通常只包含一个主容器,以及必要的辅助容器

资源标签:标签(Label)是将资源进行分类的标识符,资源标签其实是键值型(key/values)数据。标签只在指定的对象(pod)等辨识性的属性,这些属性仅对用户存在特定意义,对Kubernetes集群来说并不直接表达系统语义。标签可以在创建对象时附加其上,并能在创建后人以时间修改。一个对象可以拥有多个标签,一个标签也可以附加与多个对象(通常是同一类对象)之上

标签选择器:标签选择器(selector)全称为“Lable selector”,它是一种根据Lable 过滤符合条件的资源过滤机制;例如,将来附有标签“role:backend”的所有pod对象挑选出来归为一组就是标签选择器的一种应用场景。用户通常使用标签对资源对象进行分类,而后使用标签选择器选择他们。

pod控制器:尽管pod是Kubernetes中最小调度单元,但用户通常不会直接部署及管理pod对象,而是借助于pod控制器Controller对其进行管理,用于负载的控制器是一种管理pod生命周期的资源抽象,他们可以是Kubernetes上的一类对象而非单个资源对象,包括ReplicationController、ReplicaSet、Deployment、StatefulSet、job等,它负责确保pod对象的副本数量精确符合定义,否则“多退少补”。使用控制器之后就不需要手动管理pod对象了,用户只需要声明应用的期望状态,控制器就会自动对其进行进程管理。

服务资源(service):service是建立在一组pod对象上的资源抽象,它通过标签选择器选定一组pod对象,并为这组对象定义同一访问入口(通常一个IP地址),若Kubernetes集群存在DNS组件,他会在service创建时为其自动分配一个DNS名称,以便客户端进行服务发现。到达service IP 后的请求将会负载均衡至其后端各个pod对象上,因此service从本质上讲是一个四层代理服务,另外service还可以将集群外部流量引入集群中来。

存储卷:存储卷(volume)是独立于容器文件系统之外的存储空间,常用于扩展容器存储空间并为它提供持久存储能力。Kubernetes集群的存储卷大体分为临时卷、本地卷和网络卷。临时卷和本地卷位于Node本地,一旦pod被调度至其他Node,此种类的存储卷将无法访问到,因为临时卷和本地卷通常用于数据缓存,持久化数据则要放在持久卷之上

name和namespace:名称(name)是Kubernetes集群资源中资源对象标识符,他们的作用域通常是名称空间(namespace),因此名称空间是名称的额外限制,同一个名称空间中,同一类资源对象名称必须具有唯一性,名称空间通常用于租户和项目资源隔离,从而形成逻辑分组。创建pod和server等资源对象都属于名称空间级别定义,未指定时,他们都属于默认的名称空间“defalt”

Annotation:Annotation(注解):是另一种附加在对象之上的键值类型的数据,但他拥有更大的数据容量。Annotation常用于将各种非标识型元数据附加到对象上,但不能用于标识和选择对象,通常也不会被Kubernetes直接使用,其主要目的是方便工具或用户的阅读及查找等。

Ingress:Kubernetes将pod对象和外部网络进行了隔离,pod和service等对象间的通信都使用其内部专用地址进行,若放开某些pod对象供外部用户访问,则需要将请求流量打开一个通往Kubernetes集群内部的通道,除了service之外,Ingress也是这类通道得出实现方法之一

k8s 基础概念和术语的更多相关文章

  1. k8s记录-k8s基本概念和术语

    每次个节点上当然都要运行Docker.Docker来负责所有具体的映像下载和容器运行. Kubernetes主要由以下几个核心组件组成: etcd保存了整个集群的状态: apiserver提供了资源操 ...

  2. k8s上的基础概念和术语

    kubernetes基本概念和术语   kubeernetes中的大部分概念如Node,Pod,Replication Controller ,Serverce等都可以看作一种“资源对象”,几乎所有的 ...

  3. Kubernetes 学习2 k8s基础概念

    一.架构描述 1.基本架构 2.pod ,有两类 a.自主式pod 自我管理的,创建之后,任然是需要提交给API Server,API Server接受之后然后由调度器调度到指定的 node节点,由n ...

  4. k8s 基础概念

    摘录自k8s中文社区https://www.kubernetes.org.cn/course kubernetes 源自希腊文,意为舵手,k与s之间是8个字母,所以也叫k8s, docker就像一个个 ...

  5. 图解 K8s 核心概念和术语

    我第一次接触容器编排调度工具是 Docker 自家的 Docker Swarm,主要解决当时公司内部业务项目部署繁琐的问题,我记得当时项目实现容器化之后,花在项目部署运维的时间大大减少了,当时觉得这玩 ...

  6. K8S基础概念

    一.核心概念 1.Node Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod.Node上运行着Kubernetes的Kubelet.kube ...

  7. zookeeper,及k8s基础概念

    1.描述zookeeper集群中leader,follower,observer几种角色 Zookeeper: 分布式系统:是一个硬件或软件组件分布在网络中的不同的计算机之上,彼此间仅通过消息传递进行 ...

  8. 深入解析Windows操作系统笔记——CH1概念和术语

    1.概念和工具 本章主要介绍Windows操作系统的关键概念和术语 1.概念和工具 1.1操作系统版本 1.2基础概念和术语 1.2.1Windows API 1.2.2 服务.函数和例程 1.2.3 ...

  9. ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建

    在上一个小系列文章<ASP.NET Core on K8S学习初探>中,通过在Windows上通过Docker for Windows搭建了一个单节点的K8S环境,并初步尝试将ASP.NE ...

随机推荐

  1. java的Set, List, Map简单介绍

    Set, List, Map Set和List,Map都是集合,Set和List都是继承于Collection接口,而Map不是. 1.Map(映射) :Map是以key,Value的形式存储数据的映 ...

  2. 八大排序算法java代码

    1.冒泡排序 public static void main(String[] args) { int[] arr = {1,4,2,9,5,7,6}; System.out.println(&quo ...

  3. swift日期操作

    简介:本文将介绍一些关于swift中对于日期的格式化与获取,支持swift4.0 extension Date { //格式化日期 func getDateString() -> String{ ...

  4. IntelliJ IDEA-Git提交和更新

    提交和更新 通过上一个知识点创建项目的操作之后,就拿到了一个自己的项目在IDEA里进行提交和更新是非常方便的,接下来就会进行演示 修改HiWorld 把HiWorld随便改改,只要和以前不一样就行 提 ...

  5. HDU2846【字典树】

    题意: 百度. 思路: 一个串的插入只能搞出这个串的前缀,然而对于要query的串是子串,所以插入的时候暴力插入所有字母开头的串.... 然后还要注意到自己的串本身会叠加字典树中的前缀,要标记掉. # ...

  6. Mol Cell Proteomics. |王欣然| 基于微粒的蛋白聚合物捕获技术让能满足多种不同需求的蛋白质组学样品制备方法成为可能

    大家好,本周分享的是发表在Molecular & Cellular Proteomics. 上的一篇关于蛋白质组学样本质谱分析前处理方法改进的文章,题目是Protein aggregation ...

  7. 考虑实现Comparable接口

    考虑实现Comparable接口   compareTo方法没有在Object中声明.相反,它是Comparable接口中唯一的方法.compareTo方法不但允许进行简单的等同性比较,而且允许执行顺 ...

  8. PL/SQL基础知识

    Oracle之PL/SQL学习笔记 自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了 ...

  9. python连接redis数据库的两种方式

    代码: # __author__ = 'STEVEN' import redis # 方式1,直接连接 # r = redis.Redis(host='192.168.43.22',port=6379 ...

  10. 页面嵌套时js失效解决方法

    事件:iframe或easyui的dialog嵌套页面时,被嵌套的页面可能js因位置失效; 解决: //动态加载js(根据父级html位置计算) jQuery.getScript("scri ...