整体概述

k8s是一个编排工具,是谷歌的程序员根据谷歌公司内部使用的borg改简单来讲就是对整个容器资源整合,将全部容器资源统一进行调度管理。Kubernetes(k8s)是自动化容器操作的开源平台。这些容器操作包括:部署,调度和节点集群间扩展。

pod工作流程

  1. 自主式pod:能够自我进行管理的pod,自主创建之后仍然是需要提交给APIserver,接受之后,借助于scheduler调度器调度时指定node节点,由node节点来启动此pod,如果pod中容器出现故障,需要重启容器,该操作是由kubelet来进行完成,但是如果node节点出了故障了,那么pod也就消失了,运行不了了。
  2. 控制器管理的pod:引用了控制器的使用,使得pod完全可以称之为有生命周期的对象,由scheduler调度器将其调度至k8s集群中的某节点,然后启动pod,任务终止之后,就将会被清除掉。但是有一些任务是作为守护进程要求随时运行在容器中,一旦出现故障,我们要及时发现,重建或者重启容器,用接口不太容易实现。但是在k8s中提供了pod控制器,这是旧的控制器,后来出了一个新版控制器deployment在其里面LPA控制器,该组件可以水平扩展pod
    1. service组件就是iptables端口转发,手动配置的,service1.2新版本之后又加入了ipvs调度的功能。
    2. k8s核心基础组件组件有pod、service、controller控制器,pod运行容器。service和controller都是通过标签和标签选择器来识别自己治理下的pod,控制器可以对pod进行,增加,删除等等操作。
    3. service是基于名称备客户端访问和发现,所以就需要用到DNS服务,DNS服务自身也是一个pod,所以也需要service和控制器来进行管理,这个DNS的pod是基础性系统架构级pod,k8s自身就需要用到该pod
  • 监控:用的是grafana+promethos,这也是附件

k8s网络

网络模型:各个pod运行在一个网络中,在一个网络名称空间,service是一个网络但service是一个虚拟出来的ip,所在node节点是一个网络,一个有三个网络模式,分别为节点网络,集群网络,pod网络

收到请求时,由节点网络代为代理至集群网络,再有集群网络代理至pod网络

  1. 同一pod间多个容器的通信

    ​ Pod中的每个Docker容器拥有与Pod相同的IP和port地址空间,并且由于他们在同一个网络命名空间,他们之间可以通过localhost相互访问。
    什么机制让同一个Pod内的多个docker容器相互通信那?其实是使用Docker的一种网络模型:–net=container

  2. 各个pod之间的通信,它们之间的通信直接可达的,overlay叠加网络,但其实pod之间是不会直接通信的

  3. pod与service之间的通信,service只是一个虚拟IP地址,每个宿主机都有相关IPtables规则,docker就是指向一个网关,指向宿主机上,而网关收到包之后,会通过iptables规则转发转发给service,而service的地址更新等操作,其它节点有时怎么知道的呢,就引出了kube-proxy,每个节点都会有这个组件,它负责随时和APIserver保持通信,service更新时所在节点会告知APIserver,然后APIserver会生产一个任务实践,告知所有的kube-proxy,这样就完成了,不需要人为参与

flannel

它是支持CNI插件比较好的一款,支持网络配置

calico:基于BGP协议,支持网络配置和网络策略

canel:集合两种各自优点,目前用的最多

网络策略,network proxy

k8s中的名称空间和docker有所不同,它是针对于整个k8s集群而言的,一个pod分配一个名称空间,而且该名称空间只是提供一个管理上的边界,对于pod和pod之间通信并不做设置, 而网络策略就是可以通过设置iptables规则定义这些名称空间之间的访问

几套证书理解

为了安全通信

  1. APIserver和etcd之间需要双向认证证书
  2. APIserver与它的客户端也需要证书

组件

master管理节点上组件

master上的组件,APIserver上有很多数据,以及配置,所有数据都不存储在本地,而是存储在共享存储etcd上,但避免单点故障,所以一般至少需要三个master节点

  1. APIserver:该组件是提供接口服务的是以守护进程方式运行的,用户对集群进行管理时都是通过APIserver来管理整个k8s集群。整个集群的交互都是以APIserver为核心所有查询和管理操作都需要通过API来进行,所有组件模块之间不会相互调用,是通过和APIserver打交道来完成自己那部分的工作,它所有的结果状态备持久存储于etcd中。它是整个集群的网关
  2. 控制器管理器(controller manager):执行整个系统的后台任务,包括节点状态状况、Pod个数、Pods和Service的关联等。
  3. 调度器(scheduler):用于部署和管理大规模容器应用平台,APIserver确认pod对象的创建请求之后,便需要由scheduler根据集群内各节点可用资源,以及所需的资源需求作出调度决策
  4. etcd:负责节点间的服务发现和配置共享。

