专栏首页转行程序员深入探究Kubernetes - 初识容器

深入探究Kubernetes - 初识容器

引言

最近Kubernetes比较火,新技术快速火起来,一定有它强大的优势,Hr反馈,招聘时会Kubernetes的很少,风口上的Kubernetes一起学学?扫盲贴,参考《Kubernetes进阶实践》。 可以说,当今云计算最热门的趋势是容器,这是服务器虚拟化和云应用程序部署的基础技术。与传统的虚拟机管理程序和基于虚拟机的方法相比,容器的关键优势在于每个容器工作负载可以共享主机操作系统,而不是每个拥有自己的主机或客户操作系统映像的虚拟机。虚拟机在内存中占用相当多的空间,并且需要更多时间(几分钟而不是几分之一秒)来部署和配置。

1.为什么会出现Kubernetes

Kubernetes希腊语,舵手,飞行员之意。

巨人的肩膀Google 2014年发布。

Docker镜像文件部署,复杂度虽然降低了,但以容器格式运行的应用程序间的协同却成了一个新的亟待解决的问题,这种需求在微服务架构中表现得尤为明显。结果,以Kubernetes为代表的容器编排系统应需而生。

2.容器与虚拟机的区别

容器与传统的虚拟机管理程序和基于虚拟机的方法相比,容器的关键优势在于每个容器工作负载可以共享主机操作系统,而不是每个拥有自己的主机或客户操作系统映像的虚拟机。虚拟机在内存中占用相当多的空间。

容器由应用程序本身和它的环境依赖(库和其他应用程序)两部分组成,并在宿主机(Host)操作系统的用户空间中运行,但与操作系统的其他进程互相隔离,它们的实现机制有别于诸如VMWare、KVM和Xen等实现方案的传统虚拟化技术。容器与虚拟机的对比关系如图所示

由于同一个宿主机上的所有容器都共享其底层操作系统(内核空间),这就使得容器在体积上要比传统的虚拟机小得多。

总结:

  1. 部署快
  2. 系统开销小
  3. 容易迁移:build once,run anywhere。
  4. 降低复杂度:configure once,run anywhere。

3.Kubernetes特性

(1)自动装箱建构于容器之上,基于资源依赖及其他约束自动完成容器部署且不影响其可用性,并通过调度机制混合关键型应用和非关键型应用的工作负载于同一节点以提升资源利用率。

(2)自我修复(自愈)支持容器故障后自动重启、节点故障后重新调度容器,以及其他可用节点、健康状态检查失败后关闭容器并重新创建等自我修复机制。

(3)水平扩展支持通过简单命令或UI手动水平扩展,以及基于CPU等资源负载率的自动水平扩展机制。

(4)服务发现和负载均衡

Kubernetes通过其附加组件之一的KubeDNS(或CoreDNS)为系统内置了服务发现功能,它会为每个Service配置DNS名称,并允许集群内的客户端直接使用此名称发出访问请求,而Service则通过iptables或ipvs内建了负载均衡机制。

(5)自动发布和回滚Kubernetes支持“灰度”更新应用程序或其配置信息,它会监控更新过程中应用程序的健康状态,以确保它不会在同一时刻杀掉所有实例,而此过程中一旦有故障发生,就会立即自动执行回滚操作。

(6)密钥和配置管理Kubernetes的ConfigMap实现了配置数据与Docker镜像解耦,需要时,仅对配置做出变更而无须重新构建Docker镜像,这为应用开发部署带来了很大的灵活性。此外,对于应用所依赖的一些敏感数据,如用户名和密码、令牌、密钥等信息,Kubernetes专门提供了Secret对象为其解耦,既便利了应用的快速开发和交付,又提供了一定程度上的安全保障。

(7)存储编排Kubernetes支持Pod对象按需自动挂载不同类型的存储系统,这包括节点本地存储、公有云服务商的云存储(如AWS和GCP等),以及网络存储系统(例如,NFS、iSCSI、GlusterFS、Ceph、Cinder和Flocker等)。

(8)批量处理执行除了服务型应用,Kubernetes还支持批处理作业及CI(持续集成),如果需要,一样可以实现容器故障后恢复

4.集群架构

一个典型的Kubernetes集群由多个工作节点(worker node)和一个集群控制平面(control plane,即Master),以及一个集群状态存储系统(etcd)组成。其中Master节点负责整个集群的管理工作,为集群提供管理接口,并监控和编排集群中的各个工作节点。各节点负责以Pod的形式运行容器,因此,各节点需要事先配置好容器运行依赖到的所有服务和资源,如容器运行时环境等。Kubernetes的系统架构如图:

