Google Kubernetes & Docker

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:
Google Kubernetes, 可以理解为一个开源的容器管理平台. 
Kubernetes is an open source implementation of container cluster management.

Docker出现后,Google开源了 Kubernetes。据说,Google的搜索、地图、邮箱等服务全部运行在一个服务集群中,这都有赖于Google内部代号为Borg的系统,以及其后继者Omega,而Kubernetes正是其开源版本。
Google Kubernetes  Docker - 德哥@Digoal - PostgreSQL research

关于受访者和Kubernetes团队

CSDN:请介绍下你自己。

Brendan Burns:我是Brendan Burns,是Google在Seattle的一名软件工程师。我曾经在Search Infrastructure部门,参与了 Google Realtime Search和 Search Plus Your World两个项目。在GCE平台,我主导了Replica Pool和Cloud DNS API的开发。在来Google之前,我分别在Williams College获得了计算机科学硕士学位,在Massachusetts Amherst获得了计算机科学博士学位。同时我也是Union College in Schenectady, NY的教授。

CSDN:能否详细介绍下Kubernetes团队的情况?

Brendan Burns: Kubernetes团队分散在 Seattle,Washington, Mountain View。Seattle是Google Compute Engine和Google Cloud Storage 团队的总部,GCE团队大部分都在Seattle,Kubernetes团队根植于这些云团队,同时也与Mountain View基础设施团队一起共事。

关于Kubernetes项目

CSDN:Kubernetes项目是如何开始的?

Brendan Burns: Kubernetes项目开始于 2013年夏,3月份Docker的成功创业引起了我们的注意。由于Google在十年前就开始使用Container技术,现在由我们来将这项技术和经验传播到更广的开发团队,是一件很自然的事情,同时,GCE也成为了运行容器工作负载的最佳平台。
Kubernetes创始之初就是一个开源项目,因为我们想要形成一个活跃的社区,大家可以共享自己的想法,同时可以聆听其他人的需求。尽管Google在这个领域经验丰富,但并不意味着我们可以解决一切问题。我们希望参与到更多的讨论中,并将自己的技术惠及更多的开发团队。        

CSDN:Kubernetes是为了解决哪些问题?

Brendan Burns: Kubernetes是为了使可扩展、可靠的软件系统的构建更简单。    

不同于传统的软件安装方式,Kubernetes将应用包作为容器部署到抽象的计算资源中。这样一来,应用和操作系统间的依赖被解耦了。应用的扩展变得简单了,因为在应用所在的容器中包含了所有的依赖关系,它不必担心它运行在哪个机器上。数据中心的扩展也变得简单,因为向Kubernetes集群中添加新的机器很简单,Kubernetes会立即给他们分配作业。

Kubernetes使得可靠软件的构建更简单,相比其它部署系统,Kubernetes是一个在线的管理者。它一直在监控着集群的状态,判断容器的运行状态是否符合用户的配置,以决定是否要创建或删除容器。具体来说,当一个程序崩溃时,它需要重启一个web服务或数据库,当物理机失败时,它需要将作业分配给其它物理机。这种管理方式也使Kubernetes具备了自我修复功能。

CSDN:据您所知,外界对Kubernetes存在哪些误解?

Brendan Burns: 其中的一个误解可能是Kubernetes和其它部署工具如Chef/Puppet/Salt/etc的关系,许多人认为Kubernetes和它们是竞争关系,但我认为它们是互补关系。你可以用任何熟悉的工具去构建容器镜像,然后使用Kubernetes将这些镜像部署到可靠、可扩展的环境中。另一个误解在于Kubernetes的兼容性。我们正在尽力使其支持更多平台,我们相信在GCE上不存在平台绑定的问题,你可以将GCE上的应用迁移到任何其它云平台或自建的数据中心,Kubernetes可以帮助你做到这一点。

CSDN:据说Kubernetes是Borg的开源版本,能否透露一些关于Borg的信息?

Brendan Burns: Google内部的容器管理系统在 10多年前就开始部署了,这期间我们做了很多尝试,积累了大量经验。但是我们内部的系统非常复杂,并且仅仅适用于Google的内部需求。   而Kubernetes的目的就是将Google内部最精华的部分提取出来,使现在的开发者能够更简单、直接地应用。它以我们内部系统为灵感,但又不那么复杂和功能全面,更强调模块性和可理解性。

关于Container技术

CSDN:Google何时开始关注Container技术的?

Brendan Burns:   从向Linux内核提交最初的Container patch以来 ,Google一直在关注Container技术。几乎Google的每个应用,从搜索到邮件到GCE都运行在linux容器中。  最近,由于Container技术开始被大众所接收,我们开始通过Kubernetes等项目将Container技术推广到其他开发团队。

CSDN:如何看待Docker外的其它Container技术,如OpenVZ、ZeroVM和Zones?

Brendan Burns: 我们认为 Container技术是对应用构建过程的抽象,Kubernetes之外也有很多类似的框架来支持容器打包和部署,我们希望能够和他们合作,将最好的容器管理技术贡献给社区。最后,作为云服务提供商我们的业务是为客户提供最好的托管服务。

CSDN:你认为Docker和Kubernetes最适用于哪些公司和哪些场景?

Brendan Burns: 我认为任何需要构建分布式系统或大规模的批处理系统(如MapReduce)的软件公司都能够受益于Kubernetes。以前我认为移动App并不是Kubernetes的适用场景,但近些天我认为移动App也需要云架构,很多移动开发者也将成为Kubernetes的用户。


