集群计算 Fedora 与 Minikube

[ad_1]

这是一个简短的系列,介绍 Kubernetes、它的作用以及如何在其上进行试验 Fedora. 这是一个面向初学者的系列,帮助介绍一些更高层次的概念并给出使用它的示例 Fedora. 在第一篇文章中,我们介绍了 Kubernetes 中的关键概念。 第二篇文章向您展示了如何在您自己的计算机上构建单节点 Kubernetes 部署。

一旦您对 Kubernetes 中的关键概念和术语有了更深入的了解,上手就会变得更加容易。 与许多编程教程一样,本教程向您展示了如何构建“Hello World”应用程序并使用 Kubernetes 在您的计算机上本地部署它。 这是一个简单的教程,因为没有多个节点可供使用。 相反,我们使用的唯一设备是单个节点(也就是您的计算机)。 最后,您将看到如何将 Node.js 应用程序部署到 Kubernetes pod 中并通过部署在 Fedora.

本教程不是从头开始制作的。 你可以找到 独特的教程 在 Kubernetes 官方文档中。 本文添加了一些更改,让您可以自己做同样的事情 Fedora 计算机。

介绍 Minikube

Minikube 是 Kubernetes 团队开发的官方工具,旨在帮助简化测试。 它允许您通过自己硬件上的虚拟机运行单节点 Kubernetes 集群。 除了第一次使用它来玩弄或实验之外,如果您每天都在使用 Kubernetes,它还可以用作测试工具。 它确实支持您在生产 Kubernetes 环境中需要的许多功能,例如 DNS、NodePorts 和容器运行时。

安装

本教程需要虚拟机和容器软件。 您可以使用许多选项。 Minikube 支持

虚拟盒子

,

vmwarefusion

,

平方米

, 和

xhyve

虚拟化的驱动程序。 但是,本指南将使用 KVM,因为它已经打包并在 Fedora. 我们还将使用 Node.js 构建应用程序,使用 Docker 将其放入容器中。

前置要求

您可以使用此命令安装先决条件。

$ sudo dnf install kubernetes libvirt-daemon-kvm kvm nodejs docker

安装这些软件包后,您需要将您的用户添加到正确的组中以允许您使用 KVM。 以下命令会将您的用户添加到组中,然后更新您的当前会话以使组更改生效。

$ sudo usermod -a -G libvirt $(whoami)
$ newgrp libvirt

Docker KVM 驱动程序

如果使用 KVM,您还需要安装 KVM 驱动程序才能使用 Docker。 您需要添加 码头机器Docker 机器 KVM 驱动程序 到您的本地路径。 您可以在 GitHub 上查看他们的页面以获取最新版本,也可以针对特定版本运行以下命令。 这些是在一个 Fedora 25 安装。

码头机器

$ curl -L https://github.com/docker/machine/releases/download/v0.12.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine
$ chmod +x /tmp/docker-machine
$ sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

Docker 机器 KVM 驱动程序

这将安装 CentOS 7 驱动程序,但它也适用于 Fedora.

$ curl -L https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.10.0/docker-machine-driver-kvm-centos7 >/tmp/docker-machine-driver-kvm
$ chmod +x /tmp/docker-machine-driver-kvm
$ sudo cp /tmp/docker-machine-driver-kvm /usr/local/bin/docker-machine-driver-kvm

安装 Minikube

安装的最后一步是获取 Minikube 本身。 目前,没有包在 Fedora 可用,官方文档建议获取二进制文件并将其移动到本地路径。 要下载二进制文件,使其可执行,并将其移动到您的路径,请运行以下命令。

$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ chmod +x minikube
$ sudo mv minikube /usr/local/bin/

现在您已准备好构建集群。

创建 Minikube 集群

现在您已经安装了所有东西并在正确的位置,您可以创建您的 Minikube 集群并开始使用。 要启动 Minikube,请运行此命令。

$ minikube start --vm-driver=kvm

接下来,您需要设置上下文。 上下文是如何

kubectl

(Kubernetes 的命令行界面)知道它在处理什么。 要设置 Minikube 的上下文,请运行此命令。

$ kubectl config use-context minikube

作为检查,请确保

kubectl

可以通过运行此命令与您的集群通信。

$ kubectl cluster-info
Kubernetes master is running at https://192.168.99.100:8443
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

构建您的应用程序

现在 Kubernetes 已经准备就绪,我们需要在其中部署一个应用程序。 本文使用与 Kubernetes 文档中官方教程相同的 Node.js 应用程序。 创建一个名为

hellonode

并创建一个名为

服务器.js

使用您最喜欢的文本编辑器。

var http = require('http');

var handleRequest = function(request, response) {
 console.log('Received request for URL: ' + request.url);
 response.writeHead(200);
 response.end('Hello world!');
};
var www = http.createServer(handleRequest);
www.listen(8080);

