gpt4 book ai didi

docker - 带有 Docker 的 nodejs 中的本地 kubernetes Hello World

转载 作者:行者123 更新时间:2023-12-02 11:56:35 24 4
gpt4 key购买 nike

我一直在关注tutorial videos并试图理解构建一个小型简约应用程序。我关注的视频是从注册表中提取容器,而我目前正在尝试在本地测试、构建和部署所有内容,如果可能的话。这是我的设置。

  • 我在 mac OS 上安装了最新的 docker,并启用了 Kubernetes。
  • 使用 Docker 和 Docker Compose 运行的 helloworld NodeJS 应用程序

  • 待办事项:我希望能够启动我的实例,比如说 kubernetes 集群中的 3

    Dockerfile
    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

    借助 tutorial 创建部署文件它可能有问题,因为我正在合并来自 youtube 和网络链接的信息。

    创建一个简约的 yml 文件以便能够启动和运行,稍后将研究其他方面,例如就绪性和 active 。
    apiVersion: v1
    kind: Service
    metadata:
    name: user
    spec:
    selector:
    app: user
    ports:
    - port: 8080
    type: NodePort

    请检查上面的 yml 文件是否正确,所以问题是我接下来要做什么?

    最佳答案

    遗憾的是,您提供的片段不足,但您拥有基础知识。
    我为你准备了一个谷歌教程,但不幸的是,没有什么明显的跳出来。这并不意味着没有,只是我没有找到它。
    您的想法是正确的,并且需要了解很多技术水平,但是,我赞扬您的方法,并认为我们可以帮助您实现目标。

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

  • https://nodejs.org/en/docs/guides/getting-started-guide/
  • 然后你想将这个
  • 容器化

    https://nodejs.org/de/docs/guides/nodejs-docker-webapp/
    对于下面的#3,这里的最后一步是:
    docker build --tag=<your username>/node-web-app .
    但是,因为您使用的是 Kubernetes,所以您需要将此镜像推送到公共(public)存储库。这样一来,无论您的集群在哪里运行,它都可以访问容器镜像。
    由于该示例使用 DockerHub,让我们继续使用它:
    docker push <your username>/node-web-app
    注意有一个隐含的 https://docker.io/<your username>/node-web-app:latest这里
  • 然后您需要一个 Kubernetes 集群,您可以在其中部署您的应用程序
  • 我认为 microk8s非常好
  • 我是前 Google 员工,但 Kubernetes Engine是基准(需要 $$$)
  • DigitalOcean 的忠实粉丝,它有 Kubernetes (也是 $$$)

  • 我的建议是(除了 microk8s 和 minikube)永远不要运行你自己的 Kubernetes 集群;把它留给云提供商。
  • 既然你已经掌握了所有的部分,我建议你:

  • kubectl run yourapp \
    --image=<your username>/node-web-app:latest \
    --port=8080 \
    --replicas=1
    我相信 kubectl run已弃用,但无论如何都要使用它。它将使用 1 个 Pod(==replica)为您创建一个 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

    这些命令将询问集群,为您检索配置并将其注入(inject)文件。它也将包含一些实例数据,但它的要点向您展示了重新创建部署所需的内容。您将需要编辑此文件。
    但是,您可以通过首先删除部署和服务然后从配置中重新创建它来测试这一点:
    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 配置中。

    关于docker - 带有 Docker 的 nodejs 中的本地 kubernetes Hello World,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635056/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com