系列文章说明

本系列文章,可以基本算是 老男孩2019年王硕的K8S周末班课程 笔记,根据视频来看本笔记最好,否则有些地方会看不明白

需要视频可以联系我

k8s概念入门

[K8S中文社区](http://docs.kubernetes.org.cn/

1 四组基本概念

  1. Pod/Pod控制器
  2. Name/Namespace
  3. Lable/Label选择器
  4. Service/Ingress

1.1 POD和POD控制器

kubernetes 的pod控制器

  1. Pod

    k8s里能够被运行的最小逻辑单元

    1个POD里面可以运行多个容器(SideCar 边车模式)

    POD中的容器共享 UTS/NAT/IPC 名称空间

    POD和容器颗粒理解为豌豆荚和豌豆

  2. Pod控制器

    Pod控制器是Pod启动的一种模板

    用来保证在K8S里启动的Pod始终按预期运行

    包括副本数\生命周期\健康检查等

  3. 常用的Pod控制器:

    控 度器名称 用途简述
    Deployment 用于管理无状态应用,支持滚动更新和回滚
    DaemonSet 确保集群中的每一个节点上只运行一个特定的pod副本
    ReplicaSet 确保pod副本数量符合用户期望的数量状态
    StatefulSet 管理有状态应用
    Job 有状态,一次性任务
    Cronjob(定时任务) 有状态,周期性任务

1.2 Name/Namespace

  1. Name

    K8S使用'资源'来定义每一种逻辑概念(功能)

    每种'资源'都应该有自己的'名称'

    '名称'通常定义在'资源'的元数据(metadata)信息中

    资源的配置信息包括

    • API版本(apiVersion)
    • 类别(kind)
    • 元数据(metadata)
    • 定义清单(spec)
    • 状态(status)
  2. Namespace

    名称空间用于隔离K8S内各种资源,类似K8S内部的虚拟分组

    同一个名称空间中,相同资源的名称不能相同

    默认的名称空间为default,kube-system,kube-public

    查询特定资源,要带上相应的名称空间

1.3 Lable/Label选择器

  1. Lable

    标签的作用是便于分类管理资源对象

    标签与资源之间是多对多的关系

    给一个资源多个标签,可以实现不同维度的管理

  2. Lable选择器

    可以使用标签选择器过滤指定的标签

    标签选择器有基于等值关系(等于,不等于)和基于集合关系(属于,存在)的两种

    许多资源都支持内嵌标签选择器字段:matchLablesmatchExpressions

1.4 Service/Ingress

  1. Service(重点)

    POD会分配IP地址,但IP会随着POD销毁而消失

    多个同类型POD,IP或端口必然不同,但却相同的服务

    Service用来提供相同服务POD的对外访问接口

    Service通过标签选择器来确定作用于哪些POD

    Service只能提供L4层的调度,即:IP+端口
  2. Ingress(重点)

    Igress也是用来暴露POD的对外访问接口

    Igress提供L7层的调度,即http/https

    Igress可以调度不同业务域,不同URL路径的流量

2 核心组件与核心附件

  1. 核心组件

    配置存储中心

    • etcd服务

    主控节点(master)

    • kube-apiserver服务
    • kube-controller-manager服务
    • kube-scheduler服务

    运算节点(node)

    • kube-kubelet服务
    • kube-proxy服务
  2. CLI客户端

    kubectl命令行工具

  3. 核心附件

    CNI网络插件(flannel/calico)

    服务发现插件(coredns)

    服务暴露插件(traefik)

    GUI管理插件(daahboard)

2.1 核心组件功能

  1. 配置存储中心-etcd

    etcd是一个非关系型数据库,作用类似于zookeeper注册中心

    用于各种服务的注册和数据缓存

  2. kube-apiserver(master)

    提供季军管理的REST API接口,包括鉴权、数据校验、集群状态变更

    负责其他模块之间的数据交互,承担通信枢纽的功能

    和etcd通信,是资源配额控制的入口

    提供玩备的集群控制机制

  3. kube-controller-manager

    由一系列控制器组成,通过apiserver监控整个集群的状态,确保集群处于预期的工作状态

    是管理所有控制器的控制器

  4. kube-scheduler

    主要是接收调度POD到合适的node节点上

    通过apiserver,从etcd中获取资源信息进行调度

    只负责调度工作,启动工作是node节点上的kubelet负责

    调度策略:预算策略(predict)、优选策略(priorities)

  5. kube-kubelet

    定时从apiserver获取节点上POD的期望状态(如副本数量、网络类型、存储空间、容器类型等)然后调用容器平台接口达到这个状态

    提供POD节点具体使用的网络

    定时汇报当前节点状态给apiserver,以供调度

    复制镜像和容器的创建和清理工作

  6. kube-proxy

    是K8S在每个节点上运行网络的代理,service资源的载体

    不直接为POD节点提供网络,而是提供POD间的集群网络

    建立了POD网络和集群网络的关系(clusterIp->podIp)

    负责建立、删除、更新调度规则

    与apiserver通信,以更新自己和获取其他kube-proxy的的调度规则

    常用的调度模式:Iptables(不推荐)、Ipvs(推荐)

2.2 K8S的三条网络

  1. 节点网络

    实际网络,就是宿主机网络

    建议地址段:10.4.7.0/24

    建议通过不同的IP端,区分不同的业务、机房或数据中心
  2. Pod 网络

    实际网络,容器运行的网络

    建议172.7.21.0/24 ,并建议POD网段与节点IP绑定

    如: 节点IP为10.4.7.21,则POD网络为172.7.21.0/24
  3. service网络

    虚拟网络,也叫集群网络(cluster server),用于内部集群间通信

    构建于POD网络之上, 主要是解决服务发现和负载均衡

    通过kube-proxy连接POD网络和service网络

    建议地址段为:192.168.0.0/16

3 K8S流程图

说明:

主控节点和node节点只是逻辑上的概念,物理上可以部署在一起

k8s(00)入门知识介绍的更多相关文章

  1. Maven入门知识介绍

    1.1 Maven简介 Apache Maven 是一个软件项目管理工具.基于项目对象模型的概念,Maven可用来管理项目的依赖.编译.文档 等信息. 使用maven管理项目时,项目的依赖的jar包将 ...

  2. mysql从入门到放弃-入门知识介绍

    数据库在互联网网站的重要性 简单地说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构来组织和存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据.由于数据库不易扩展,所以,在一个互 ...

  3. Grafana 入门知识介绍

    通过[Configuration]>[Plugins]添加插件 通过[Configuration]>[Data Sources]添加数据源(分析对象) 通过[Server Admin]&g ...

  4. Web安全之Web 安全介绍与基础入门知识

    web安全介绍与基础入门知识 安全与安全圈 甲方与乙方 甲方:如腾讯,阿里等需要安全服务的公司 乙方:提供安全服务产品的服务型安全公司 web与二进制 web,研究web安全 二进制,研究如客户端安全 ...

  5. 移动H5开发入门知识,CSS的单位汇总与用法

    说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...

  6. H5移动端开发入门知识以及CSS的单位汇总与用法

    说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...

  7. zabbix入门知识

    zabbix入门知识 zabbix中文手册 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介绍 Zabbix 是一个企业级的分布式开 ...

  8. 浅谈TCP IP协议栈(一)入门知识【转】

    说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...

  9. Python基础入门知识

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...

随机推荐

  1. 吉比特&雷霆游戏--2020春招实习

    笔试 题量较大,仅记了一些印象比较深刻的题. 题型为选择 + 填空(给C++代码填输出结果) + 编程 编程题不会太难,最难的就一道字符串的全排列(类似剑指offer第38题LeetCode链接)可以 ...

  2. 深入浅出腾讯BERT推理模型--TurboTransformers

    Overview TurboTransformers是腾讯最近开源的BERT推理模型,它的特点就是一个字,快.本人用BERT(huggingface/transformers)在V100上做了测试,测 ...

  3. vue+iview多条联动,for循环data是函数

    问题:多条for循环出的数据二级联动for循环出多条数据,每条数据都有一个二级联动,每次下拉一级联动,二级的选项都是变化的. 思考刚开始一直想不出如何实现二级联动下拉的数据动态变化,因为之前一直都是v ...

  4. Egret游戏大厅制作思路

    Egret游戏大厅制作思路 Egret中,写好的代码最终都被打包到main.js里面,只有库文件会单独生成出来,按需加载. 游戏中有需求,要将一些游戏(或者模块)进行外包,然后从主游戏大厅中进入,那么 ...

  5. eclipse 导入下载或拷贝的java Web项目时报错 ,或者是报错Unbound classpath container: 'JRE System Library

    在Problems里报错Description Resource Path Location Type Unbound classpath container: 'JRE System Library ...

  6. 分析并封装排序算法(js,java)

    前言 本次来分享一下排序的api底层的逻辑,这次用js模拟,java的逻辑也是差不多. 先看封装好的api例子: js的sort排序 java的compareTo排序 自己模拟的代码(JS) func ...

  7. Tensorflow教程(3)什么是张量?什么是数据流图?

    Tensorflow = Tensor(张量) + flow(数据流图) 1.张量 张量可不是“麻辣烫”!张量是一个很抽象的概念,直观的来说,张量在tensorflow中就像一个杯子,起到保存数据的作 ...

  8. day13 作业

    目录 1.编写文件修改功能,调用函数时,传入三个参数(修改的文件路径,要修改的内容,修改后的内容)既可完成文件的修改 2.编写tail工具 3.编写登录功能 4.编写注册功能 选做题:编写ATM程序实 ...

  9. Hadoop集群之浅析安全模式

    集群启动顺序: NameNode启动 NameNode启动时,首先将镜像文件(Fsimage)载入内存,并执行编辑日志(Edits)中的各项操作.一旦在内存中成功建立文件系统元数据的映像,则创建一个新 ...

  10. PE文件动态加载执行过程

    主要步骤: 1.将要加载的文件读取到内存中(简称为文内),检查文件格式无误后,根据可选PE头(简称op头)的SizeOfImage,申请出一块空间用于存储该文件加载到内存后展开的数据(简称为内内).记 ...