Kubernetes 是来自 Google 云平台的开源容器集群管理系统。基于 Docker 构建一个容器的调度服务。该系统可以自动在一个容器集群中选择一个工作容器供使用。其核心概念是 Container Pod。
首先,为什么要用Kubernetes? 使用一个工具先要梳理下使用这个工具的目标,我们不是为了工具而用工具。
Kubernetes的目标用一张被很多人引用过的图来说明最好:

Kubernetes 的目标是让你可以像管理牲畜一样管理你的服务,而不是像宠物一样,同时提高资源的利用率,让码农关注在应用开发本身,高可用的事情就交给 Kubernetes吧。这个图本来是openstack提出的,但纯粹IaaS层的解决方案实现不了这个目标,于是有了Kubernetes。
Kubernetes和Borg系出同门,基本是Borg的开源改进版本,引用Google Borg论文里的说法:
it (1) hides the details of resource management and failure handling so its users can focus on application development instead; (2) operates with very high reliability and availability, and supports applica- tions that do the same; and (3) lets us run workloads across tens of thousands of machines effectively
我们如何验证是否达到这个目标了呢?
随机关掉一台机器,看你的服务能否正常
减少的应用实例能否自动迁移并恢复到其他节点
服务能否随着流量进行自动伸缩
我们从一个简单的多层应用的架构改进来探讨下:

说明:
mySQL应该是一主多从的架构,这里为了简单进行了省略
service后面也会依赖数据库等资源,这里为了简单进行了省略
箭头表示调用和依赖关系
具体分析一下为了达到我们的目标,需要做到改进:
Loadbalancer 要调用后端应用服务节点,后端应用服务节点挂了或者迁移增加节点,都要变更Loadbalancer的配置。这样明显达不到目标,于是计划将 Loadbalancer改造成Smart Loadbalancer,通过服务发现机制,应用实例启动或者销毁时自动注册到一个配置中心 (etcd/zookeeper),Loadbalancer监听应用配置的变化自动修改自己的配置。
Web应用对后端资源的依赖,比如Mysql和Memcached,对应资源的ip一般是写到配置文件的。资源节点变更或者增加都要变更应用配置。
Mysql计划该成域名访问方式,而不是ip。为了避免dns变更时的延迟问题,需要在内网架设私有dns。高可用采用MHA方案,然后配合服务发现机制自动修改dns。
Memcached计划参照coucHBase的方式,通过服务发现机制,使用SmartClient,客户端应用监听配置中心的节点变化。难点可能在于对Memcached的改造(可以参考couchbase)。另外也可以通过增加一层代理的机制实现。
应 用节点迁移时依赖的系统和基础库不一样如何处理?部署方式不一样如何处理?磁盘路径,监听端口等冲突怎么办?这个可以通过Docker这样的容器技术,将 应用部署运行的方式进行标准化,操作系统和基础库的依赖允许应用自定义,对磁盘路径以及端口的依赖通过Docker运行参数动态注入,而不需要变更应用配 置。Docker的自定义变量以及参数,需要提供标准化的配置文件。
服务迁移问题 每种服务都需要一个master调度中心,来监控实例状态,确定要不要进行迁移,负责统一调度。并且每个服务器节点上要有个agent来执行具体的操作,监控该节点上的应用。另外还要提供接口以及工具去操作。
网络以及端口冲突的问题比较麻烦 需要引入类似SDN的解决方案。
内存,cpu,以及磁盘等硬件资源,原来的习惯是购买服务器的时候就根据服务器的上的应用类型进行规划,如果应用和硬件解耦,这种方式需要淘汰。但必须有一种调度机制让应用迁移的时候可进行筛选。
总结一下,通过分析得出,要达到目标,关键是解耦,应用进程和资源(包括 cpu,内存,磁盘,网络)的解耦,服务依赖关系的解耦。
我们上面的改造机制基本是按照个案进行设计,Kubernetes的则是要提供一套全面通用的机制。
然后,我们看看Kubernetes对以上问题的解决方案:
先上一张Kubernetes官方的架构图

摘自:http://edu.dataguru.cn/article-8492-1.html

转载于:https://www.cnblogs.com/bonelee/p/6513265.html

