当今最有前景的新兴技术之一是将容器与集群管理软件(如 Docker Swarm, Apache 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

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

opensource.com
该部署目前位于单个节点 (host01) 上,因为只有该节点可用。
创建代理
在教程的第三部分中,您将创建一个进入已部署应用程序的代理。 Pod 在无法从外部访问的隔离专用网络上运行。 kubectl 命令使用 API 与应用程序通信,并且需要一个代理来公开该应用程序以供其他服务使用。
打开一个新的终端窗口并使用以下命令启动代理服务器
kubectl proxy
这会在您的集群和虚拟终端窗口之间建立连接。 请注意,它在本地主机上的端口 8001 上运行。

opensource.com
返回到第一个终端窗口并运行 curl 命令以查看其运行情况
curl https://127.0.0.1:8001/version

opensource.com
上面的屏幕截图中显示的 JSON 输出显示了来自集群本身的版本信息。
按照在线教程查找已部署 pod 的内部名称,然后直接查询该 pod。 您还可以使用以下命令获取 pod 的详细输出
kubectl describe pods
此输出包括非常重要的信息,例如 pod 名称、本地 IP 地址、状态和重启计数。
向前迈进
Kubernetes 是一个功能完善的部署、调度和扩展管理器,能够决定如何在集群上部署应用程序的无数细节。 此处探讨的几个命令只是与 Kubernetes 部署交互和理解的开始。 最关键的要点是它有多么快速和容易,以及您需要提供多少细节才能使用 Kubernetes。
按照在线交互式教程 了解有关 Kubernetes 工作原理以及可以使用它执行的所有操作的更多信息。
4 条评论