就在上周,我们在Mirantis Training的其中一位讲师Reza Roodsari,以网络研讨会的形式举办了一个Kubernetes新手迷你教学。我们在会议期间没有充足的时间来回答所有的问题,因此把答案便放到了这里。
Q:容器可以使用持久化的存储吗?
A:当然,你可以创建持久化的卷来保存文件。
Q:请问有在嵌入式产品中使用容器的实际案例吗?
A:我们不太了解实际使用的情况,不过好在这里有一个专门为此设立的开源项目:https://resinos.io/。
Q:你能再讲下为什么不需要配置管理吗?
A:当你在使用Docker的时候,无论用与不用Kubernetes,你都不再需要配置管理,因为开发人员可以将这些功能打包到Dockerfile里实现。当然,并不是说不可以结合这两种方案,不过通常用
Puppet
,
Chef
或者
Salt
做的很多东西也都可以在Dockerfile里完成。
Q:为什么容器还要部署到虚拟机上?
A:容器并不一定要部署到虚拟机;它们可以直接部署到裸机。之所以常常部署到虚拟机是因为今天的devops流程常常是这样运作的,已经行成了一个固定的套路。另外,今天大多数IaaS都是基于虚拟机的,因此当开发人员需要资源来部署它们的容器时,它们拿到手的便是这些。
Q:什么是Pod?
A:Pod就是Kubernetes所能识别的最小单元。它包含了一个或多个的容器并看做是一个整体的单元。基本上,可以说Pod就是一个单一的微服务。
Q:你能简单解释下Swarm和
Kubernetes
的共同点还有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社区合作致力于在后面的版本里克服这些限制。