Docker镜像无法在kubernetes中启动

问题描述 投票:0回答:1

我试图找出docker命令docker run -p 8080:80 webapp如何与kubernetes yaml。我有一个nginx dockerized,当我用上面提到的命令启动它时,图像工作正常。当我把它推到kubernetes时,没有任何反应。

Dockerfile:

FROM nginx:1.13.3-alpine

COPY nginx/default.conf /etc/nginx/conf.d/

RUN rm -rf /usr/share/nginx/html/*

COPY ./dist /usr/share/nginx/html

CMD ["nginx", "-g", "daemon off;"]

我的Kubernetes部署

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: webapp-production
spec:
  replicas: 1
  template:
    metadata:
      name: webapp
      labels:
        app: webapp
        role: frontend
        env: production
    spec:
      containers:
      - name: webapp
        image: eu.gcr.io/projectxyz/webapp:1.0.0
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: ENVIRONMENT
          value: "production"
        resources:
          limits:
            memory: "500Mi"
            cpu: "100m"
        imagePullPolicy: Always
        ports:
        - name: webapp
          containerPort: 8080

我的服务

kind: Service
apiVersion: v1
metadata:
  name: webapp
spec:
  selector:
    app: webapp
    role: frontend
  type: NodePort
  ports:
  - name: http
    port: 8080
  - name: external
    port: 80
    targetPort: 8080

我是否必须在kubernetes中运行命令?端口配置是否正确?谢谢您的帮助。

///////编辑/////来自pod日志的消息:The selected container has not logged any messages yet.

docker kubernetes
1个回答
0
投票

你在这里瞄准错误的端口。从我看到这个应用程序在端口80上启动nginx,但您的服务定义针对端点pod上的端口8080。由于没有流量到达nginx,stdout访问日志中不会记录任何内容。将您的服务定义更改为在正确的端口(80)上引导流量,这应该可以解决问题。

旁注:如果容器不能过早启动/终止,您可能会在pod上看到崩溃状态。

© www.soinside.com 2019 - 2024. All rights reserved.