Study/seSAC 금천 4기

컨테이너 Orchestration_2일차_240925

지찬씌 2024. 9. 30. 09:11

레플리카셋 (replicaset) = 일정 개수의 파드를 유지하는 컨트롤러

: 파드 집합의 실행을 항상 안정적으로 유지하는 것이 목적이다.

  보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다.

 

 

 

 

동일한 컨테이너를 여러 개 실행하려고 하는 경우 사용한다.

 

1. 동일한 컨테이너를 실행하는 파드를 여러개 정의해서 실행

 

예시) 같은 내용의 컨테이너 2개를 실행하는 yaml 파일

apiVersion: v1

kind: Pod

metadata:

  name: my-nginx-pod-A

spec:

  containers:

  - name: my-nginx-container

    image: nginx

    ports:

    - containerPort: 80

      protocol: TCP

---

apiVersion: v1

kind: Pod

metadata:

  name: my-nginx-pod-B

spec:

  containers:

  - name: my-nginx-container

    image: nginx

    ports:

    - containerPort: 80

      protocol: TCP

 

 

- 이 방법은 비효율적이다.

 

- 파드가 삭제되거나 파드가 위치한 노드에 장애가 발생하여 파드에 접근하지 못하는 경우,

  관리자가 직접 파드를 삭제하고 다시 생성해야 한다.

 

- 이 문제는 레플리카셋을 이용하면 해결된다.

 

 

 

2. 레플리카셋을 이용

 

