Kubernetes和Docker新手问答

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本文讲的是Kubernetes和Docker新手问答【编者的话】Mirantis是一个培训组织,近期他们举办了一个Kubernetes迷你新手训练营,本文是一些问答内容的整理。
本文讲的是Kubernetes和Docker新手问答【编者的话】Mirantis是一个培训组织,近期他们举办了一个Kubernetes迷你新手训练营,本文是一些问答内容的整理。

就在上周,我们在Mirantis Training的其中一位讲师Reza Roodsari,以网络研讨会的形式举办了一个Kubernetes新手迷你教学。我们在会议期间没有充足的时间来回答所有的问题,因此把答案便放到了这里。

Q:容器可以使用持久化的存储吗?
A:当然,你可以创建持久化的卷来保存文件。
Q:请问有在嵌入式产品中使用容器的实际案例吗?
A:我们不太了解实际使用的情况,不过好在这里有一个专门为此设立的开源项目: https://resinos.io/
Q:你能再讲下为什么不需要配置管理吗?
A:当你在使用Docker的时候,无论用与不用Kubernetes,你都不再需要配置管理,因为开发人员可以将这些功能打包到Dockerfile里实现。当然,并不是说不可以结合这两种方案,不过通常用 PuppetChef或者 Salt做的很多东西也都可以在Dockerfile里完成。
Q:为什么容器还要部署到虚拟机上?
A:容器并不一定要部署到虚拟机;它们可以直接部署到裸机。之所以常常部署到虚拟机是因为今天的devops流程常常是这样运作的,已经行成了一个固定的套路。另外,今天大多数IaaS都是基于虚拟机的,因此当开发人员需要资源来部署它们的容器时,它们拿到手的便是这些。
Q:什么是Pod?
A:Pod就是Kubernetes所能识别的最小单元。它包含了一个或多个的容器并看做是一个整体的单元。基本上,可以说Pod就是一个单一的微服务。
Q:你能简单解释下Swarm和K8S的共同点还有Openstack正在成立的标准对此产生的影响吗?
A:Docker Swarm和Kubernetes都是用来编排容器的,但是是以不同的方式。至于Openstack正在成立的标准对此产生的影响的话,我们可以去掐指算算,不过也许只有时间才能告诉我们最终的答案。一般而言,开源的好处,尤其对于Openstack来说,如果一个标准对你而言很重要的话,那便没有什么可以妨碍你去实现它了。
Q:如果一个Pod崩溃的话,Docker会怎么处理?
A:在Docker里是没有Pod的概念,它们是Kubernetes定义的组件。如果Kubernetes发现一个Pod崩溃掉了,它会启动另一个来替换它。
Q:如何升级Pod?
A:Pod是通过一个YAML文件来定义的,它会指定使用什么镜像,运行容器的数量,挂载的卷或者网络,等等。如果要升级一个Pod的话,你可以直接更新YAML文件然后告诉Kubernetes应用那个新的文件即可。必要时你也可以回滚变更。
Q:Kubernetes Swarmer是啥?
A:我猜你说的是Docker Swarm吧。它是一个和Kubernetes类似的Docker版容器编排系统。
Q:Docker和Kubernetes是不是已经稳定到足以在生产环境跑应用?
A:是的,两者均已足够稳定,可以跑生产应用,而且事实上两者都已经在很多地方被用于生产环境。
Q:在第一个例子里,与Openstack集群相比,K8S云是作为一个单独的集群运行?
A:是的,在“单项优势”的例子里,这里的确是两个独立的集群;“宠物”类应用跑在Openstack里,然后“牲畜”类应用则跑在Kubernetes上。也就是说,Kubernetes并不是不能跑在Openstack集群里。
Q:我听到Mirantis OpenStack 10将会基于Kubernetes,你对此有何评价?
A:不止一个声音提到过这一点,但是,这还处于计划阶段。Kubernetes编排的是应用;Openstack也是一个应用。我们计划允许Kubernetes来编排Openstack的控制面板。
Q:Kubernetes用的是Docker的容器?
A:是的,不过它也可以使用其他类型的容器。它已经支持了Rkt,而且还可以扩展对其他类型的支持。通过使用runc/libcontainer,它可以做到管理任何种类的容器。
Q:Docker + Kubernetes只能在Linux环境下运行吗?
A:不,Docker加入对Windows的支持已经有一段时间了,而就在1.5版本的时候,Kubernetes加入了对Windows Server容器的支持,控制器仍然还跑在Linux上,然后Kubelet和Kubeproxy则可以在Windows上运行。
Q:新发布的1.5版本Kubernetes在Windows上运行有遇到什么问题吗,比如说一些Iptables还有POD只支持一个单个容器之类的问题?
A:是的,因为Windows没有像Linux这样有Iptables,所以Windows Server容器在网络上会有一些限制。类似地,由于WIndows处理namespace的方式的不同,一个使用Windows Server容器的Pod只能有一个单一的容器。微软正在和Kubernetes社区合作致力于在后面的版本里克服这些限制。
Q:Kubernetes和Openstack发展方向是怎样的?它们之间存在很多分歧吗?
A:Kubernetes和Openstack是两个完全不同的东西;真的没有必要去比较它们,因为它们根本从来都碰不到一起。你可以在Openstack上跑Kubernetes,你也可以使用Kubernetes来编排Openstack,但是它们始终还是两个截然不同的东西。
Q:如何监控部署在Docker容器上的应用程序?
A:Kubernetes可以通过设定livenessProbe属性来为一个Pod做健康检测。
Q:怎样从外面访问一个跑着许多Docker实例的应用程序?
A:通过使用Kubernetes的Service资源,你可以有多种方案实现对一个跑在Kubernetes里的带有多个实例的Docker应用的访问。你可以使用一个公网IP来创建一个Service,一个负载均衡Service,或者说,如果是HTTP的情况下,用一个Kubernetes的Ingress资源。
Q:Mirantis提供对Kubernetes的支持吗?
A:到目前为止,Mirantis的产品只限于Openstack,这也即是我们所支持的全部;当我们加入对Kubernetes的支持时,事情可能会有一定程度的转变,但是就目前而言,情况就是这样。
Q:怎么把一个公网IP分配给一个跑在Openstack虚拟机里的Docker容器?
A:你只要像分配任何其他基于Openstack的公网IP一样通过浮动IP去做就行。
Q:是不是可以这样说,Kubernetes的编排就像一个流程图?一系列一个接一个的动作?
A:理想情况下,这是对的,但是实际上它并不是这样 —— 反正不是直接如此。当你在YAML文件里包含了多个定义时,没有办法保证它们会以怎样特定的顺序去执行。要解决这个问题实现“流程图”效果的话,你可以看下Kubernetes新的APPController。
Q:Docker/Kubernetes可以用在Windows服务或者实际的应用,数据库,还有存储吗,或者说你可以创建windows的虚拟机然后在Kubernetes下面跑吗?
A:听上去你所说的“实际应用”真的有点像是在说“宠物”类应用。如果是的话,那么最好还是用虚拟机来跑吧。
Q:应用和运行时平台是怎样解耦的?
A:容器是设计成自包含的。因此你可以创建一个包含了系统的所有内容,让它拥有完备的移植性。我们也应该明白一点,应用程序不可能 完全和运行时平台解耦。举个例子,你如果有一个应用是用Mono(Linux版本的.NET)写的,你可以用Linux上的Kubernetes来运行它,但是直接用Windows Server容器跑的话就只能运行在Windows上的Kubernetes了。
Q:有什么好办法来学习YAML吗?因为它对于Docker Compose,Kubernetes,还有许多其他接下来在SDN领域出现的应用来说都是非常重要的。
A:我们会上传一篇简短的YAML教程;如果您希望在该教程发布的时候收到通知的话,不妨在评论里告知我们。
Q:虽然容器是分层的,在宿主操作系统这块每个分层也是重复部署的。Openstack会为此提供一个轻量级的容器宿主虚拟机吗?
A:与其操心有没有一个轻量级的容器宿主虚拟机镜像,你还不如考虑下用一个最小集操作系统作为容器的基础层,比如 Alpine Linux
Q:Docker支持跑在Windows Server里;你有见过Kubernetes+Docker在Windows环境下的什么合作场景吗?
A:现在讨论或许还为时尚早,但是微软正在致力于确保跑在Windows上的Kubernetes能够和Linux比肩。
Q:有没有可能在一个Pod/容器里跑OpenClos?
A:我们没有这样做过,不过好像社区的工作已经做到让它在Docker里运行了( https://github.com/Juniper/OpenClos) ,而只要能以Docker容器的形式,你就可以把它跑在Kubernetes里。
Q:你对使用Stackenetes有什么评价吗?
A:Stackanetes是一个CoreOS的项目,它可以实现自行在Kubernetes集群上安装OpenStack控制器和计算节点。我们对此不予置评。

原文链接:Kubernetes and Docker Mini-Bootcamp Q&A(翻译:吴佳兴)

原文发布时间为:2017-02-13

本文作者:吴佳兴

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:Kubernetes和Docker新手问答

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
28天前
|
Kubernetes 监控 Docker
Docker Compose与Kubernetes的比较
【6月更文挑战第11天】本文探讨了Docker Compose与Kubernetes在容器编排中的角色。Docker Compose适合简单部署和开发环境,提供一键启动多容器的便利;而Kubernetes则适用于大规模生产环境,具备自动化运维、集群管理和负载均衡等功能。Python在容器编排中扮演重要角色,示例代码展示了如何使用Python的Docker SDK和Kubernetes客户端进行部署、扩展和日志管理。通过Python,开发者可以实现自定义监控、自动水平扩展和实时日志监控等高级功能,增强了容器编排的灵活性和自动化。
50 1
Docker Compose与Kubernetes的比较
|
2月前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的协同应用
【5月更文挑战第30天】 在当今软件开发领域,微服务架构已成为实现系统模块化、提升可维护性及扩展性的关键策略。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理,共同构建一个既高效又可靠的后端微服务环境。我们将剖析Docker和Kubernetes的核心功能,以及它们如何相辅相成,支撑起现代化的云原生应用程序部署和管理。文章还将提供具体实践案例,帮助开发者理解将理论应用于实际开发过程中的步骤和考虑因素。
|
6天前
|
运维 Kubernetes 负载均衡
docker、docker compose、k8s有什么区别?
Docker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我们使用其他容器技术的核心。
35 1
|
12天前
|
存储 监控 安全
Docker Compose:轻松实现容器编排的利器
【7月更文挑战第2天】 1. **基础与概念**:服务(多容器实例)、网络(灵活通信)、卷(数据持久化)和配置(安全管理)。 2. **实战指南**:安装Compose,编写`docker-compose.yml`文件,启动应用,并介绍依赖、环境变量、健康检查和数据持久化。 3. **最佳实践**:环境隔离、CI/CD集成、资源管理、日志监控、安全策略及案例分析,展示完整应用栈搭建。
33 1
|
17天前
|
jenkins 持续交付 开发者
利用Docker容器化部署应用的实战指南
【6月更文挑战第27天】本文详述Docker应用部署,涵盖Docker基本概念、安装、镜像制作及运行。通过编写Dockerfile构建镜像,使用`docker build`、`run`、`push`及`stop`命令管理。集成CI/CD工具如Jenkins,实现自动化构建、测试和部署,提升开发效率与部署质量。Docker助力轻量级、可移植的微服务架构。
|
1月前
|
运维 Kubernetes 持续交付
Docker与Kubernetes:容器化技术的黄金搭档
【6月更文挑战第10天】Docker和Kubernetes是容器化技术的黄金组合,Docker提供轻量级、可移植的容器引擎,简化应用部署,而Kubernetes作为容器编排系统,实现自动化部署、扩展和管理,确保高可用性和可扩展性。两者的协作使得容器化应用更高效、可靠,共同推动软件开发和运维的创新。
|
1月前
|
Shell Docker 容器
深入探索Docker容器管理:常用命令一览(1)
深入探索Docker容器管理:常用命令一览(1)
|
1月前
|
Kubernetes 应用服务中间件 API
docker-desktop启动k8s
docker-desktop启动k8s
29 0
|
9月前
|
Kubernetes 调度 Apache
Docker 编排工具比较:Kubernetes、Docker Swarm 和 Mesos,选择最适合你的容器编排方案
Docker 编排工具比较:Kubernetes、Docker Swarm 和 Mesos,选择最适合你的容器编排方案
273 0
|
12月前
|
存储 Kubernetes Cloud Native
如何使 Docker 和 Kubernetes 结合发挥容器的最大价值?
Docker 虽然在容器领域有着不可撼动的地位,然而在容器的编排领域,却有着另外一个事实标准,那就是 Kubernetes。本课时,我就带你一起来认识下 Kubernetes。
85 0