现在尝试运行您的应用程序并运行它。

$ node server.js

在它运行时,您应该能够访问它 本地主机:8080. 一旦你确认它工作正常,点击

Ctrl+C

杀死进程。

创建 Docker 容器

现在您有一个要部署的应用程序! 下一步是将其打包到 Docker 容器中(稍后您将传递给 Kubernetes)。 您需要创建一个

Dockerfile

在与您的文件夹相同的文件夹中

服务器.js

文件。 本指南使用现有的 Node.js Docker 映像。 它在端口 8080 上公开您的应用程序,复制

服务器.js

到图像,并将其作为服务器运行。 你的

Dockerfile

应该是这样的。

FROM node:6.9.2
EXPOSE 8080
COPY server.js .
CMD node server.js

如果您熟悉 Docker,您可能习惯于将镜像推送到注册表。 在这种情况下,由于我们将其部署到 Minikube,您可以使用与 Minikube 虚拟机相同的 Docker 主机来构建它。 为此,您需要使用 Minikube Docker 守护程序。

$ eval $(minikube docker-env)

现在您可以使用 Minikube Docker 守护程序构建您的 Docker 映像。

$ docker build -t hello-node:v1 .

嘘! 现在你有了一个 Minikube 可以运行的镜像。

创建 Minikube 部署

如果您还记得本系列的第一部分,部署会监视您的应用程序的运行状况,并在它死亡时重新安排它。 部署是创建和扩展 pod 的受支持方式。

kubectl 运行

创建一个部署来管理一个 pod。 我们将创建一个使用

你好节点

我们刚刚构建的 Docker 镜像。

$ kubectl run hello-node --image=hello-node:v1 --port=8080

接下来,检查部署是否创建成功。

$ kubectl get deployments
NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-node   1         1         1            1           30s

创建部署还会创建运行应用程序的 pod。 您可以使用此命令查看 pod。

$ kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
hello-node-1644695913-k2314   1/1       Running   0          3

最后,我们来看看配置是什么样子的。 如果您熟悉 Ansible,Kubernetes 的配置文件也使用易于阅读的 YAML。 您可以使用此命令查看完整配置。

$ kubectl config view

kubectl

做很多事情。 要了解更多关于你可以用它做什么,你可以阅读 文件.

创建服务

目前,该 pod 只能在 Kubernetes pod 内部通过其内部 IP 地址访问。 要在 Web 浏览器中查看它,您需要将其作为服务公开。 要将其公开为服务,请运行此命令。

$ kubectl expose deployment hello-node --type=LoadBalancer

类型被指定为

负载均衡器

因为 Kubernetes 会将 IP 暴露在集群之外。 如果您在云环境中运行负载均衡器,那么您将如何配置外部 IP 地址。 但是,在这种情况下,它将您的应用程序公开为 Minikube 中的服务。 现在,终于,您可以看到您的应用程序了。 运行此命令将在您的应用程序中打开一个新的浏览器窗口。

$ minikube service hello-node

恭喜,您通过 Kubernetes 部署了您的第一个容器化应用程序! 但是现在,如果您需要我们的小型 Hello World 应用程序怎么办?

我们如何推动变革?

是时候做好更新和推送的准备了。 编辑您的

服务器.js

文件并更改“Hello world!” 到“你好,世界!”

response.end('Hello again, world!');

我们将构建另一个 Docker 映像。 注意版本凹凸。

$ docker build -t hello-node:v2 .

接下来,您需要为 Kubernetes 提供要部署的新镜像。

$ kubectl set image deployment/hello-node hello-node=hello-node:v2

现在,您的更新已推送! 像以前一样,运行此命令使其在新的浏览器窗口中打开。

$ minikube service hello-node

如果您的应用程序没有出现任何不同,请仔细检查您是否更新了正确的图像。 您可以通过运行以下命令将 shell 放入您的 pod 来进行故障排除。 您可以从之前运行的命令中获取 pod 名称 (

kubectl 获取 pod

)。 进入 shell 后,检查是否

服务器.js

文件显示您的更改。

$ kubectl exec -it <pod-name> bash

打扫干净

现在我们完成了,我们可以清理环境了。 要清理集群中的资源,请运行这两个命令。

$ kubectl delete service hello-node
$ kubectl delete deployment hello-node

如果你玩完了 Minikube,你也可以停止它。

$ minikube stop

如果您使用 Minikube 有一段时间了,您可以取消设置我们在本指南前面设置的 Minikube Docker 守护程序。

$ eval $(minikube docker-env -u)

了解有关 Kubernetes 的更多信息

你可以找到 独特的教程 在 Kubernetes 文档中。 如果你想了解更多,网上有很多很棒的信息。 这 文件 Kubernetes 提供的内容是彻底而全面的。

问题、Minikube 故事或初学者提示? 在下面添加您的评论。

[ad_2]

Related Posts