工作原理:

原理图

工作原理描述:

1>用户通过kubectl或者API server的REST API接口,提交需要运行的docker容器(创建pod请求);

2>api server将创建pod的相关请求数据存储到etcd(存储中心)中;

3>scheduler监听API server,查询还未分配的Node的Pod,然后根据调度策略为这些Pod分配节点;

4>kube-let则负责在所在的Node节点上接收主节点发来的指令,管理Pod以及Pod中的容器,并定时向master主节点汇报节点资源的使用情况以及容器的情况;

5>controller-manager 则通过api-service监控整个集群的状态,并确保集群处于预期的工作状态

6>

基础概念:

将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。

一个K8S系统,通常称为一个K8S集群(Cluster)。

这个集群主要包括两个部分:

    一个Master节点(主节点)

    一群Node节点(计算节点)

Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。

Master节点包括API Server、Scheduler、Controller manager、etcd。

API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。

Scheduler负责对集群内部的资源进行调度,相当于“调度室”。

Controller manager负责管理控制器,相当于“大总管”。
Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。

Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。
除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。 Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。 Kube-proxy,主要负责为Pod对象提供代理。 Fluentd,主要负责日志收集、存储与查询。
.ETCD[主节点安装]
etcd服务是数据中心。用于持久化存储信息。要求高可用和数据一致性。即多部署几个master节点
存储哪些信息:k8s有本身的节点信息、组件信息、运行的pod、service都需要做持久化 .kube-api-server[主节点安装]
api-server提供集群管理的API接口,包括认证授权、数据校验、集群状态变更、其他模块之间的数据交互和通信
其他模块,都是通过api-server查询操作数据,也就是说只有api-server才能直接操作etcd .controllerManager[主节点安装]
controllerManager是kubernetes的大脑,它通过api-service监控整个集群的状态,并确保集群处于预期的工作状态
组成:controller-manager是由 kube-controller-manager 和 cloud-controller-manager组成
kube-controller-manager是由 一系列控制器组成,Replication Controller控制副本、Node Controller节点控制、Deployment Controller管理deployment等等
cloud-controller-manager是在k8s启用Cloud provider的时候,需要用来配合云服务提供商的控制 .Scheduler[主节点安装]
kube-scheduler负责实现调度策略,分配调度Pod到集群内的节点上,它监听api-server,查询还未分配的Node的Pod,然后根据调度策略为这些Pod分配节点 .Calico[所有节点安装]
Calico实现了CNI接口,是kubernetes网络方案的一种选择。
Calico在每一个计算节点利用Linux Kernel实现了一个高效的vRouter来负责数据转发,
而每个vRouter通过BGP协议负责把自己上运行的workload的路由信息像整个Calico网络内传播——小规模部署可以直接互联,大规模下可通过指定的BGP route reflector来完成。 这样保证最终所有的workload之间的数据流量都是通过IP路由的方式完成互联的。 .flannel[所有节点安装]
kubernetes网络方案的另一种选择 .kube-ctl[任意节点安装]
kubectl是Kubernetes的命令行工具,是Kubernetes用户和管理员必备的管理工具。
kubectl提供了大量的子命令,方便管理Kubernetes集群中的各种功能。 .kube-let[工作节点安装]
kube-let就是会在每个工作节点上都运行一个kubelet服务进程,默认监听10250端口。
kube-let负责接收并执行master发来的指令,管理Pod以及Pod中的容器。
每个kubelet进程会在API Server上注册节点自身信息,定期向master节点汇报节点的资源使用情况,并通过cAdvisor监控节点和容器的资源。 .kube-proxy[工作节点安装][对外]
kube-proxy保证集群内的服务,可以被集群外访问到。
每台工作节点上都应该运行一个kube-proxy服务,它监听API server中service和endpoint的变化情况,并通过iptables等来为服务配置负载均衡,是让我们的服务在集群外可以被访问到的重要方式。 .kube-dns[独立服务][对内]
kube-dns保证集群内的服务,可以被集群内的pod互相访问到。
kube-dns为Kubernetes集群提供命名服务,主要用来解析集群服务名和Pod的hostname。目的是让pod可以通过名字访问到集群内服务。它通过添加A记录的方式实现名字和service的解析。普通的service会解析到service-ip。headless service会解析到pod列表。

