728x90
반응형
아래와 같은 Deployment YAML 파일을 통해서 실행된 pod에 exec 명령어를 통해 Pod에 들어가서 date 명령어를 통해서 확인한 시간은 올바르게 출력되지만, 컨테이너에서 출력한 로그에서는 9시간 이전으로 나타나는 문제를 발견했습니다.
pod는 KST 타임존으로 설정되었고 컨테이너 내부는 UTC 타임존로 설정된것으로 보였습니다.(KST는 UTC보다 9시간 빠른 한국 표준시, UTC+09:00)
containers:
- name: test
image: test/test:test-4
ports:
- containerPort: 8080
volumeMounts:
- name: tz-seoul
mountPath: /etc/localtime
volumes:
- name: tz-seoul
hostPath:
path: /usr/share/zoneinfo/Asia/Seoul
test 컨테이너 이미지의 기본 타임존을 확인해보기 위해 test 컨테이너를 생성하는 dockerfile을 확인해보니 아래와 같이 기본이미지를 khipu/openjdk17-alpine를 사용하게 되어 있었습니다.
FROM khipu/openjdk17-alpine
Alpine Linux를 기반으로 하고 있는데 Alpine Linux는 경량화된 Linux 배포판으로, 기본적으로 타임존이 UTC로 설정되어 있을 가능성이 높습니다.
Alpine은 기본적으로 /etc/localtime 파일을 사용하지 않으며, 타임존이 기본적으로 UTC로 설정되어 있습니다.
해결 방법
컨테이너가 애플리케이션 실행 시 사용할 타임존을 환경 변수로 명시적으로 설정해줄 수 있습니다. 아래와 같이 TZ 환경 변수를 추가하여 타임존을 설정할 수 있습니다.
containers:
- name: test
image: test/test:test-4
ports:
- containerPort: 8080
env:
- name: TZ
value: "Asia/Seoul"
volumeMounts:
- name: tz-seoul
mountPath: /etc/localtime
volumes:
- name: tz-seoul
hostPath:
path: /usr/share/zoneinfo/Asia/Seoul
728x90
반응형
'개발 > Kubernetes' 카테고리의 다른 글
Kubernetes에서 Pod 일시중단하는 방법 - 효율적인 관리 전략 (0) | 2024.08.02 |
---|