k8s(00)入门知识介绍
系列文章说明
本系列文章,可以基本算是 老男孩2019年王硕的K8S周末班课程 笔记,根据视频来看本笔记最好,否则有些地方会看不明白
需要视频可以联系我
k8s概念入门
[K8S中文社区](http://docs.kubernetes.org.cn/
1 四组基本概念
- Pod/Pod控制器
- Name/Namespace
- Lable/Label选择器
- Service/Ingress
1.1 POD和POD控制器
Pod
k8s里能够被运行的最小逻辑单元
1个POD里面可以运行多个容器(SideCar 边车模式)
POD中的容器共享 UTS/NAT/IPC 名称空间
POD和容器颗粒理解为豌豆荚和豌豆Pod控制器
Pod控制器是Pod启动的一种模板
用来保证在K8S里启动的Pod始终按预期运行
包括副本数\生命周期\健康检查等常用的Pod控制器:
控 度器名称 用途简述 Deployment 用于管理无状态应用,支持滚动更新和回滚 DaemonSet 确保集群中的每一个节点上只运行一个特定的pod副本 ReplicaSet 确保pod副本数量符合用户期望的数量状态 StatefulSet 管理有状态应用 Job 有状态,一次性任务 Cronjob(定时任务) 有状态,周期性任务
1.2 Name/Namespace
Name
K8S使用'资源'来定义每一种逻辑概念(功能)
每种'资源'都应该有自己的'名称'
'名称'通常定义在'资源'的元数据(metadata)信息中资源的配置信息包括
- API版本(apiVersion)
- 类别(kind)
- 元数据(metadata)
- 定义清单(spec)
- 状态(status)
Namespace
名称空间用于隔离K8S内各种资源,类似K8S内部的虚拟分组
同一个名称空间中,相同资源的名称不能相同
默认的名称空间为default,kube-system,kube-public
查询特定资源,要带上相应的名称空间
1.3 Lable/Label选择器
Lable
标签的作用是便于分类管理资源对象
标签与资源之间是多对多的关系
给一个资源多个标签,可以实现不同维度的管理Lable选择器
可以使用标签选择器过滤指定的标签
标签选择器有基于等值关系(等于,不等于)和基于集合关系(属于,存在)的两种
许多资源都支持内嵌标签选择器字段:matchLables或matchExpressions
1.4 Service/Ingress
- Service(重点)
POD会分配IP地址,但IP会随着POD销毁而消失
多个同类型POD,IP或端口必然不同,但却相同的服务
Service用来提供相同服务POD的对外访问接口
Service通过标签选择器来确定作用于哪些POD
Service只能提供L4层的调度,即:IP+端口 - Ingress(重点)
Igress也是用来暴露POD的对外访问接口
Igress提供L7层的调度,即http/https
Igress可以调度不同业务域,不同URL路径的流量
2 核心组件与核心附件
核心组件
配置存储中心- etcd服务
主控节点(master)
- kube-apiserver服务
- kube-controller-manager服务
- kube-scheduler服务
运算节点(node)
- kube-kubelet服务
- kube-proxy服务
CLI客户端
kubectl命令行工具核心附件
CNI网络插件(flannel/calico)
服务发现插件(coredns)
服务暴露插件(traefik)
GUI管理插件(daahboard)
2.1 核心组件功能
配置存储中心-etcd
etcd是一个非关系型数据库,作用类似于zookeeper注册中心
用于各种服务的注册和数据缓存kube-apiserver(master)
提供季军管理的REST API接口,包括鉴权、数据校验、集群状态变更
负责其他模块之间的数据交互,承担通信枢纽的功能
和etcd通信,是资源配额控制的入口
提供玩备的集群控制机制kube-controller-manager
由一系列控制器组成,通过apiserver监控整个集群的状态,确保集群处于预期的工作状态
是管理所有控制器的控制器kube-scheduler
主要是接收调度POD到合适的node节点上
通过apiserver,从etcd中获取资源信息进行调度
只负责调度工作,启动工作是node节点上的kubelet负责
调度策略:预算策略(predict)、优选策略(priorities)kube-kubelet
定时从apiserver获取节点上POD的期望状态(如副本数量、网络类型、存储空间、容器类型等)然后调用容器平台接口达到这个状态
提供POD节点具体使用的网络
定时汇报当前节点状态给apiserver,以供调度
复制镜像和容器的创建和清理工作kube-proxy
是K8S在每个节点上运行网络的代理,service资源的载体
不直接为POD节点提供网络,而是提供POD间的集群网络
建立了POD网络和集群网络的关系(clusterIp->podIp)
负责建立、删除、更新调度规则
与apiserver通信,以更新自己和获取其他kube-proxy的的调度规则
常用的调度模式:Iptables(不推荐)、Ipvs(推荐)
2.2 K8S的三条网络

- 节点网络
实际网络,就是宿主机网络
建议地址段:10.4.7.0/24
建议通过不同的IP端,区分不同的业务、机房或数据中心 - Pod 网络
实际网络,容器运行的网络
建议172.7.21.0/24,并建议POD网段与节点IP绑定
如: 节点IP为10.4.7.21,则POD网络为172.7.21.0/24 - service网络
虚拟网络,也叫集群网络(cluster server),用于内部集群间通信
构建于POD网络之上, 主要是解决服务发现和负载均衡
通过kube-proxy连接POD网络和service网络
建议地址段为:192.168.0.0/16
3 K8S流程图

说明:
主控节点和node节点只是逻辑上的概念,物理上可以部署在一起
k8s(00)入门知识介绍的更多相关文章
- Maven入门知识介绍
1.1 Maven简介 Apache Maven 是一个软件项目管理工具.基于项目对象模型的概念,Maven可用来管理项目的依赖.编译.文档 等信息. 使用maven管理项目时,项目的依赖的jar包将 ...
- mysql从入门到放弃-入门知识介绍
数据库在互联网网站的重要性 简单地说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构来组织和存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据.由于数据库不易扩展,所以,在一个互 ...
- Grafana 入门知识介绍
通过[Configuration]>[Plugins]添加插件 通过[Configuration]>[Data Sources]添加数据源(分析对象) 通过[Server Admin]&g ...
- Web安全之Web 安全介绍与基础入门知识
web安全介绍与基础入门知识 安全与安全圈 甲方与乙方 甲方:如腾讯,阿里等需要安全服务的公司 乙方:提供安全服务产品的服务型安全公司 web与二进制 web,研究web安全 二进制,研究如客户端安全 ...
- 移动H5开发入门知识,CSS的单位汇总与用法
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...
- H5移动端开发入门知识以及CSS的单位汇总与用法
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...
- zabbix入门知识
zabbix入门知识 zabbix中文手册 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介绍 Zabbix 是一个企业级的分布式开 ...
- 浅谈TCP IP协议栈(一)入门知识【转】
说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...
- Python基础入门知识
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
随机推荐
- JS中函数执行顺序的问题?
作者:知乎用户链接:https://www.zhihu.com/question/23564807/answer/82996422来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- Linux Pam后门总结拓展
首发先知社区: https://xz.aliyun.com/t/7902 前言 渐渐发现pam后门在实战中存在种植繁琐.隐蔽性不强等缺点,这里记录下学习pam后门相关知识和pam后门的拓展改进. 0x ...
- JavaWeb网上图书商城完整项目--day02-3.regist页面输入框失去焦点进行校验
当输入框输入数据之后,当输入框失去焦点的时候,我们需要对输入的数据进行校验 l 用户名校验: 用户名不能为空: 用户名长度必须在3 ~ 20之间: 用户名已被注册(需要异步访问服务器). l 登录 ...
- Laravel 如何在blade文件中使用Vue组件
Laravel 如何在blade文件中使用Vue组件 1. 安装laravel/ui依赖包 composer require laravel/ui 2.生成vue基本脚手架 php artisan u ...
- 001_Linux常用命令之ls命令
1. 认识Linux系统目录结构 /bin 可执行文件所在目录 /media 挂载设备媒体,u盘,光驱等 /mnt 该目录主要是为了让用户挂在别的文件系统(挂在自己的u盘) /usr unix sys ...
- 六.url配置
1.Django 如何处理一个请求 (1). django 加载 ROOT_URLCONF(settings.py中配置的) 指定的模块,并寻找可用的urlpatterns变量.它是 django.c ...
- Blazor带我重玩前端(二)
概览 Blazor目前有两种托管模式,一种是Server-Side模式,一种是WebAssembly模式.官方首先支持的是Service-Side模式,使用WebAssembly模式,需要更新到最新版 ...
- django 缓存(memcached)
Django提供了6种缓存方式 开发调试缓存 内存缓存 文件缓存 数据库缓存 Memcache缓存(使用python-memcached模块) Memcache缓存(使用pylibmc模块) 常使用的 ...
- 神奇的建图方式(Tarjan)——小z玩游戏
原题来自与:洛谷 P5676(GZOI2017) 链接: https://www.luogu.com.cn/problem/P5676 题面: 题意比较明显,如果已经建好了边,那么跑个Tarjan ...
- 属性复制神器-mapstruct
我们之前说到项目中会用到各种object,vo,bo,dto等等.我们需要在不同的对象上复制属性. 一.BeanUtils和PropertyUtils 我们最常用的就是Common包里面的BeanUt ...