01:kubernetes基础
1.1kubernetes简介
参考博客:https://www.kubernetes.org.cn/k8s
1、kubernetes介绍
1. Kubernetes是容器集群管理系统,是一个开源的平台
2. 可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
3. 目标是促进完善组件和工具的生态系统,以减轻应用程序在公有云或私有云中运行的负担。
作用:
1)快速部署应用
2)快速扩展应用
3)无缝对接新的应用功能
4)节省资源,优化硬件资源的使用
举例:
1)Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着
2)比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务
2、kubernetes作用
1)自我修复
1. 在节点故障时重新启动失败的容器,替换和重新部署,保证预期我们设置的副本的数量;
2. 杀死健康检测失败的容器,并且在没有准备好之前是不会处理客户端请求的(不对外提供服务),保证线上服务不中断
2)弹性伸缩(比如618活动,保证我们服务的快速缩容和扩容)
1. 使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用的程序实例(容器的副本数)
2. 保证应用业务高峰并发时的高可用性;
3. 在业务低峰时期回收资源,以减小成本运行服务
3)自动部署和回滚
1. k8s 采用滚动更新的策略更新应用,一次更新一个Pod,而不是同时删除所有的pod
2. 如果更新过程中出现问题,将回滚更改,确保升级不影响业务
4)服务发现和负载均衡
1. k8s为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP的问题
5)机密数据(密码,证书)和配置管理
1. k8s提供存储能力(可以把密码加密放在容器存储中)
2. 管理机密数据和应用程序的配置,而不需要把敏感的数据暴露在镜像里,提高敏感数据的安全性
3. 并且可以把一些常用的配置存储在k8s中,方便应用程序的使用
6)存储编排
1. 挂载外部的存储系统,无论是来自本地存储,公有云,还是网络存储(NFS《GlustFS,Ceph)
2. 都作为集群资源的一部分使用,极大的提高存储使用灵活性
7)批处理
1. 提供一次性任务,定时任务,满足批量数据处理和分析的场景
3、核心组件:Pod
1. 在Kubenetes中,所有的容器均在Pod中运行,一个Pod可以承载一个或者多个相关的容器
2. 同一个Pod中的容器会部署在同一个物理机器上并且能够共享资源
3. 一个Pod也可以包含0个或者多个磁盘卷组(volumes),这些卷组将会以目录的形式提供给一个容器,或者被所有Pod中的容器共享
4. 对于用户创建的每个Pod,系统会自动选择那个健康并且有足够容量的机器,然后创建类似容器的容器
5. 当容器创建失败的时候,容器会被node agent自动的重启,这个node agent叫kubelet
1.2 Kubernetes 集群架构与组件
官网地址:https://www.kubernetes.org.cn/kubernetes设计架构
参考博客:https://www.cnblogs.com/Su-per-man/p/11101823.html
1、Kubernetes中master核心组件
1)etcd
1. 是Kubernetes的存储状态的数据库(所有master的持续状态都存在etcd的一个实例中);
2. 它是一个集群分布式数据库,它可以提供分布式数据的一致性。
2)apiserver
1. Kubernetes的核心组件是API Server,它是Kubernetes系统和Etcd直接对话的唯一组件
2. 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
3)controller manager
1. controller manager 是通过API Server 进行协调的组件,绑定到单独的服务器Master上;
2. 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
4)scheduler
1. scheduler是通过API Server 进行协调的组件,绑定到单独的服务器Master上;
2. scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
2、Kubernetes中Node核心组件
1)kubelet(Node Agent)
1. kubelet负责管理pods和它们上面的容器,images镜像、volumes、etc。
2. Agent负责监视绑定到其节点的一组Pod,并确保这些Pod正常运行,并且能实时返回这些Pod的运行状态。
2)Container runtime
1. Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
3)kube-proxy
1. kube-proxy网络代理和负载均衡,负责为Service提供cluster内部的服务发现和负载均衡;
kube-dns负责为整个集群提供DNS服务
Ingress Controller为服务提供外网入口
Heapster提供资源监控
Dashboard提供GUI
Federation提供跨可用区的集群
Fluentd-elasticsearch提供集群日志采集、存储与查询
其他组件
注: Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。
3、k8s工作原理
1. 我们通过kubectl向k8s Master发出指令。
2. kubernetes Master主要是提供API Server、Scheduler、Controller组件,接收kubectl的命令
3. kubernetes Master主从Node节点获取Node的资源信息,并发出调度任务。
4. Node节点提供kubelet、kube-proxy,每个node节点都安装docker,是实际的执行者。
5. kubernetes不负责网络,所以一般是用flannel或者weave。
6. etcd负责服务发现和node信息存储。

