【问题标题】:Deploying Node.js apps with Kubernetes使用 Kubernetes 部署 Node.js 应用程序
【发布时间】:2018-08-17 02:47:14
【问题描述】:

我试图部署一个非常基本的 Express 应用程序,一个在 EC2 服务器 (Ubuntu 16.04) following this tutorial 上监听 8080 的小型服务器。在该服务器上,它通过 kops 1.8.0 创建了一个 Kubernetes 集群。 之后,我创建了一个 Dockerfile,如下所示:

FROM node:carbon

ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH=$PATH:/home/node/.npm-global/bin

# Create app directory
WORKDIR /usr/src/app
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install

# Bundle app source
COPY . .
EXPOSE 8080

CMD [ "node", "server.js" ]
# At the end, set the user to use when running this image
USER node

之后,我使用docker build -t ccastelli/stupid_server:test1 构建了映像,使用docker login -u ccastelli 指定了我的凭据,我从docker images 复制了映像ID,将其标记为docker tag c549618dcd86 org/test:first_try 并使用docker push org/test 推送到私有存储库中cloud.docker.com.

之后我用kubectl create secret docker-registry ccastelli-regcred --docker-server=docker.com --docker-username=ccastelli --docker-password='pass' --docker-email=myemail@gmail.com创建了一个集群密码

之后我创建了一个部署文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: stupid-server-deployment
 spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: stupid-server
    spec:
      containers:
      - name: stupid-server
        image: org/test:first_try
        imagePullPolicy: Always
        ports:
        - containerPort: 8080 
      imagePullSecrets:
      - name: ccastelli-regcred

我从kubectl get pods 看到图像从ErrPullImage 过渡到ImagePullBackOff,但它还没有准备好。无论如何,docker容器正在客户端实例上工作,但不在集群中。在这一点上,我有点失落。我究竟做错了什么? 谢谢

编辑:消息错误:

未能提取图像“org/test:first_try”:rpc 错误:代码 = Unknown desc = 来自守护进程的错误响应:存储库 pycomio/test not 找到:不存在或没有拉取访问权限

【问题讨论】:

  • 您是否托管您的 docker 私有存储库?如果可以,k8s集群能否1.正确解析域2.可以到达端口?
  • 私有仓库在 cloud.docker.com 上,我添加了从仪表板得到的错误。
  • 尝试将您的密钥更新为 --docker-server=https://cloud.docker.com 或您的容器 image: cloud.docker.com/org/test 或两者兼而有之

标签: kubernetes


【解决方案1】:

你的 --docker-server 应该是index.docker.io

DOCKER_REGISTRY_SERVER=https://index.docker.io/v1/
DOCKER_USER=Type your dockerhub username, same as when you `docker login`
DOCKER_EMAIL=Type your dockerhub email, same as when you `docker login`
DOCKER_PASSWORD=Type your dockerhub pw, same as when you `docker login`

kubectl create secret docker-registry myregistrykey \
  --docker-server=$DOCKER_REGISTRY_SERVER \
  --docker-username=$DOCKER_USER \
  --docker-password=$DOCKER_PASSWORD \
  --docker-email=$DOCKER_EMAIL

【讨论】:

猜你喜欢
  • 2019-10-20
  • 2017-08-24
  • 2012-08-07
  • 2018-11-20
  • 2021-08-29
  • 2021-10-17
  • 2021-07-15
  • 1970-01-01
  • 2021-04-01
相关资源
最近更新 更多