쿠버네티스 컨테이너 타임존 설정하기(Setting the Kubernetes container timezone)

2022. 6. 17. 16:49프로그래밍 개발(Development)/k8s

반응형

쿠버네티스로 컨테이너를 배포하다보면 기본 타임존이 UTC로 설정이 되어 있는경우가 많습니다.

그래서 배포시 타임존 설정을 하는 방법을 알아 보도록 하겠습니다.

 

테스트용 Nginx를 배포하고 타임존을 확인해보겠습니다.

 

nginx.yaml 파일 작성

 

apiVersion: apps/v1           # 쿠버네티스 api 버전
kind: Deployment              # 생성할 오브젝트 종류
metadata:                
  name: nginx-deployment      # deployment의 이름
  labels:
    app: nginx                # label 지정
spec:                         # deployment의 스펙을 정의
  replicas: 1                 # 1개의 pod 설정
  selector:                   # deployment가 관리할 pod를 찾는 방법을 정의
    matchLabels:     
      app: nginx
  template:
    metadata:
      labels:                 # pod의 label
        app: nginx
    spec:
      containers:             # 컨테이너 설정
      - name: nginx          
        image: nginx
        ports:
        - containerPort: 80

nginx 배포

$ kubectl apply -f nginx.yaml

Pod가 생성된 것을 확인

$ kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-7848d4b86f-q8jhp   1/1     Running   0          3m53s

컨테이너 내부로 들어가서 타임존 확인 결과 기본 타임존인 UTC로 설정 되어 있다.

$ kubectl exec nginx-deployment-7848d4b86f-q8jhp -it -- date
Fri Jun 17 07:35:19 UTC 2022

타임존 변경을 하기 위해 nginx.yaml에 내용을 수정 해보자.

volumeMounts.mountPath의 /etc/localtime 과 volumes.hostPath.path의 /usr/share/zoneinfo/Asia/Seoul을 매핑하여 타임존을 맞춰 주자.

지역과 상황에 따라서 /usr/share/zoneinfo/Asia/Seoul 을 알맞게 수정해주면 된다.

apiVersion: apps/v1           # 쿠버네티스 api 버전
kind: Deployment              # 생성할 오브젝트 종류
metadata:                
  name: nginx-deployment      # deployment의 이름
  labels:
    app: nginx                # label 지정
spec:                         # deployment의 스펙을 정의
  replicas: 1                 # 3개의 pod 설정
  selector:                   # deployment가 관리할 pod를 찾는 방법을 정의
    matchLabels:     
      app: nginx
  template:
    metadata:
      labels:                 # pod의 label
        app: nginx
    spec:
      containers:             # 컨테이너 설정
      - name: nginx          
        image: nginx
        ports:
        - containerPort: 80
        ###################################
        #          이하 모두 추가         #
        #↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓#
        volumeMounts:
        - name: tz-seoul
          mountPath: /etc/localtime
      volumes:
      - name: tz-seoul
        hostPath:
          path: /usr/share/zoneinfo/Asia/Seoul

수정된 Deployment를 적용 후 타임존 확인 결과 변경 된 것을 확인 할 수 있다.

$ kubectl apply -f nginx.yaml 
deployment.apps/nginx-deployment configured

$ kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-7cff4845c7-7q8v5   1/1     Running   0          4m22s

$ kubectl exec nginx-deployment-7cff4845c7-7q8v5 -it -- date
Fri Jun 17 16:42:40 KST 2022

 

반응형