王益:Kubernetes和Mesos有哪些区别(从技术和运营的角度)?

Brendan Burns: Kubernetes简洁而且紧凑,是一个从头开始的轻量级、可扩展的系统。Kubernetes尤其适用于Container和分布式系统,而Mesos则适用于Container和Hadoop之类的系统。我们和Mesos也有积极的合作,希望能结合两者的优点,带给社区最好的技术。

王益:在GCE上部署的Kubernetes版本和开源版本是否一致?(以及将来是否会持续一致?)这决定了Kubernetes在GCE之外能被接受的程度。

Brendan Burns: 是一致的。

于顺治:有了Kubernetes后,是否就能更轻松地去基于Docker构建一个成熟的PaaS系统?

Brendan Burns: 我认为是这样的。Kubernetes能够提供一个通用的管理层,比如应用失败时重启容器,以及对资源的添加和删除过程进行管理。这样一来,PaaS的开发者可以开发出很棒的runtime,提供给PaaS使用者。我认为关注点的分离能够从根本上简化PaaS开发者的工作。

程显峰:是否有必要为Container技术创建一个新的文件系统?aufs,Btrfs,Ploop和ZFS有哪些缺陷?

Brendan Burns: 没有必要,文件系统的选择(比如Docker选择了aufs)实际上取决于你怎样构建容器镜像。一旦容器开始运行,只要操作系统支持容器镜像所用的文件系统即可。当然如果容器工具不支持你选择的文件系统,你需要重写一个工具。但是Kubernetes可以帮助解决这个问题,它在API中将文件系统提升到了第一级别对象,容器镜像之外的文件系统也可以被简单地mount到容器中。

[参考]
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
28天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Docker和Kubernetes的实践指南
【2月更文挑战第30天】 在当今快速发展的云计算时代,传统的IT运维模式已难以满足业务的敏捷性和稳定性需求。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理工具构建一个高效、可靠的自动化运维体系。文章首先概述了容器化技术和微服务架构的基本概念,随后详细阐述了基于Docker的应用打包、部署流程,以及Kubernetes在自动化部署、扩展和管理容器化应用中的关键作用。最后,文中通过案例分析,展示了如何在实际场景中利用这些技术优化运维流程,提高系统的整体效率和可靠性。
|
1月前
|
开发者 Docker Python
深入浅出:使用Docker容器化部署Python Web应用
在当今快速发展的软件开发领域,Docker作为一个开放平台,为开发者提供了将应用打包在轻量级、可移植的容器中的能力,从而简化了部署和管理应用程序的复杂性。本文将通过一个简单的Python Web应用示例,引导读者理解Docker的基本概念、容器化的优势以及如何使用Docker来容器化部署Python Web应用。我们将从零开始,逐步探索创建Dockerfile、构建镜像、运行容器等关键步骤,旨在为读者提供一个清晰、易于理解的指南,帮助他们掌握使用Docker容器化部署应用的技能。
|
20天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的最佳实践
在现代云计算环境中,自动化运维成为保障系统稳定性与提升效率的关键。本文深入探讨了如何利用Docker容器化技术和Kubernetes容器编排工具构建一个高效、可靠的自动化运维体系。文中不仅介绍了相关的技术原理,还结合具体案例分析了实施过程中的常见问题及解决方案,为读者提供了一套行之有效的最佳实践指南。
|
29天前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【2月更文挑战第29天】在当今快速发展的软件开发领域,微服务架构已成为提高系统可维护性、扩展性和敏捷性的关键解决方案。本文将深入探讨如何利用Docker容器化技术和Kubernetes集群管理工具,共同构建一个既高效又可靠的微服务环境。我们将分析Docker和Kubernetes的核心功能,并展示它们如何协同工作以简化部署流程、增强服务发现机制以及实现无缝的服务伸缩。通过实际案例分析,本文旨在为开发者提供一套实用的微服务架构设计和实施指南。
|
30天前
|
Kubernetes API Docker
Docker+K8s基础(重要知识点总结)
Docker+K8s基础(重要知识点总结)
54 0
|
1月前
|
Ubuntu Shell 开发者
Docker容器管理
Docker容器管理
35 0
|
1月前
|
Kubernetes 云计算 开发者
云计算中的容器化技术:Docker与Kubernetes的实践
云计算中的容器化技术:Docker与Kubernetes的实践
72 0
|
2月前
|
存储 监控 测试技术
【Docker管理工具】安装Oxker容器管理工具
【2月更文挑战第4天】安装Oxker容器管理工具
77 2
|
2月前
|
Kubernetes Unix Docker
k8s管理docker
k8s管理docker
|
2月前
|
开发者 Docker 微服务
深入浅出:使用Docker容器化部署微服务架构
在当今快速迭代的软件开发环境中,微服务架构因其高度解耦和独立性而成为企业首选。然而,微服务的管理和部署可能会变得复杂和繁琐。本文将探讨如何利用Docker,一个轻量级的容器化技术,来简化和加速微服务的部署。我们将从Docker的基础概念入手,详细介绍如何创建、配置和运行微服务容器,最后讨论Docker在微服务架构中的优势和挑战。本文旨在为开发者提供一条清晰的路径,通过容器化技术实现微服务架构的高效部署和管理。
86 0