- yaml 파일 작성 (/home//vagrant/replicaset-nginx.yaml)

apiVersion: apps/v1

kind: ReplicaSet

metadata:

  name: replicaset-nginx

spec:

  replicas: 3

  selector:

    matchLabels:

      app: my-nginx-pod-label

  template:

    metadata:

      name: my-nginx-pod

      labels:

        app: my-nginx-pod-label

    spec:

      containers:

      - name: my-nginx-container

        image: nginx

        ports:

        - containerPort: 80

          protocol: TCP

 

template : 레플리카의 조건에 맞는 파드들을 구동하는 파드들의 명세(spec)

                  metadata에는 파드의 이름과 selector에서 인식할 수 있는 label 정보가,

                  스펙에는 파드 내 컨테이너의 이름과 사용하는 이미지 및 포트의 정보가 기입되어 있다.

selector : 레플리카를 구동하는 파드들의 조건

                여기선 app:~ 이라는 label 을 가진 파드들이 해당된다.

 

 

 

 

- 작성한 yaml 파일을 실행해 레플리카셋 구동

 

  > kubectl apply -f replicaset-nginx.yaml

 

vagrant@controlplane:~$ kubectl apply -f replicaset-nginx.yaml

replicaset.apps/replicaset-nginx created

 

 

 

 

- 생성된 파드의 개수 확인

 

  > kubectl get pad -o wide

 

vagrant@controlplane:~$ kubectl get pod -o wide

NAME                              READY   STATUS    RESTARTS    AGE     IP                        NODE     NOMINATED NODE   READINESS GATES

my-nginx-pod-cli              1/1           Running    0                     23h      172.16.140.72     node02     <none>                      <none>

replicaset-nginx-4hklm    1/1           Running    0                     22s       172.16.196.143   node01     <none>                     <none>

replicaset-nginx-n5wxr    1/1           Running    0                     22s       172.16.140.79     node02     <none>                      <none>

replicaset-nginx-ncszg    1/1           Running     0                    22s       172.16.196.142    node01    <none>                      <none>

 

 

 

- 생성된 레플리카셋 확인

 

  > kubectl get replicaset -o wide

 

vagrant@controlplane:~$ kubectl get replicaset -o wide

NAME                  DESIRED   CURRENT   READY   AGE   CONTAINERS           IMAGES   SELECTOR

replicaset-nginx   3                  3                   3             69s     my-nginx-container    nginx        app=my-nginx-pod-label

 

 

 

 

 

3. 파드의 개수를 늘려서 실행

 

- replicaset-nginx.yaml 파일의 이름을 바꿔 복사

 

  > cp replicaset-nginx.yaml replicaset-nginx-4pods.yaml

 

vagrant@controlplane:~$ cp replicaset-nginx.yaml replicaset-nginx-4pods.yaml

 

=> replicaset-nignx.yaml 파일의 내용이 이름만 바뀌어 복사됨

 

 

 

- VSCode 에서 replicaset-nginx-4pods.yaml 파일을 열어 replicas 속성을 3에서 4로 변경

 

apiVersion: apps/v1

kind: ReplicaSet

metadata: 

  name: replicaset-nginx

spec:

  replicas: 4

  selector:

    matchLabels:

      app: my-nginx-pod-label

  template:

    metadata: 

      name: my-nginx-pod

      labels:

        app: my-nginx-pod-label

    spec:

      containers:

      - name: my-nginx-container

        image: nginx

        ports:

        - containerPort: 80

          protocol: TCP

 

 

 

 

- 변경된 레플리카셋 생성

 

  > kubectl apply -f replicaset-nginx-4pods.yaml

 

vagrant@controlplane:~$ kubectl apply -f replicaset-nginx-4pods.yaml

replicaset.apps/replicaset-nginx configured

 

=> replicaset-nginx-4pods.yaml의 내용은 replicas 속성의 값만 다르고 replicaset-nginx.yaml 의 내용과 동일하다.

     따라서 created가 아닌 configured가 출력됨을 확인할 수 있다.

 

 

 

 

- 변경된 pod의 개수를 확인

 

  > kubectl get pod -o wide

 

vagrant@controlplane:~$ kubectl get pod -o wide

NAME                               READY   STATUS    RESTARTS   AGE       IP                      NODE     NOMINATED NODE   READINESS GATES

my-nginx-pod-cli               1/1           Running      0                  23h       172.16.140.72      node02     <none>                      <none>

replicaset-nginx-4hklm      1/1          Running      0                 4m59s    172.16.196.143   node01     <none>                      <none>

replicaset-nginx-8mwmd   1/1          Running      0                  35s        172.16.140.80     node02     <none>                      <none>

replicaset-nginx-n5wxr      1/1          Running      0                 4m59s    172.16.140.79     node02     <none>                       <none>

replicaset-nginx-ncszg      1/1          Running      0                 4m59s    172.16.196.142   node01     <none>                       <none>

 

=> 8mwmd로 끝나는 파드가 생성되어 파드 개수가 4개 실행 중임을 확인한다.

 

 

 

 

 

 

 

4. scale 명령으로 레플리카셋 yaml 파일의 replicas 속성 수정

 

- scale 명령어를 사용해 replicas의 수를 5로 수정

 

  > kubectl scale replicaset replicaset-nginx --replicas=5

 

vagrant@controlplane:~$ kubectl scale replicaset replicaset-nginx --replicas=5

replicaset.apps/replicaset-nginx scaled

 

 

 

 

- 변경된 파드의 개수 확인

 

  > kubectl get pod -o wide

 

vagrant@controlplane:~$ kubectl get pod -o wide

NAME                           READY   STATUS    RESTARTS   AGE     IP                         NODE     NOMINATED NODE   READINESS GATES

my-nginx-pod-cli                1/1      Running     0                  23h       172.16.140.72     node02         <none>                      <none>

replicaset-nginx-4hklm      1/1      Running     0                 7m4s     172.16.196.143   node01          <none>                      <none>

replicaset-nginx-8mwmd   1/1      Running     0                 2m40s   172.16.140.80     node02          <none>                     <none>

replicaset-nginx-cg66v      1/1      Running     0                  29s       172.16.140.81     node02          <none>                     <none>

replicaset-nginx-n5wxr      1/1      Running     0                  7m4s    172.16.140.79     node02          <none>                     <none>

replicaset-nginx-ncszg      1/1      Running     0                  7m4s    172.16.196.142    node01         <none>                     <none>

 

=> replicas 속성값 5로 변경하여 유지되는 파드의 수가 5개임을 확인

 

 

 

 

 

 

5. edit 명령으로 레플리카셋 yaml 파일의 수정

 

- edit 모드로 진입

 

  > kubectl edit replicaset replicaset-nginx

 

vagrant@controlplane:~$ kubectl edit replicaset replicaset-nginx

:

spec:

  replicas: 6 

  selector:   

    matchLabels:

      app: my-nginx-pod-label

:

 

edit 사용 예시) replicas 속성 수정

