使用Docker在Node.js中本地Kubernetes Hello World

应用开发者

我一直在观看教程视频,并试图了解如何构建一个小型的简约应用程序。我跟踪的视频是从注册表中提取容器,而我现在正在尝试在本地测试,构建和部署所有内容。这是我的设置。

  1. 我已经安装了在Mac OS上启用了Kubernetes的最新docker。

  2. 使用Docker和Docker Compose运行的helloworld NodeJS应用程序

TODO:我希望能够启动我的实例,比方说kubernetes集群中的3


Docker文件

FROM node:alpine

COPY package.json package.json
RUN npm install

COPY . .
CMD ["npm", "start"]

docker-compose.yml

version: '3'

services:
    user:
      container_name: users
      build:
        context: ./user
        dockerfile: Dockerfile

在本教程的帮助下创建部署文件,由于我要合并来自youtube和Web链接的信息,因此可能会有问题。

创建一个能够启动并运行的yml文件,将在以后研究就绪和活跃性等其他方面。


apiVersion: v1
kind: Service
metadata:
  name: user
spec:
  selector:
    app: user
  ports:
    - port: 8080
  type: NodePort

请检查以上yml文件的正确性,所以问题是我下一步该怎么做?

达兹·威尔金

遗憾的是,您提供的代码片段不足,但您已具备基本知识。

我为您准备了一个Google教程,很遗憾,没有明显的问题。那并不意味着没有一个,只是我没有找到它。

您有正确的想法,并且有很多技术水平需要理解,但是,我赞扬您的方法,并认为我们可以帮助您实现目标。

  1. 让我们从helloworld Node.JS教程开始

https://nodejs.org/en/docs/guides/getting-started-guide/

  1. 然后您要对此进行容器化

https://nodejs.org/de/docs/guides/nodejs-docker-webapp/

对于下面的#3,这里的最后一步是:

docker build --tag=<your username>/node-web-app .

但是,由于您使用的是Kubernetes,因此您需要将此图像推送到公共存储库中。这样,无论群集在何处运行,它都将能够访问容器映像。

由于该示例使用DockerHub,让我们继续使用它:

docker push <your username>/node-web-app

NB还有一个隐含https://docker.io/<your username>/node-web-app:latest在这里

  1. 然后,您将需要一个Kubernetes集群,您可以在其中部署应用程序

我的建议是(除了microk8s和minikube之外)不要运行自己的Kubernetes集群。留给云提供商。

  1. 现在您已经掌握了所有内容,我建议您:
kubectl run yourapp \
--image=<your username>/node-web-app:latest \
--port=8080 \
--replicas=1

kubectl run不推荐使用IIRC ,但仍要使用它。它将使用1个Pod(==副本)为您创建Kubernetes部署(!)。--replicas=2如果需要,可以随意调整该值(也许)。

创建展开后,您将需要创建一个服务来使您的应用程序可以访问(在我的头上),该命令是:

kubectl expose deployment/yourapp --type=NodePort

现在,您可以查询服务:

kubectl get services/yourapp

NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
yourapp NodePort   10.152.183.27   <none>        80:32261/TCP   7s

注意(在这种情况下!)分配的NodePort是:32261,因此我可以使用curl http://localhost:32261(本地主机,因为我使用的是microk8s)与应用程序进行交互

kubectl是强大的。确定NodePort的另一种方法是:

kubectl get service/yourapp \
--output=jsonpath="{.spec.ports[0].nodePort}"

从头开始的方法的优点kubectl run是,您可以通过以下方式轻松确定重新创建此Deployment | Service所需的Kubernetes配置:

kubectl get deployment/yourapp \
--format=yaml \
> ./yourapp.deployment.yaml

kubectl get service/yourapp \
--format=yaml \
> ./yourapp.service.yaml

这些命令将询问群集,为您检索配置并将其泵入文件。它还将包含一些实例数据,但其要旨向您显示重新创建部署所需的内容。您将需要编辑此文件。

但是,您可以通过以下方法进行测试:首先删除部署和服务,然后从配置中重新创建它:

kubectl delete deployment/yourapp
kubectl delete service/yourapp

kubectl apply --filename=./yourapp.deployment.yaml
kubectl apply --filename=./yourapp.service.yaml

注意:您经常会看到多个资源配置合并到一个YAML文件中。这是完全有效的YAML,但您只会看到Kubernetes使用它。格式为:

...
some: yaml
---
...
some: yaml
---

使用此功能,您可以将yourapp.deployment.yamlyourapp.service.yaml合并为单个Kubernetes配置。

HTH!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hello World示例的Node.js错误

来自分类Dev

说“ Hello World!” 在Openshift中使用Node.js

来自分类Dev

Apache中的Hello World

来自分类Dev

在node.js上运行hello world时出错

来自分类Dev

Node.js-表达Hello World示例错误

来自分类Dev

EmberJs错误中的Hello World

来自分类Dev

Ruby on Rails 中的 Hello world

来自分类Dev

无法使“ Hello World”与Angular JS一起使用

来自分类Dev

无法使“ Hello World”与Angular JS一起使用

来自分类Dev

在Windows 7中从node.js命令提示符运行Hello world

来自分类Dev

在Windows 7中从node.js命令提示符运行Hello world

来自分类Dev

Knockout.js-简单的“ Hello World”失败

来自分类Dev

使用SeriLog和PowerShell的Hello World

来自分类Dev

FLTK Hello World中的字体异常

来自分类Dev

“ Hello World”如何在C中工作

来自分类Dev

IntelliJ中简单Hello World的ClassNotFoundException

来自分类Dev

Openvms / Itanium组装示例中的“ Hello World”?

来自分类Dev

Java中的Hello World投掷错误

来自分类Dev

在Eclipse中运行Golang Hello World的问题

来自分类Dev

在终端中以不同颜色打印Hello World

来自分类Dev

无法在OSX中编译“ hello world” cpp

来自分类Dev

mbed中的Hello World MQTT程序

来自分类Dev

让mxGraph Hello World示例在React中工作

来自分类Dev

无法在ecplise中运行android的hello world

来自分类Dev

无法在Netbeans中编译Hello World

来自分类Dev

Java中的调用方法-Hello World示例

来自分类Dev

Java中的Hello World投掷错误

来自分类Dev

无法在Android Studio中运行Hello World

来自分类Dev

Haskell 中的 Hello world 是 1.3 mb