LLM

[Kubernetes,K8s]쿠버네티스2

낑낑이 2025. 8. 14. 17:40

envsubst < deploy.t > deploy.yaml

을 통해 deploy.t를 사용하여 deploy.yaml 를 사용한다 

 

#docker image tag 변경방법

#docker tag d27610e18278 amdp-registry.skala-ai.com/skala-edu/skala-k8s.base:1.0.1 

 

 

Dokcerfile 사용해서 build하는 법

# docker build -t my-cmdargs /root/kubercluster2/02.cmdargs

 

docker file이 있는 경로에 접속해서 build를 하거나 해당 경로를 입력하면된다

 


init container

Pod의 실행되기 전 가장 먼저 초기에 실해오디어 초기화 및 사전 작업을 수행하는 컨테이너로 Pod내 포함하게된다

Pod 실행 시 실행되고 Init-container종료 후 다음절차가 실행되도록 두개의 container를 묶는것이다

#init.yaml

 

 

apiVersion: v1
kind: Pod
metadata:
  name: sk106-init-container-test
  namespace: skala-practice
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/port: '8081'
    prometheus.io/path: '/actuator/prometheus'
    update: ${ANNOTATION_UPDATE}
  labels:
    app: sk106-init-container-test
spec:
  initContainers:
  - name: check-active-enabled
    image: busybox
    command:
    - sh
    - -c
    - |
      timeout 300 sh -c "
      while [ ! -f /root/active.enabled ]; do
        echo 'Waiting for active.enabled file...'
        sleep 5
      done
      echo 'File active.enabled found. Initialization complete.'
      "
    volumeMounts:
    - name: root-volume
      mountPath: /root
  containers:
  - name: init-container-test
    image: amdp-registry.skala-ai.com/skala25a/sk106-webserver:2.0.0
    imagePullPolicy: Always
    readinessProbe:
      exec:
        command:
        - sh
        - -c
        - "[ -f /root/active.enabled ]"
      initialDelaySeconds: 30
      periodSeconds: 10
    env:
    - name: LOGGING_LEVEL
      value: DEBUG
    - name: USER_NAME
      value: sk106
    volumeMounts:
    - name: root-volume
      mountPath: /root
  volumes:
  - name: root-volume
    emptyDir: {}




 

# k apply -f init-pod.yaml

pod/sk106-init-container-test created

# k get pod -l app=sk106-init-container-test

NAME                        READY   STATUS     RESTARTS   AGE

sk106-init-container-test   0/1     Init:0/1   0          87s

 

k exec -it sk106-init-container-test -c check-active-enabled -- /bin/sh

sk106-init-container-test를 실행시키는데 active-enabled되어야 실행되는것이다. 현재는 init container에서 loop를 도는중이다 

/ # cd /root

~ # ls
~ # touch active.enabled

저장후에 다시 보면

sk106-init-container-test                    0/1     Running            0                107m

이렇게 Init에서 Running으로 바뀐걸 볼 수 있다

 

# k get pod sk106-init-container-test -o wide

NAME                        READY   STATUS    RESTARTS   AGE    IP             NODE                                               NOMINATED NODE   READINESS GATES

sk106-init-container-test   1/1     Running   0          112m   172.31.12.30   ip-172-31-11-212.ap-northeast-2.compute.internal

 


 

#replicas

deploy를 하게되면 지정한 수대로 pod이 생성되게 되는데 replica지정으로 pod의 개수를 조정할 수 있게된다

 

#


# k delete deploy sk106-first-deploy-test -n skala-practice

deployment.apps "sk106-first-deploy-test" deleted


#Pending오류

보통 Pending이발생할때 너무많이 Deploy파일이 생성되서 오류가 생성되는 이유가 있다

 

kubectl get events -n skala-practice --sort-by=.lastTimestamp | tail -n 30

이걸로뭐가 오류인지 체크해주기


 

NAME                                   DESIRED   CURRENT   READY   AGE

sk106-replicaset-test-95dc86b45        2         2         2       7m49s

 이런식으로 발생하게 된당 replicas가 2개가 생성된거 확인가눙하다

 

 

여러개의 Replicaset을 이용해서 Rolling Update가 가능하다

새로운 Preplicaset을 만들고 Old와 New Pod의 업데이트가 가능한데

 
root@BOOK-8FCGNUSNRC:~/kubercluster2/04.replicaset_own# ./cicd.sh
[16:24:36] Rendering templates...
[16:24:36] Rendered: /root/kubercluster2/04.replicaset_own/deploy.yaml
[16:24:36] Rendered: /root/kubercluster2/04.replicaset_own/service.yaml
[16:24:36] Template rendering complete.

이렇게 업데이트가되면 yaml파일이 생기고

 

root@BOOK-8FCGNUSNRC:~/kubercluster2/04.replicaset_own# k apply -f deploy.yaml
deployment.apps/sk106-replicaset-test configured

deploy하게 되면 이렇게 deploy가 배포된다

env파일에서 이렇게 verison을 변경하고

#VERSION="1.0.0"
VERSION="2.0.0"

 

 

root@BOOK-8FCGNUSNRC:~/kubercluster2/04.replicaset_own# ./cicd.sh
[16:24:36] Rendering templates...
[16:24:36] Rendered: /root/kubercluster2/04.replicaset_own/deploy.yaml
[16:24:36] Rendered: /root/kubercluster2/04.replicaset_own/service.yaml
[16:24:36] Template rendering complete.

 

다시 실행시켜주면 yaml파일이 변경된다

이후 실행된 파일을 보기위해

root@BOOK-8FCGNUSNRC:~/kubercluster2/04.replicaset_own# k get replicaset -l app=sk106-replicaset-test
NAME                               DESIRED   CURRENT   READY   AGE
sk106-replicaset-test-58c8786fc4   1         1         1       39s
sk106-replicaset-test-7f4cc5b58c   0         0         0       66s

두개의 deploy가 생성된 것을 볼 수있다.

 

 
root@BOOK-8FCGNUSNRC:~/kubercluster2/04.replicaset_own# k rollout history deploy sk106-replicaset-test
deployment.apps/sk106-replicaset-test
REVISION  CHANGE-CAUSE
1         <none>
2         <none>

 

명령어는 Kubernetes Deployment롤아웃(배포) 이력을 확인하는 명령

롤아웃한적이 없으므로 롤아웃 시키켜보장

 

^Croot@BOOK-8FCGNUSNRC:~/kubercluster2/04.replicaset_own# k rollout undo deploy sk106-replicaset-test
deployment.apps/sk106-replicaset-test rolled back

 

이렇게 rollback되었다고 뜨는데

처음에는 version 2:0:0이 되었다가

다시 실행시켜 version 1:0:0이 되는것을 기대하는 것이다

 

포트포워딩을통해 ver 2가 이 홈페이지였는데

rollback이후에 아래와 같은 화면으로 변경되었다

 

 

신기하네요 ㅎ.ㅎ

'LLM' 카테고리의 다른 글

[Kubernetes,K8s]쿠버네티스  (5) 2025.08.13
[Docker]Docker build/run/push/Kubernetes  (4) 2025.08.12
[7]JavaScript  (7) 2025.08.11
[6]CSS  (3) 2025.08.11
[5]HTML  (3) 2025.08.08