방향키를 replicas : 5 앞으로 이동  ->  x (한글자 삭제)  ->  i (편집 모드)  ->  6 입력

->  ESC (명령 모드로 전환)  ->  :wq (콜론 + wq : 저장 후 종료)


replicaset.apps/replicaset-nginx edited


=> edit 모드에서 콜론+wq 입력 후 엔터 시 정상적으로 수정이 완료되면 edited가 출력됨을 확인해야 한다.

 

 

 

 

 

- replicas 속성 수정에 따른 파드 개수 변경 확인

 

  > kubectl get pod -o wide

 

vagrant@controlplane:~$ kubectl get pod -o wide

NAME                              READY   STATUS    RESTARTS   AGE     IP                         NODE     NOMINATED NODE   READINESS GATES

my-nginx-pod-cli                1/1        Running      0                  23h       172.16.140.72      node02       <none>                      <none>

replicaset-nginx-4hklm      1/1        Running      0                  11m       172.16.196.143    node01       <none>                     <none>

replicaset-nginx-8mwmd   1/1        Running      0                  6m58s   172.16.140.80      node02       <none>                     <none>

replicaset-nginx-cg66v      1/1        Running      0                  4m47s   172.16.140.81      node02       <none>                     <none>

replicaset-nginx-k9bqj       1/1        Running      0                   25s       172.16.196.144    node01       <none>                     <none>

replicaset-nginx-n5wxr      1/1        Running      0                   11m      172.16.140.79      node02       <none>                     <none>

replicaset-nginx-ncszg       1/1       Running      0                   11m      172.16.196.142     node01      <none>                     <none>

 

 

 

 

6. 레플리카셋 삭제 => 레플리카셋에 의해 생성된 파드도 함께 삭제된다.

 

- 레플리카셋 삭제

 

  > kubectl delete -f replicaset-nginx-4pods.yaml

 

vagrant@controlplane:~$ kubectl delete -f replicaset-nginx-4pods.yaml

replicaset.apps "replicaset-nginx" deleted

 

 

 

 

- 레플리카셋, 파드 동시 확인

 

  > kubectl get rs,pod

 

vagrant@controlplane:~$ kubectl get rs,pod

NAME                            READY   STATUS    RESTARTS   AGE   

pod/my-nginx-pod-cli     1/1           Running     0                   23h

 

=> 레플리카셋이 삭제되고, (추가로 생성한 파드를 포함한) 모든 파드가 삭제된다.

      selector에 명시되어 있는 라벨을 기준으로 삭제되기 때문이다.

 

 

 

 

 

7. 파드를 유지한 상태에서 레플리카셋을 삭제

 

- 레플리카셋 구동, 레플리카셋 및 파드 생성을 확인

 

  > kubectl apply -f replicaset-nginx-4pods.yaml

 

vagrant@controlplane:~$ kubectl apply -f replicaset-nginx-4pods.yaml

replicaset.apps/replicaset-nginx created

 

 

  > kubectl get rs,pod

 

vagrant@controlplane:~$ kubectl get rs,pod

NAME                                           DESIRED   CURRENT   READY   AGE

replicaset.apps/replicaset-nginx   4                  4                   4              18s

 