4、分层架构
1. 核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
2. 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
3. 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
4. 接口层:kubectl命令行工具、客户端SDK以及集群联邦
5. 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
6. Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
7. Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等
1.3 创建pod的流程
1.用户提交创建Pod的请求,可以通过API Server的REST API ,也可用Kubectl命令行工具,支持Json和Yaml两种格式;
2.API Server 处理用户请求,存储Pod数据到Etcd;
3.Schedule通过和 API Server的watch机制,查看到新的pod,尝试为Pod绑定Node;
4.过滤主机:调度器用一组规则过滤掉不符合要求的主机(比如Pod指定了所需要的资源,那么就要过滤掉资源不够的主机);
5.主机打分:对第一步筛选出的符合要求的主机进行打分,在主机打分阶段,调度器会考虑一些整体优化策略
比如:把一个Replication Controller的副本分布到不同的主机上,使用最低负载的主机等;
6.选择主机:选择打分最高的主机,进行binding操作,结果存储到Etcd中;
7.kubelet根据调度结果执行Pod创建操作:
1)绑定成功后,会启动container, docker run,
2)scheduler会调用API Server的API在etcd中创建一个bound pod对象,描述在一个工作节点上绑定运行的所有pod信息。
3)运行在每个工作节点上的kubelet也会定期与etcd同步bound pod信息
4)一旦发现应该在该工作节点上运行的bound pod对象没有更新,则调用Docker API创建并启动pod内的容器。

11111111111111111
01:kubernetes基础的更多相关文章
- Kubernetes基础:查看状态、管理服务
目标 了解Kubernetes Pod 了解Kubernetes Node 学习如何调试部署问题 了解如何通过Service暴露应用 Kubernetes Pods 在Kubernetes中创建一个D ...
- 01: tornado基础篇
目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 Torn ...
- 后端 - Lession 01 PHP 基础
目录 Lession 01 php 基础 1. php 基础 2. php 变量 3. php 单引号 和 双引号区别 4. 数据类型 5. 数据类型转换 6. 常量 7. 运算符 8. 为 fals ...
- 1-2、kubernetes架构概述和kubernetes基础概念
kubernetes https://draveness.me/understanding-kubernetes http://kubernetes.kansea.com/docs/ master/n ...
- linux运维、架构之路-Kubernetes基础(一)
一.Kubernetes介绍 Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统.Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并 ...
- Jam's balance HDU - 5616 (01背包基础题)
Jim has a balance and N weights. (1≤N≤20) The balance can only tell whether things on different side ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- 075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现
075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现 本文知识点:综合案例-数组移位-主方法功能4的实现 说明:因为 ...
- 074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现
074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现 本文知识点:综合案例-数组移位-主方法功能3的实现 说明:因为 ...
- 073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现
073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现 本文知识点:综合案例-数组移位-主方法功能1和2的实现 说 ...
随机推荐
- poj 3684 Physics Experiment 弹性碰撞
Physics Experiment Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1489 Accepted: 509 ...
- 试用saucelabs进行浏览器兼容性测试
Hi,all 跟大家分享下saucelabs,一个云测试平台,支持PC和手机(自带的)浏览器的兼容性测试,并且支持selenium/appium的自动化测试,不过是收费的,价格还挺贵,但是人工的测试是 ...
- 一、让自己习惯C++
写在前面 第一遍看<Effective C++>时,在准备暑期实习生的招聘,没有时间好好地捋一下,将一些要点记录下来.现在实习回来,重读此书,并记录一些要点,为今后的复习亦或是学习铺垫. ...
- JS框架_(JQuery.js)图片相册掀开切换效果
百度云盘 传送门 密码:y0dk 图片掀开切换效果: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...
- react属性之exact
exact是Route下的一个属性,react路由会匹配到所有能匹配到的路由组件,exact能够使得路由的匹配更严格一些. exact的值为bool型,为true时表示严格匹配,为false时为正常匹 ...
- 全面解读php-网络协议
一.OSI七层模型 1.物理层 作用:建立,维护,断开物理连接 2.数据链路层 作用:建立逻辑连接,进行硬件地址寻址,差错校验等功能. 3.网络层 作用:进行逻辑地址寻址,实现不同网络之间的路径选择. ...
- Android 多分辨率与不同语言适配
一.适配不同国家语言 智能手机系统设置里各国语言的选项,然后我们项目里可以通过资源目录实现适配语言.我们知道工程的根目录有个res/的目录,res/下有一个资源类型的目录,其中有个values/str ...
- IDEA创建maven各种原型项目汇总
1: internal -> appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型) 2: internal -> appfus ...
- linux新建用户tab无法补全命令
查看passwd cat /ect/passwd 发现root用户的shell是/bin/bash 普通用户的shell是/bin/sh 修改普通用户的为/bin/bash即可
- 搭建SVN服务器时报错:0x80004002
一.错误信息 Cannot query proxy blanket: no such interface supported (0x80004002) 二.解决方案 这个错误只会在有NVIDIA独立显 ...