2017-12-17 4 views
0

도커 명령이 kubernetes yaml에 대한 도커 명령 docker run -p 8080:80 webapp의 작동 방식을 파악하려고합니다. 내가 nginx dockerized 있고 위의 명령으로 시작할 때 이미지가 잘 작동합니다. kubernetes로 가져 가면 아무 일도 일어나지 않습니다.도커 이미지가 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: 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의 명령을 실행해야합니까

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 

내 서비스? 포트가 올바르게 구성 되었습니까? 도와 주셔서 감사합니다. 포드 로그에서

는 /////// 편집 ///// 메시지 : The selected container has not logged any messages yet.

+0

로그는 무엇을 말하고 있습니까? –

+0

@OliverCharlesworth "선택한 컨테이너가 아직 메시지를 기록하지 않았습니다." – Tino

+0

그 모든 것이 더 많거나 적게 보입니다. K8은 도커 컨테이너에서 명령을 실행합니다. –

답변

0

현재 잘못된 포트를 대상으로하고 있습니다. 이 앱이 포트 80에서 nginx를 시작했지만 서비스 정의는 엔드 포인트 포드에서 포트 8080을 타겟팅합니다. nginx에 도달하는 트래픽이 없으므로 아무 것도 stdout 액세스 로그에 기록되지 않습니다. 올바른 포트 (80)에서 트래픽을 지정하도록 서비스 정의를 변경하면 트릭을 수행해야합니다.

사이드 노트 : 컨테이너가 조기에 시작되거나 종료되지 않으면 포드에 크래시 루프 상태가 표시 될 수 있습니다.

+0

thx. 그것은 "실수"였습니다. 매력처럼 작동합니다 :-) – Tino