NAME                                       READY   STATUS    RESTARTS   AGE

pod/my-nginx-pod-cli                1/1          Running      0                  23h

pod/replicaset-nginx-472ql       1/1          Running      0                  18s

pod/replicaset-nginx-5nk88      1/1          Running       0                 18s

pod/replicaset-nginx-ttvw5        1/1         Running       0                 18s

pod/replicaset-nginx-w72mf      1/1         Running      0                  18s

 

 

 

 

- 레플리카셋을 삭제할 때 파드를 남기는 옵션을 추가하여 명령어 입력

 

  > kubectl delete -f replicaset-nginx-4pods.yaml --cascade=orphan

 

vagrant@controlplane:~$ kubectl delete -f replicaset-nginx-4pods.yaml --cascade=orphan

replicaset.apps "replicaset-nginx" deleted

 

 

 

 

- 남아있는 파드의 개수 확인

 

  > kubectl get rs,pod

 

NAME                                       READY   STATUS    RESTARTS   AGE

pod/my-nginx-pod-cli                1/1          Running      0                  23h

pod/replicaset-nginx-472ql       1/1          Running      0                  18s

pod/replicaset-nginx-5nk88      1/1          Running       0                 18s

pod/replicaset-nginx-ttvw5        1/1         Running       0                 18s

pod/replicaset-nginx-w72mf      1/1         Running      0                  18s

 

=> 레플리카셋은 사라지고 파드는 남아 있는 것을 확인할 수 있다.

 

 

 

 

- 파드 모두 삭제

 

  > kubectl delete pod --all                 => --all 옵션을 사용하면 해당하는 모든 내용을 삭제할 수 있다.

 

 

 

 

* 레플리카셋의 동작

: label selector 를 이용해서 파드를 유지

 

  1) app : my-nginx-pod-label 라벨을 가지는 파드를 생성함

  2) replicaset-nginx-4pods.yaml : 작성된 파일의 내용에 따라 레플리카셋을 생성함

  3-1) 레플리카셋을 이용해 생성한 파드의 개수를 확인하고 1)에서 생성한 파드를 삭제

    -2) scale 명령어를 사용한 replicas 값 변경에 맞춰 파드가 추가 생성되는 것을 확인한다.

  4-1) kubectl edit 명령으로 파드 중 하나의 라벨을 삭제하거나 replicas 속성의 값 변경

    -2) 변경된 값에 맞춰 파드가 추가 생성되는 것을 확인

  5) replicaset-nginx-4pods.yaml 파일을 이용해서 레플리카셋을 삭제하고 삭제된 것을 확인

 

 

 

 

 

 

 

 

디플로이먼트 (deployment)

: 파드, 레플리카셋의 배포를 관리하는 것이 목적이다. 앱의 배포와 업데이트를 편리하게 하기 위해 사용

  쿠버네티스에서 상태가 없는(stateless) 앱을 배포할 때 사용하는 가장 기본적인 컨트롤러이다.

  디플로이먼트는 스케일, 롤아웃/롤백, 자동복구 기능이 있다.

                            |            |                    | 노드 수준에서 장애가 발생했을 때 파드를 복구하는 기능

                            |            | 서비스를 유지하면서 파드를 교체 

                            | 파드의 개수를 변경하는 명령어

 

 

 

구동하는 방법

 

 

1. 디플로이먼트 생성

 

- /home/vagrant/에 deployment-nginx.yaml 파일을 생성하고 코드를 작성한다.

 

apiVersion: apps/v1

kind: Deployment

metadata:

  name: my-nginx-deployment

spec:

  replicas: 3

  selector:

    matchLabels:

      app: my-nginx

  template:

    metadata:

      name: my-nginx-pod

      labels:

        app: my-nginx

    spec:

      containers:

      - name: nginx

        image: nginx

        ports:

        - containerPort: 80

 

 

 

 

