广告

使用MicroK8s部署第一个应用程序

  • 浏览(81)
  • 评论(0)
  • 译者:k8s

Kubernetes具有挑战性。对此,没有任何争议。不仅在将容器部署到Kubernetes集群中有很多移动部件,而且在这一过程中可能会出现很多问题。更为复杂的是,部署Kubernetes集群可能是一件棘手的事情。

这就是Canonical的MicroK8等工具被开发出来的原因。有了这样的软件,部署Kubernetes集群的过程就不那么具有挑战性,你可以更加专注于加快向集群部署应用程序和服务的速度。

将应用程序和服务部署到Kubernetes集群的诸多因素之一就是访问它们。与Docker不同,当你将应用程序或服务部署到Kubernetes集群时,它不会自动用于你的网络。如果你所在的计算机是集群的一部分,那么当然可以访问该应用程序或服务,因为该计算机可以访问集群使用的子网。如果没有一些额外的技巧,该应用程序和服务在集群之外根本不可用。这意味着你必须手动使其可用。

再一次强调,很多活动部件。

笔者已经完成了在Rocky Linux上安装Microk8s,然后将节点连接到控制器的步骤。通过添加节点,可以创建应用程序和服务可以部署到的集群。

现在要做的是展示如何将第一个应用程序部署到集群,然后使该应用程序可以在集群之外访问。需要注意的一点是,将应用程序/服务部署到MicroK8s集群与任何其他Kubernetes发行版类似。最大的不同是,部署需要MicroK8s命令,而其他Kubernetes发行版则没有这个要求。

需要什么

为此,你只需要一个运行中的MicroK8s集群,该集群至少包含一个控制器和两个节点。这些可以部署到数据中心、测试网络或第三方云主机。只要节点连接到控制器,就可以开始了。

如果不确定节点是否已连接,请登录控制器并发出命令:

1

microk8s kubectl get nodes

你应该看到列出的控制器和所有连接的节点。如果没有,请确保再次执行连接节点的步骤。

使用MicroK8s部署第一个应用程序

登录MicroK8s控制器。对于本演示,我们将部署一个NGINX web服务器应用程序。我们将此部署命名为nginx-webserver,并使用正式的nginx容器镜像进行部署。此命令为:

microk8s kubectl create deployment nginx-webserver –image=nginx

该命令的输出应如下所示:

deployment.apps/nginx-webserver created

使用以下命令验证部署是否成功:

microk8s kubectl get pods

你应该在输出中看到类似的内容:

nginx-webserver-67f557b648-4mfc6         1/1     Running

第一个pod已部署到集群。什么是pod?Kubernetes pod是一个或多个容器的集合,是应用程序的最小单元。pod通常由多个集成容器组成,但也可以由单个容器组成。在上面的例子中,我们部署了一个带有单个容器(NGINX)的pod。

此时,NGINX应用程序正在运行,但无法访问。为了使其可访问,我们还必须部署一个服务。我们将在这里使用端口80上的类型“NodePort”公开nginx Web服务器部署。什么是NodePort?简单地说,NodePort是连接到集群的每个节点上的一个开放端口。Kubernetes将NodePort上的传入流量路由到部署的服务或应用程序。

要部署服务,命令如下所示:

microk8s kubectl expose deployment nginxwebserver type=“NodePort” port80

命令的输出应如下所示:

service/webserver exposed

如果你试图访问端口80上正在运行的容器,例如http://192.168.1.45,你会发现它无法访问。有什么好处?好吧,Kubernetes将内部端口80映射到一个随机的内部端口。在我们访问正在运行的web服务器之前,我们必须找出它映射到了哪个端口。为此,发出命令:

microk8s kubectl get svc nginx-webserver

输出应该如下所示:

nginx-webserver   NodePort   10.152.183.105   <none>        80:31508/TCP   3m11s

如你所见,Kubernetes已将内部端口80(NGINX使用的端口)映射到外部端口31508(Kubernete集群使用的端口)。因此,如果你将web浏览器指向192.168.1.45:1508,你应该会在浏览器中看到NGINX欢迎屏幕。

当然,你可以使用任何一个节点的IP地址。但是,如果使用控制器的IP地址,则不会显示NGINX站点。为什么?因为控制器将容器部署到节点,而不是自身。

这就是使用MicroK8s将第一个应用程序部署到Kubernetes集群的全部内容。

原文链接:

https://thenewstack.io/kubernetes-101-deploy-your-first-application-with-microk8s/


  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头