【问题标题】:nodejs kubernetes unable to perform rolling updatenodejs kubernetes无法执行滚动更新
【发布时间】:2020-02-11 14:00:47
【问题描述】:

为了在生产环境中部署 express node.js api,我想使用 kubernetes 遵循以下步骤:

  • 在谷歌云中创建集群
  • 从git克隆代码到集群
  • docker build -t gcr.io/[GCLOUDID]/app:v1 。
  • docker pushgcr.io/[GCLOUDID]/app:v1
  • kubectl run app --image=gcr.io/[GCLOUDID]/app:v1

这运行良好,但是当我想更新代码时,我有点迷路了。 我试图构建一个 v2(docker build -t gcr.io/[GCLOUDID]/app:v2 。) 并通过 kubectl set image deployments/app app=gcr.io/[GCLOUDID]/app:v2 设置镜像

此方法会引发各种错误(例如 imagepullbackoff、crashloopbackoff)

使用了这个 dockerfile:

FROM node:11-alpine

WORKDIR /

COPY . /
RUN rm -rf node_modules
RUN rm -rf package-lock.json

RUN apk update && apk upgrade \
   && apk add --no-cache git \
   && apk --no-cache add --virtual builds-deps build-base python \
   && npm rebuild bcrypt --build-from-source

# Install imagemagick with support to native library
RUN apk add --no-cache file
RUN apk --update add imagemagick

RUN npm install 

ENV TYPE=docker

EXPOSE 80

CMD [ "npm", "start" ]

【问题讨论】:

    标签: node.js kubernetes google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    通过构建将容器嵌入部署的 yaml 来使用 kubernetes 声明性语法。这更干净,会让你保持井井有条。每当您想更新时,只需更改图像名称并运行kubectl apply -f deployment.yaml。您不仅会更新图像,还会以蓝绿色的方式进行更新。 检查这个例子https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    

    【讨论】:

    • 你有一个有效的例子吗,我的一直在'kind'上打破
    • 更新了答案
    • 如果对你有帮助,请投票给我的答案。
    猜你喜欢
    • 2018-02-08
    • 1970-01-01
    • 2020-08-27
    • 2019-06-16
    • 1970-01-01
    • 2021-06-26
    • 2021-01-17
    • 1970-01-01
    相关资源
    最近更新 更多