- 디플로이먼트를 생성한다.

 

  > kubectl apply -f deployment-nginx.yaml

 

vagrant@controlplane:~$ kubectl apply -f deployment-nginx.yaml

deployment.apps/my-nginx-deployment created

 

 

 

 

 

2. 디플로이먼트, 레플리카셋, 파드 생성 확인

 

  > kubectl get deployment,replicaset,pod

 

vagrant@controlplane:~$ kubectl get deployment,replicaset,pod

NAME                                                        READY   UP-TO-DATE   AVAILABLE   AGE

deployment.apps/my-nginx-deployment    3/3           3                        3                   87s

                                                                   |               |                     |                     | 파드가 실행되고 있는 지속 시간

                                                                   |               |                     | 서비스 가능한 파드의 개수

                                                                   |               | 최신 상태로 업데이트된 파드의 개수

                                                                   | 파드 개수

                                                                    

NAME                                                                       DESIRED   CURRENT   READY   AGE

replicaset.apps/my-nginx-deployment-c5ddf7856    3                  3                  3             87s

 

NAME                                                                READY   STATUS    RESTARTS   AGE

pod/my-nginx-deployment-c5ddf7856-9vkwp   1/1           Running      0                  87s

pod/my-nginx-deployment-c5ddf7856-ggg9n   1/1           Running      0                   87s

pod/my-nginx-deployment-c5ddf7856-wwsvk   1/1          Running      0                   87s

pod/my-nginx-pod-cli                                         1/1          Running      0                   24h

pod/replicaset-nginx-472ql                                1/1          Running      0                    37m

pod/replicaset-nginx-5nk88                               1/1          Running      0                    37m

pod/replicaset-nginx-ttvw5                                 1/1          Running      0                   37m

pod/replicaset-nginx-w72mf                               1/1         Running       0                   37m

 

 

 

 

 

 

3. 디플로이먼트 삭제

: yaml 또는 이름을 이용해서 삭제가 가능하며, 삭제 시 replicaset과 pod가 함께 삭제된다.

 

- yaml 또는 이름으로 이용해서 삭제 

 

  > kubectl delete deployment my-nginx-deployment 또는

     kubectl delete -f deployment-nginx.yaml

 

vagrant@controlplane:~$ kubectl delete deployment my-nginx-deployment

deployment.apps "my-nginx-deployment" deleted

 

 

 

 

- 삭제 확인 (replicaset과 pod도 모두 삭제됨을 확인)

 

  > kubectl get rs,pod

 

 

 

 

 

디플로이먼트를 사용하는 이유 1) Scale

: replicas 값을 변경해서 파드 개수 조절

 

 

 

1. relicas 값을 3으로 설정한 디플로이먼트 yaml 파일 생성

 

- /home/vagrant/ 에 web-deploy-replicas-3.yaml 파일 생성 및 코드 작성

 

 

 

 

- 디플로이먼트 구동

 

  > 

 

 

 

- 디플로이먼트 생성 확인

 

  > 

 

 

 

 

 

 

2. replicas 속성값을 5로 수정

 

- 디플로이먼트 파일 복사 후 replicas 속성을 5로 변경

 

  > 

 

 

 

 

 

- replicas 값이 변경된 yaml 파일을 apply

 

  > 

 

 

 

- 디플로이먼트, 레플리카셋, 파드 확인

 

  > 

 

 

 

 

3. kubectl scale 명령어로 replicas의 값을 변경

 

- replicas 의 속성값을 10으로 변경하는 scale 명령어 입력

 

  >

 

 

 

 

- 디플로이먼트, 레플리카셋, 파드 확인

 

  > 

 

 

 

 

4. 디플로이먼트 삭제

 

  > 

 

 

 

 

- 삭제 확인

 

  > 

 

 

 

 

 

 

디플로이먼트를 사용하는 이유 2) 롤아웃/롤백

 