美团点评集群管理与调度架构图:

总结:

‰1.Kubernetes集群主要由Master和Node两类节点组成。

‰2.Master主要包含API Server、controller-manager、Scheduler和etcd几个组件,其中API Server是整个集群的网关。

‰3.Node主要由kubelet、kube-proxy和容器引擎等组件构成,kubelet是Kubernetes集群的工作于节点之上的代理组件。

4.完整的Kubernetes集群还需要部署有CoreDNS(或KubeDNS)、Prometheus(或HeapSter)、Dashboard和Ingress Controller几个附加组件。

‰5.Kubernetes的网络中主要存在四种类型的通信:同一Pod内的容器间通信、各Pod间的通信、Pod与Service间的通信,以及集群外部的流量同Service之间的通信。

‰6.Kubernetes集群主要由Master和Node两类节点组成。

‰7。Master主要包含API Server、controller-manager、Scheduler和etcd几个组件,其中API Server是整个集群的网关。

‰8。Node主要由kubelet、kube-proxy和容器引擎等组件构成,kubelet是Kubernetes集群的工作于节点之上的代理组件。

‰9。完整的Kubernetes集群还需要部署有CoreDNS(或KubeDNS)、Prometheus(或HeapSter)、Dashboard和Ingress Controller几个附加组件。

‰10.Kubernetes的网络中主要存在四种类型的通信:同一Pod内的容器间通信、各Pod间的通信、Pod与Service间的通信,以及集群外部的流量同Service之间的通信。

参考

  1. 论文:《Large-scale cluster management at Google with Borg》
  2. 《美团点评Kubernetes集群管理实践》
  3. 《Kubernetes进阶实践》

本文分享自微信公众号 - 转行程序员(be_coder),作者:转行程序员

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • GitHub Trending被国人长期“霸榜”,国外开发者SAY NO

    近日一名国外开发者(Balazs Saros,下简称 Balazs)在个人博客发表了一篇看似是在“声讨”中国开发者的文章,标题起得有点唬人 —— "Chines...

    王炸
  • Tair分布式缓存

    Redis很好用,相比memcached多了很多数据结构,支持持久化。但是在很长一段时间里,原生是不支持分布式的。后来就出现了很多redis集群类产品,...

    王炸
  • Spring Boot 从入门到实践系列教程(5)- SpringBoot执行器

    在本文中,我们将介绍Spring Boot Actuator。我们将首先介绍基础知识,然后详细讨论Spring Boot 1.x与2.x中可用的内容。

    王炸
  • Kubernetes 1.7 版 6月底推出 有超过50项更新

    按Kubernetes每季推出新版本的周期,暨今年3月底发布1.6版后,应该即将有一波大公布。果不其然,作为Kubernetes 1.7开发团队成员之一的Mir...

    Debian社区
  • 整天谈容器,你知道两大容器管理平台Kubernetes与OpenShift有什么区别?

    容器化是开发和部署应用的热门趋势,因为它们是加速开发的有效方式。容器的使用量在过去几年呈指数增长。

    我的小碗汤
  • 【干货】计算机视觉实战系列06——用Python做图像处理

    【导读】专知成员Hui上一次为大家介绍主成分分析(PCA)、以及其在图像上的应用,这一次为大家详细讲解SciPy库的使用以及图像高斯模糊实战。 【干货】计算机视...

    WZEARW
  • 为何 Kubernetes 如此受欢迎?

    Google 开发的这个容器管理系统很快成为开源历史上最成功的案例之一。Kubernetes 是一个在过去几年中快速流行起来的开源容器管理平台。它被众多大企业用...

    Debian社区
  • Kubernetes推动更广泛的容器使用

    SDNLAB
  • 对不起 Linux,Kubernetes现在是更重要的操作系统!

    你可以从没有发生的事情中看到这一点的证据。Ubuntu背后的公司Canonical还没有收到IBM 340亿美元的收购要约,尽管公司创始人马克·舒特沃斯(Mar...

    用户6543014
  • Docker | Docker技术基础梳理(六) - 为啥容器里数据总是缺失?

    方便宿主机直接访问容器中的文件,容器中的文件没有持久化,当容器删除后,文件数据也会随之消失,且没有使用数据卷的容器,其他容器也无法直接访问相互的文件,如果你容器...

    咸鱼学Python

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动