[k] 서비스, 파드, 컨테이너 구조 및 CrashLoopBackOff 해결

2022. 9. 26. 10:39OS/쿠버네티스

[k] 서비스, 파드, 컨테이너 구조

Service, Deployment

  • 서비스포트에 targetPort가 있고 Deployment에 conatinerPort및 pod에 conatinerport 없어도 오류 나지 않음
apiVersion: v1
kind: Service
metadata:
  name: name
  labels:
    app: name
spec:
  ports:
    - port: 8080
      targetPort: 8080
  selector:
    app: name
apiVersion: apps/v1
kind: Deployment
metadata:
  name: d
  namespace: heis
  labels:
    app: d
spec:
  replicas: 1
  selector:
    matchLabels:
      app: d
  template:
    metadata:
      labels:
        app: d
    spec:
      containers:
        - name: f
          image: uri
          ports:
            - containerPort: 8080
          env:
            - name: DATE
              value: 'DATE_STRING'
        - name: e
          image: uri
          env:
            - name: DATE
              value: 'DATE_STRING'

원하는기능

  • 컨테이너f를 내리고싶음

오류나는 상황

  • f컨테이너는 스프링앱인데, 스프링앱만 내리기 위해
SpringApplication.run

부분을 주석 처리 하여 배포 할 경우 CrashLoopBackOff 상황 발생

원인

  • istio 에서 spring인 f컨테이너를 체크하는데, run부분이 주석걸려있으므로 컨테이너 내에 프로세스가 떠있지 않는다.

  • 맞겠지?

해결방법

  • name f 컨테이너만 주석처리해도 오류나지 않고 배포 성공

  • 서비스가 targetPort 8080을 보고있는데 8080 컨테이너가 없음애도 오류가 나지 않는 이유는?

    • 나중에 채우기

참고 : kubernetes - Container port pods vs container port service - Stack Overflow