1. --record 옵션을 추가해 디플로이먼트를 생성

 

  > kubectl apply -f deployment-nginx.yaml --record

 

 

 

=> --record는 앞으로 삭제될 것이기 때문에 안써도 된다.

 

 

 

 

 

- 디플로이먼트 생성을 확인

 

  > kubectl get all

 

 

 

 

2. kubectl set image 명령으로 파드의 컨테이너 이미지를 변경

 

  > 

 

 

- 이미지 변경을 확인 = 기존의 파드가 중지되고 이미지를 업데이트한 파드를 새로 생성한다.

 

  > kubectl get all

 

 

 

 

 

3. 기록된 리비전 정보를 확인하고 롤백

 

  > kubectl rollout history deployment my-nginx-deployment

 

 

 

 

- 리비전 1번으로 롤백

 

  >

 

 

 

- 롤백되는 과정 확인

 

  > kubectl get deploy,pd

 

 

 

- 기록된 리비전 정보 재확인

 

  > 

 

 

 

=> 기존 리비전 1번이 롤백되면서 리비전 3번으로 넘어간 것을 확인

 

 

 

 

4. 디플로이먼트 상세 정보 출력

 

  > 

 

 

 

 

 

 

 

5. 스케일 변경 및 롤백

 

- 스케일 변경

 

  > 

 

 

=> 레플리카셋을 유지하고 scale만 변경되어 pod 개수만 추가 되었다.

 

 

 

 

- 다른 실습을 위해 모든 리소스 삭제

 

  > 

 

 

 

 

 

 

디플로이먼트를 사용하는 이유 3) 자동 복구

 

1. 30초 단위로 재기동하는 파드를 정의

 

- /home/vagrant/ 에 restart-pod.yaml 을 작성

 

 

 

 

 

2. 같은 사양의 파드를 4개 가동하는 디플로이먼트를 정의

 

- /home/vagrant 에 restart-deployment.yaml 을 작성

 

 

 

 

3. 파드와 디플로이먼트를 배포(구동)

 

- 파드 배포

 

  > 

 

 

 

- 디플로이먼트 배포

 

  > 

 

 

 

 

4. 노드와 파드의 동작을 확인

 

  > 

 

 

 

 

5. 단독으로 실행된 test1 파드가 배포된 노드를 정지

    => 클러스터를 구성하고 있는 노드를 중지 => 노드에 장애를 유발

 

- 다른 터미널에서 진행, 가상머신의 실행 상태 확인

 

  > 

 

 

 

- test1 이 실행되고 있는 노드를 중지

 

 

 

 

6. 원래 터미널에서 노드와 파드 동작 확인

 

  > 

 

 

 

- 노드와 연결된 파드의 상태 확인

 

  > 

 

 

 

 

 

* 노드가 종료되고 약 6분 정도 경과하면 디플로이먼트로 배포한 test2

  활성화 노드에 대체 파드를 생성하여 자동으로 복구하는 반면,

  단독으로 기동한 test1 파드는 원래 노드에 위치하는 것을 확인할 수 있다.

 

 

 

 

7. 노드 재기동 후 노드와 파드 확인

 

- 종료한 node01 재기동

 

  > 

 

 

 

- 노드와 파드 확인

 

  > 

 

 

 

 

 

 

8. 모든 리소스 삭제

 

  > 

 

 

- 삭제 확인

 

  >

 

 

 

 

 

데몬셋 (DaemonSet)

: 각 노드에 파드를 하나씩 배치하는 리소스.

  모든 노드에 대하여 클러스터 스토리지 / 로그 수집 / 노드 모니터링 용도로 사용한다.

 

 

 

1. 데몬셋 정의

 

- /home/vagrant/ 에 sample-daemonset.yaml 을 생성한다.

 

 

 

 

 

=> 데몬을 만들어 줄 것이기 때문에 replicas 항목을 작성할 필요가 없다.

 

 

 

 

2. node01을 중지

 

  > vagrant halt node01

 

