Kubernetes 入门

通过这个简单的教程学习使用开源容器管理系统的基础知识。
574 位读者喜欢这篇文章。
What's new in OpenStack in 2016: A look at the Newton release

Opensource.com

当今最有前景的新兴技术之一是将容器与集群管理软件配对,例如 Docker SwarmApache Mesos 和流行的 Kubernetes。 Kubernetes 允许您创建可移植且可扩展的应用程序部署,可以轻松地进行调度、管理和维护。 作为一个开源项目,Kubernetes 不断更新和改进,并在容器集群管理软件中处于领先地位。

Kubernetes 使用各种架构组件来描述它管理的部署。

  • Pod 是一组或多组共享网络和存储的容器。 Pod 中的容器被认为是“紧密耦合”的,它们作为一个单元进行管理和部署。 如果应用程序以更传统的模型部署,则 pod 的内容将始终在同一台机器上一起部署。
  • 节点 代表 Kubernetes 集群中的工作机器。 工作机器可以是物理的,也可以是(更可能是)虚拟的。 节点包含托管 pod 所需的所有服务。
  • 集群始终需要一个 节点,控制服务(称为主组件)安装在该节点上。 这些服务可以分布在单台机器上或多台机器上以实现冗余。 它们控制通信、工作负载和调度。
  • 部署 是一种以声明方式为您的 pod 或 ReplicaSet(要一起部署的 pod 组)设置状态的方法。 部署使用“期望状态”格式来描述部署应该是什么样子,而 Kubernetes 处理实际的部署任务。 部署可以随意更新、回滚、扩展和暂停。

以下教程将解释创建集群、部署应用程序和创建代理的基础知识,然后引导您进一步学习有关 Kubernetes 的知识。

创建集群

首先使用 Kubernetes 提供的 教程 来创建集群并部署应用程序。 该集群将由一个主节点和一个或多个节点组成。 在第一个场景中,您将使用名为“Minkube”的实用程序创建一个集群,该实用程序在本地机器上创建并运行一个集群。 Minikube 非常适合测试和开发。 您还将使用 kubectl 命令,该命令作为 Kubernetes API 的一部分安装。

在交互式终端中,使用以下命令启动 Minikube 软件

minikube start

使用以下命令查看集群信息

kubectl cluster-info

使用以下命令列出可用节点

kubectl get nodes

Output of kubectl get nodes

opensource.com

上面的屏幕截图显示了这些命令的输出。 请注意,唯一可用的节点是 host01,它作为主节点运行(如 cluster-info 输出中所示)。

部署应用程序

在交互式教程的 下一步 中,您将使用部署配置将容器化应用程序部署到您的集群。 这描述了如何创建应用程序的实例,主节点会将这些实例调度到集群中的节点上。

在交互式终端中,使用 kubectl run 命令创建一个新的部署

kubectl run kubernetes-bootcamp \
--image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080

这将从 docker.io 的公共仓库创建一个名为 kubernetes-bootcamp 的新部署,并将默认端口覆盖为 8080。

使用以下命令查看部署

kubectl get deployments

Output of kubectl get deployments

opensource.com

部署当前位于单个节点 (host01) 上,因为只有该节点可用。

创建代理

在本教程的 第三部分 中,您将为已部署的应用程序创建一个代理。 Pod 在无法从外部访问的隔离私有网络上运行。 kubectl 命令使用 API 与应用程序通信,并且需要代理来公开应用程序以供其他服务使用。

打开一个新的终端窗口并使用以下命令启动代理服务器

kubectl proxy

这会在您的集群和虚拟终端窗口之间建立连接。 请注意,它在本地主机的端口 8001 上运行。

Output of curl command

opensource.com

返回第一个终端窗口并运行 curl 命令以查看实际效果

curl http://localhost:8001/version

Output of curl command

opensource.com

JSON 输出(如上面的屏幕截图所示)显示了集群本身的版本信息。

按照在线教程查找已部署 pod 的内部名称,然后直接查询该 pod。 您还可以使用以下命令获取 pod 的详细输出

kubectl describe pods

此输出包含非常重要的信息,例如 pod 名称、本地 IP 地址、状态和重启计数。

继续前进

Kubernetes 是一个功能齐全的部署、调度和扩展管理器,能够决定如何在集群上部署应用程序的无数细节。 这里探讨的几个命令只是与 Kubernetes 部署交互和理解的开始。 最关键的要点是它有多么快速和容易操作,以及使用 Kubernetes 需要提供的细节是多么少。

按照在线 交互式教程,了解更多关于 Kubernetes 的工作原理以及您可以使用它做的所有事情。

User profile image.
Ben 在软件开发领域工作了 18 年,涉及多个行业,包括银行/金融、保险和医疗保健。

4 条评论

祝贺这篇文章,写得非常好!

谢谢哥们

代理和服务之间有什么区别,如果我们创建服务,它是否达到相同的目的??

Creative Commons 许可本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.