node节点

  1. kubelet:作为agent,接收APIserver分配该节点的Pods任务及管理容器,周期性获取容器状态,反馈给apiserver。
  2. 还有容器运行时环境,负责下载镜像并运行容器,至少包括docker环境等
  3. kube-proxy,运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略。

k8s 超详细总结

说说你对kubernetes的理解(简单)的更多相关文章

  1. 【K8s】Kubernetes架构理解

    抽空学习了一下Kubernetes,感觉和大数据领域内集群的资源管理.任务调度等有异曲同工之处,简单总结一下备忘. [概念] Kubernetes是一个工业级的容器编排平台,单词有点长,常用K8s代称 ...

  2. Kubernetes — 深入理解容器镜像

    而正如我前面所说的,Namespace 的作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”:而 Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙.这么一折 ...

  3. Flask关于请求表单的粗浅应用及理解+简单SQL语句温习

    1.请求表单 请求表单的知识点是flask数据请求中很小的一部分,首先要了解一下GET和POST请求:http://www.w3school.com.cn/tags/html_ref_httpmeth ...

  4. Kubernetes:理解资源的概念

    不知你是否已清楚,Kubernetes 是支持 Docker 和 rkt(当前是这两种)的容器调度系统.除了下面这些优美的特性,比如简易部署,配置管理,服务发现,等等,它还允许我们以一种更高效的方式来 ...

  5. Kubernetes的Ingress简单入门

    目录 一.什么是Ingress 二.部署Nginx Ingress Controller 三.部署一个Service将Nginx服务暴露出去 四.部署一个我们自己的服务Cafe 五.部署ingress ...

  6. kubernetes版本apiversion简单说明

    在使用yaml文件部署Deployment项目时,出现过 error: error validating "xx-Deployment.yaml": error validatin ...

  7. DFS与BFS——理解简单搜索(中文伪代码+例题)

    新的方法和概念,常常比解决问题本身更重要. ————华罗庚 引子 深度优先搜索(Deep First Search) 广度优先搜索(Breath First Search) 当菜鸟们(比如我)初步接触 ...

  8. kubernetes集群简单实例搭建

    systemctl stop firewalld && systemctl disable firewalldvim /etc/selinux/configSELINUX=disabl ...

  9. [Kubernetes]深入理解StatefulSet

    前面我写的一系列博客,如果你能够耐心看到这一篇,那你应该对一个概念就不是太陌生了:Deployment. 为什么提这个概念呢,这就要说到Deployment的一个不足了.Deployment不足以覆盖 ...

随机推荐

  1. SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子

    一起来学演化计算-SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子 觉得有用的话,欢迎一起讨论相互学习 ...

  2. Vue学习笔记十:过滤器

    目录 公共过滤器的写法 简易过滤器+带参数过滤器+多过滤器 私有过滤器 公共过滤器的写法 过滤器的写法还是很简单的 ,如下 <p>{{ msg | filtermsg }}</p&g ...

  3. 08点睛Spring4.1-Profile

    8.1 Profile Profile让在不同环境下使用不同的配置提供了支持(如开发环境下的配置和生产环境下的配置肯定是不同的,如:数据库的配置); 通过设定Environment的ActivePro ...

  4. skynet sproto 问题

    刚碰到一个小细节,纠结了半个小时 sproto的协议,request 和{ 必须有空格

  5. 理解Hybrid接口的应用

    Hybrid接口既可以连接普通终端的接入链路又可以连接交换机间的干道链路,特允许多个vlan的帧通过,并可以在出接口方向将某些vlan帧的标签剥掉. 通过配置Hybrid接口,能过实现对VLAN标签的 ...

  6. QT QML之Label, TextField

    现在不是去想缺少什么的时候,该想一想凭现有的东西你能做什么.------ 海明威 <老人与海> Label { id: tipLabel width: 120 height: 40 tex ...

  7. mac upgrade node and npm

    一直以来, 我们都可以很轻松的更新npm: npm install npm -g 而Node我却是很久没有更新了, 记得当时好像是使用安装包安装的, 实际上有更加简单的安装方法. 实际上Mac上有一个 ...

  8. CodeForces-1159B-Expansion coefficient of the array

    B. Expansion coefficient of the array time limit per test:1 second memory limit per test:256 megabyt ...

  9. python3快速安装升级pip3

    一.下载地址: 获取get-pip.py安装文件: 官网链接:https://bootstrap.pypa.io/get-pip.py 百度云链接:https://pan.baidu.com/s/14 ...

  10. 设计模式--装饰者模式(io流中使用的模式)

    重点: 1.动态扩展对象,替换之前需要继承才能实现的功能. 2.具体工作的,仍然是被包装的对象,(有点锦上添花的意思,顾名思义仅仅起到装饰的作用,主体不变). 对比继承: 1.减少类的数量. 如果使用 ...