【k8s】基础概念 + 工作原理的更多相关文章

  1. Zookeeper与Kafka基础概念和原理

    1.zookeeper概念介绍 在介绍ZooKeeper之前,先来介绍一下分布式协调技术,所谓分布式协调技术主要是用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种共享资源,防止造成 ...

  2. k8s 基础概念

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

  3. PhoneGap架构基础及工作原理介绍

    转自:http://mobile.51cto.com/others-308545.htm 本篇文章从PhoneGap由来.功能以及工作原理,力争由浅入深介绍PhoneGap框架.   为什么需要Pho ...

  4. 11.深入k8s:kubelet工作原理及源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 kubelet信息量是很大的,通过我这一篇文章肯定是讲不全的,大家可 ...

  5. web基础-web工作原理,http协议,浏览器缓存

    1,web工作原理 2,http协议 3,浏览器缓存 4,cookie和session -------------------------------------------------------- ...

  6. k8s 基础概念和术语

    Master k8s里的master指的是集群控制节点,每个k8s集群里需要有一个Master节点来负责整个集群的管理和控制,基本k8s所有控制命令都发给它,它负责整个具体的执行过程,后面执行操作基本 ...

  7. k8s 理解Service工作原理

    什么是service? Service是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法. 简单来说K8s提供了service对象来访问pod.我们在<k8s网络模型与集群通信> ...

  8. JNI基础概念以及原理-2016.01.11

    Java到C数据类型转换 1 基础类型 Java与Jni类型对应关系 2 String到char数组 具体使用方式 JNIEXPORT jstring JNICALL Java_com_zhoulee ...

  9. K8S基础概念

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

随机推荐

  1. inline-block元素间隙问题原因及解决方法

    inline-block元素间隙问题原因及解决方法 原因: 书写时由空格.换行或回车所产生空白符所致 解决方法: 方法1:font-size:0 方法2:改变书写方式 方法3:使用margin负值 方 ...

  2. Codeforces 463D Gargari and Permutations(求k个序列的LCS)

    题目链接:http://codeforces.com/problemset/problem/463/D 题目大意:给你k个序列(2=<k<=5),每个序列的长度为n(1<=n< ...

  3. Storm常用操作命令及WordCount

    Storm常用操作命令 1.任务提交命令:storm jar [jar路径] [拓扑包名.拓扑类名] [拓扑名称] storm jar /export/servers/storm/examples/s ...

  4. 添加用户到LDAP服务器

    1.  在浏览器中打开http://ldap.example.com/phpldapadmin 2. 点击[login]链接,输入管理员密码. 3. 点击[Create a new entry her ...

  5. Python3 反向传播神经网络-Min-Batch(根据吴恩达课程讲解编写)

    # -*- coding: utf-8 -*- """ Created on Sat Jan 20 13:47:54 2018 @author: markli " ...

  6. 3种纯css方法控制元素隐藏显示

    1.通过hover,也是最常用的方式.此方法要求按钮与被控制元素必须有层级关系.(兼容低端浏览器常用) <div class="nav-btn"> <h2> ...

  7. ServletContextListener作用

    ServletContext 被 Servlet 程序用来与 Web 容器通信.例如写日志,转发请求.每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享.因为Context可 ...

  8. ADSL

    ADSL属于DSL技术的一种,全称Asymmetric Digital Subscriber Line( 非对称数字用户线路),亦可称作非对称数字用户环路.是一种新的数据传输方式. ADSL技术提供的 ...

  9. Django-ContentType-signals 实现牛逼玩法

    一.ContentType 在django中,有一个记录了项目中所有model元数据的表,就是ContentType,表中一条记录对应着一个存在的model,所以可以通过一个ContentType表的 ...

  10. hashCode()方法与equals()方法

    摘自别人的评论:http://blog.csdn.net/fhm727/article/details/5221792 当向集合Set中增加对象时,首先集合计算要增加对象的hashCode码,根据该值 ...