- node01이 중지되었는지 확인

 

  > vagrant status

 

 

  > controlplane:~$ kubectl get node

 

 

 

 

 

3. 데몬셋 생성

 

  >

 

 

 

- 데몬셋 확인

 

  > 

 

 

 

 

- 할당된 노드를 확인하기 위해서는 파드 정보를 불러온다.

 

  > 

 

 

 

 

 

4. node01 기동 및 확인

 

- node01 기동

 

  > 

 

 

 

- node 상태 확인

 

  > 

 

 

  > 

 

 

 

 

 

5. 데몬셋 확인

 

  > 

 

 

 

 

 

6. 데몬셋 삭제

 

  > 

 

 

- 데몬셋 삭제 확인

 

  > 

 

 

 

 

 

서비스 (Service)

: 파드를 연결하고 외부에 노출하는 역할

 

 

- 서비스 타입

ClusterIP  
NodePort  
LoadBalancer  
ExternalName  

 

 

 

* 서비스를 생성하는 방법

매니페스트(yaml)을 이용해서 생성

kubectl expose 명령을 사용해서 생성

 

 

 

- ClusterIP 타입의 서비스

 

 

1. 디플로이먼트 생성

 

  - /home/vagrant/ 에 hostname-deployment.yaml 생성

 

 

 

 

 

 

 

 

 

2. 서비스 생성

 

- /home/vagrant/ 에 hostname-service-clusterip.yaml 생성

 

 

 

 

 

 

 

 

 

 

NodePort 타입의 서비스

: 모든 노드의 특정 포트를 개방해 서비스에 접근하는 방식

  노드의 IP 주소에 공개 포트를 오픈 => 클러스터 외부에서 내부의 파드로 요청을 전달하는 것이 가능하다.

                              30,000 ~ 32,767 범위

  그러나 외부에서 접근하려면 IP 주소를 일일히 공개해야 하기 때문에 잘 사용하지 않는 방식

 

 

 

1. 서비스 정의

 

- /home/vagrant/ 에 hostname-service-nodeport.yaml 파일 생성

 

 

 

 

 

2. 디플로이먼트와 서비스 생성

 

- 디플로이먼트 생성

 

  > 

 

 

 

- 서비스 생성

 

  > 

 

 

 

- 확인

 

  > 

 

 

 

 

 

3. 클러스터 내부에서는 모든 노드의 INTERNAL-IP 또는 EXTERNAL-IP와 노드 공개 포트로 접근이 가능하다.

 

- 노드 확인

 

  > 

 

 

 

- controlplane 노드에서 controlplane 노드의 공개 포트로 요청을 전달 가능

 

  > 

 

 

- controlplane 노드에서 node01 노드의 공개 포트로 요청을 전달 가능

 

  > 

 

 

- controlplane 노드에서 node02 노드의 공개 포트로 요청을 전달 가능

 

  > 

 

 

- controlplane 노드에서 서비스 이름으로는 접근이 불가능하다.

 

 

 

 

 

4. 클러스터 내에서 CLUSTER-IP와 ClusterIP 서비스 포트를 이용한 접근 가능

 

- 서비스 확인

 

  > 

 

 

 

- CLUSTER-IP 와 ClusterIP 서비스 포트를 사용하여 접근

 

  > 

 

 

 

 

 

 

 

 

5. 클러스터 외부(호스트 PC)에서 웹 브라우저로 접근

 

- 웹 브라우저 주소창에 "http://{node의 포트}:{할당된 공개 포트}"를 입력하여 접근

 

  > http://10.0.0.10:***** (controlplane의 포트)

 

  > http://

 

 

 

 

6. 리소스 정리

 

- 디플로이먼트 삭제

 

  > 

 

 

- 서비스 삭제 후 확인

 

  > 

 

 

  > 

 

 

 

 


참고. 업데이트 전락

 

참고. 데몬셋 업데이트 전략