replicaset 을 이용해 파드를 관리할 때, 파드 수에 대한 수평적 확장 즉, 파드 스케일 아웃을 수행하는 방법은 두가지가 있다.

먼저 아래 내용으로 파드 레플리카를 3개 구동시킨다.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: sample-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: sample-app
  template:
    metadata:
      labels:
        app: sample-app
    spec:
      containers:
        - name: nginx-container
          image: nginx:1.16
          ports:
            - containerPort: 80

 

아래 커맨드를 실행해 파드 갯수를 확인한다.

$ kubectl describe replicasets.apps sample-rs
# replicaset 의 정보 확인

$ kubectl get pods -o wide -L app
# pod 가 3개 띄워져 있는지 확인

 

1. kubectl scale 명령어를 이용하는 방법

아래 커맨드를 실행해 pod 의 갯수를 5개로 조정 후 다시 파드의 갯수를 확인한다.

$ kubectl scale replicaset sample-rs --replicas 5
# replica 갯수를 5개로 조정

$ kubectl get pods -o wide -L app
# pod 의 갯수가 5개로 변경되었는지 확인

 

kubectl scale 명령어를 이용한 이 방법은 커맨드로 간편하게 스케일링을 할 수 있으나, 현재 상태가 매니페스트 파일과 동일하지 않게 되기 때문에 실무에서는 권장하지 않는 방법이다.

참고로, scale 명령어는 ReplicationController, Deployment, StatefulSet, Job, CronJob 에 대해서도 사용할 수 있다.

 

2. 매니페스트를 동적으로 수정 후 kubectl apply 하는 방법

아래 커맨드를 실행해 replica 수를 3개에서 5개로 수정하여 저장한 후, 매니페스트를 apply 한다.

$ sed -i -e 's|replicas: 3|replicas: 5|' sample-rs.yaml
# sed 명령어를 이용해 sample-rs.yaml 파일의 내용 중 "replicas: 3" 를 "replicas: 5" 로 치환

$ kubectl apply -f sample-rs.yaml
# 변경된 매니페스트 적용

$ kubectl get pods -o wide -L app
# pod 의 갯수가 5개로 변경되었는지 확인

 

이를 원시적으로 응용하면 원격에서 쉘스크립트를 호출하며 인자를 넘겨 replica 갯수를 조정할 수 있을 것이다. IaC 를 구현하기 위해서라도 이러한 형태로 사용하는 것이 권장된다.

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,

Dockerfile 에서 WORKDIR 지시자를 통해 컨테이너 내부에서의 작업 디렉터리를 설정하는 것처럼, 파드 매니페스트 설정에서도 작업 디렉터리를 설정할 수 있다. 이 설정은 Dockerfile 의 WORKDIR 을 덮어쓰게 된다.

apiVersion: v1
kind: Pod
metadata:
  name: workingdir
spec:
  containers:
  - name: nginx-container
    image: nginx:1.16
    workingDir: /tmp

 

위 내용으로 파드를 생성한 후, 아래 커맨드로 프로세스가 실행되는 디렉터리가 변경되었음을 확인할 수 있다.

 

$ kubectl exec -it workingdir -- pwd
/tmp

 

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,

리눅스에서는 /etc/resolv.conf 에 명시된 DNS 서버를 통해 호스트명을 해석하기 전에 먼저 /etc/hosts 파일로 정적 호스트명을 해석한다. 쿠버네티스에서 파드 내의 모든 컨테이너의 /etc/hosts 설정을 변경하기 위해서는 아래와 같이 설정한다.

 

apiVersion: v1
kind: Pod
metadata:
  name: hostaliases
spec:
  containers:
    - name: nginx-container
      image: nginx:1.16
  hostAliases:
    - ip: 8.8.8.8
      hostnames:
        - google-dns
        - google-public-dns

 

위 내용으로 파드를 생성한 후, 아래 커맨드로 /etc/hosts 를 확인한다.

$ kubectl exec -it hostaliases -- cat /etc/resolv.conf

# Entries added by HostAliases.
8.8.8.8	google-dns	google-public-dns

 

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,