kubernetes要实现的目标——随机关掉一台机器,看你的服务能否正常;减少的应用实例能否自动迁移并恢复到其他节点;服务能否随着流量进行自动伸缩...相关推荐

  1. 从 OpenStack 到 Mesos 再到 Kubernetes, 携程容器云自动化运维平台实践\n

    随着虚拟化技术和云计算技术的普及,IT互联网基础设施发生了很大的变化,底层的计算.存储.网络等资源也越来越复杂,需要有平台能管理好这些资源,尽量将工作流程自动化,将运维人员从繁重的手动工作中解救出来. ...

  2. Windows 故障转移+Hyper-V 虚机自动迁移高 可用

    Windows 故障转移+Hyper-V 虚机自动迁移高 可用 Windows 故障转移+Hyper-V 虚机自动迁移高... 1 一.系统原理... 3 1.1 高效率的 VMbus 架构... 3 ...

  3. 吴甘沙创业照见自动驾驶十年变迁,产业爆发在下一个春天里 | 自动驾驶这十年...

    个人创业照见自动驾驶十年变迁. 效力英特尔16年.三发创业之心最终"出走"人工智能,吴甘沙的创业故事已经被说得太多.而他所领衔创立的驭势科技,继2017年完成国内首个自动驾驶商业运 ...

  4. linux文件服务器迁移方案,服务器之间文件备份方案、如何把服务器文件自动备份到另外一台服务器?...

    很多单位都有文件服务器备份的需求,并且常常是把一个服务器的文件自动备份到另外一台文件服务器 .如何实现呢? 一.Windows文件服务器自动备份的方法 Windows文件服务器自动备份的最简单方法是安 ...

  5. 自动判卷 、答题卡识别、六级答题卡客观题自动判卷系统1.0

    自动判卷 .答题卡识别.六级答题卡客观题自动判卷系统1.0 一.前言 二.代码 三.处理原图片.以及效果图片 四.总结 一.引言: 1.本程序设计想法来源于一次四六级考试,因为六级没有好好准备,裸考上 ...

  6. PB使用数据管道实现数据的自动迁移和备份

    使用数据管道实现数据的自动迁移和备份 摘要:针对MIS系统的开发和使用过程中数据的备份和迁移问题,提出了解决问题的基本思路和方案,详细阐述了方案实施过程中涉及的方法和技巧,并对使用PowerBuild ...

  7. OpenShift - 5分钟自动替换 OpenShift 集群故障节点(附视频)

    <OpenShift / RHEL / DevSecOps 汇总目录> 文本已在OpenShift 4.10环境中进行验证. 文章目录 场景说明 配置 Machine 健康检查 验证自动修 ...

  8. redis实战第九篇 集群扩容自动迁移槽(redis-cli)

    上文讲解过自动迁移槽实现集群扩容(传送门) 1.准备新节点 安装redis,参考传送门 节点配置,参考传送门 2.将节点加入集群 redis-cli --cluster add-node {new h ...

  9. 没有wifi的时候4g不自动连接服务器,手机自动连接WIFI后,到底要不要关闭4G流量?...

    原标题:手机自动连接WIFI后,到底要不要关闭4G流量? 大家都有这样的困扰,每个月的流量不知不觉就没有了?但是流量到底用在那里了?还有人提出疑问,平时手机自动连接WIFI后,会不会消耗我们的4G流量 ...

最新文章

  1. PyTorch | (1)初识PyTorch
  2. Git学习系列之Git基本操作克隆项目(图文详解)
  3. 用stm32开发时是直接买现成的开发板还是芯片?开发板学习,芯片硬件设计
  4. 【深度学习】梯度消失和梯度爆炸问题的最完整解析
  5. python序列化对象的函数_使 Python 对象可序列化的函数
  6. ubuntu的两种网络连接模式
  7. python所有变量更新_python更新全局变量
  8. DateFormat与SimpleDateFormat区别和使用详解
  9. 基于HMM的语音识别技术原理
  10. 麒麟V10系统-软件商店更新源问题
  11. python拆分PDF
  12. 深入理解Attention及变种(四)
  13. 可汗学院公开课:统计学
  14. Hadoop-kms总结
  15. 因影片里白人太多,Twitch平台撤下BLM视频
  16. 无符号整数--拼数字
  17. 谐振电路应用之LED交替闪烁
  18. 如何在官网选择其他JDK版本进行下载
  19. 龙之气息服务器维护,【龙之气息:从入坑到肝硬化】
  20. 11.16上海交大PMP试题每日一题

热门文章

  1. Linux下使用popen()执行shell命令
  2. 制作模板_木模板制作流程
  3. python随机生成字符串_Python 2.6中的随机字符串(可以吗?)
  4. 电脑卡顿不流畅是什么原因_为什么Windows/iOS操作很流畅,而Linux/Android却很卡顿呢...
  5. 同步服务器文档并打印,如何打印远程服务器文件内容
  6. 微信语音怎么转发给别人听_微信语音怎么转发出去?这个小技巧超级好用
  7. 计算机科学CSTA,学编程,搞懂CSTA K-12计算机科学学习标准
  8. 下拉选项框选中之后,通过ajax请求服务器,填充页面其他元素的value值
  9. Java取当前时间,深夜思考
  10. ListView控件