最近在做一些关于Kubernetes的技术沉淀,接下来会基于Anju M Dominic女士的项目指导内容以及谷歌云的官方课程并加入个人理解进行这个Kubernetes系列博文的编写。
首先我们描述一下当前的时代背景
当前我们处于一个微服务架构备受关注的世界,我们经常会在一天内遭遇数十亿个容器(containers)。因此我们需要一个可移植的,稳定的和可扩展的平台来管理容器。这就是Kubernetes的全部意义所在。Kubernetes可以译为舵手(Helmsman),因为我们需要将大量的容器与多个机器关联起来。
我们先介绍下什么是Kubernetes集群
“A Kubernetes cluster is a set of node machines for running your containerized applications.”
从上面英文直译可知Kubernetes 集群是一组用于运行容器化应用程序的节点机器。
在Kubernetes中,基础的原子单元是一个Pod(这个我还没想到该怎么翻译),我们会在一个pod中定义我们的一个或多个应用程序,然后在Kubernetes集群中使用这些应用程序。一个pod可以有一个或者多个容器。
疑问
您可能会好奇为什么我们要用pods呢?我们直接以容器(containers)的形式在Kubernetes集群中部署我们的应用程序不可以么?
这是因为容器是被创造出来运行单一进程的。如果你想要在单一容器中运行多个不相关的进程,你会发现在实践过程中很难(extremely difficult)保持所有的进程运行以及管理它们的日志。因此我们想要一个更高等级的结构。这个结构需要使得我们可以把多个容器捆绑在一起并且将这些容器作为一个整体来管理。这就是pods要做的事情。在一个pod里,您可以有一个容器或者多个容器。