Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

쟝이의 세상

Kubernetes 실습 본문

수업내용

Kubernetes 실습

zyangee 2024. 9. 27. 17:59
미션 1.
p.32의 deployment를 통한 배포 -> 파드들의 정보 확인 -> rs 정보 확인 -> deployment 상세정보 확인

delete: (세션 창 하나 더 열고) watch 명령으로 pod 변화 감시
1) pod 삭제 시도 -> 세션 창 정보 확인
2) rs 삭제 시도 -> 세션 창 정보 확인
3) deployment 삭제 시도 -> 세션 창에서 정보 확인
[root@k8smaster ~]# docker images
REPOSITORY              TAG      IMAGE ID        CREATED         PLATFORM       SIZE         BLOB SIZE
ubuntu                  24.04    dfc10878be8d    2 days ago      linux/amd64    81.0 MiB     28.4 MiB
yu3papa/mysql_hangul    2.0      887eb3c63fd4    9 months ago    linux/amd64    359.1 MiB    116.9 MiB
zyange/k8s_guestbook    1.0      2851c231a65e    2 days ago      linux/amd64    554.4 MiB    246.5 MiB

[root@k8smaster ~]# kubectl create deployment guestbook --image=zyange/k8s_guestbook:1.0 --port=8080
deployment.apps/guestbook created

[root@k8smaster ~]# kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
guestbook-d6bd9c98-ph6b7   1/1     Running   0          7s

[root@k8smaster ~]# kubectl expose deployment guestbook --type=LoadBalancer --name guestbook-http
service/guestbook-http exposed

[root@k8smaster ~]# kubectl get services
NAME             TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
guestbook-http   LoadBalancer   10.105.62.166   <pending>     8080:32326/TCP   8s
kubernetes       ClusterIP      10.96.0.1       <none>        443/TCP          276d

[root@k8smaster ~]# kubectl scale deployment guestbook --replicas=3
deployment.apps/guestbook scaled

[root@k8smaster ~]# kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
guestbook-d6bd9c98-nt7nd   1/1     Running   0          5s
guestbook-d6bd9c98-p594n   1/1     Running   0          5s
guestbook-d6bd9c98-ph6b7   1/1     Running   0          69s

[root@k8smaster ~]# kubectl get replicaset
NAME                 DESIRED   CURRENT   READY   AGE
guestbook-d6bd9c98   3         3         3       2m2s

[root@k8smaster ~]# kubectl describe deployment
Name:                   guestbook
Namespace:              default
CreationTimestamp:      Fri, 27 Sep 2024 12:18:54 +0900
Labels:                 app=guestbook
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=guestbook
Replicas:               3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=guestbook
  Containers:
   k8s-guestbook-slzgr:
    Image:        zyange/k8s_guestbook:1.0
    Port:         8080/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Progressing    True    NewReplicaSetAvailable
  Available      True    MinimumReplicasAvailable
OldReplicaSets:  <none>
NewReplicaSet:   guestbook-d6bd9c98 (3/3 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  2m58s  deployment-controller  Scaled up replica set guestbook-d6bd9c98 to 1
  Normal  ScalingReplicaSet  114s   deployment-controller  Scaled up replica set guestbook-d6bd9c98 to 3 from 1
  
[root@k8smaster ~]# cd ~/workspace/guestbook/src/main/resources/templates/
[root@k8smaster templates]# ls
error.html  index.html
[root@k8smaster templates]# sed -i 's/방명록 v1/방명록 v1(이지향)/g' index.html

👇🏻 실행화면

✔️ pod 삭제 시도

[root@k8smaster 03]# kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
guestbook-d6bd9c98-nt7nd   1/1     Running   0          19m
guestbook-d6bd9c98-p594n   1/1     Running   0          19m
guestbook-d6bd9c98-ph6b7   1/1     Running   0          20m
[root@k8smaster 03]# kubectl delete pod guestbook-d6bd9c98-nt7nd
pod "guestbook-d6bd9c98-nt7nd" deleted

👇🏻 세션창 실행화면

더보기
Every 1.0s: kubectl get pods                                                 k8smaster: Fri Sep 27 12:44:22 2024

NAME                       READY   STATUS    RESTARTS   AGE
guestbook-d6bd9c98-kmh26   1/1     Running   0          44s
guestbook-d6bd9c98-p594n   1/1     Running   0          24m
guestbook-d6bd9c98-ph6b7   1/1     Running   0          25m

✔️ rs 삭제 시도

[root@k8smaster 03]# kubectl get rs
NAME                 DESIRED   CURRENT   READY   AGE
guestbook-d6bd9c98   3         3         3       28m
[root@k8smaster 03]# kubectl delete rs guestbook-d6bd9c98
replicaset.apps "guestbook-d6bd9c98" deleted

👇🏻 세션창 실행화면

더보기
Every 1.0s: kubectl get pods                                                 k8smaster: Fri Sep 27 12:48:19 2024

NAME                       READY   STATUS    RESTARTS   AGE
guestbook-d6bd9c98-bgxm5   1/1     Running   0          39s
guestbook-d6bd9c98-h2fg6   1/1     Running   0          39s
guestbook-d6bd9c98-jpvx5   1/1     Running   0          39s

"설명"

replicaset 삭제 시도해도 파드가 삭제되었다가 다시 생길 뿐 replicaset이 삭제되지 않음

deployment로 생성했기 때문

✔️ deployment 삭제 시도

[root@k8smaster 03]# kubectl delete deployment guestbook
deployment.apps "guestbook" deleted

👇🏻 세션창 실행화면

더보기
Every 1.0s: kubectl get pods                                                 k8smaster: Fri Sep 27 12:49:40 2024

NAME               READY   STATUS    RESTARTS   AGE

"설명"

pod가 모두 삭제됨을 실시간으로 확인

 

미션2.
수동으로 파드 생성 -> localhost의 포트포워딩 -> (다른 세션 창에서)local:8888 접속 -> 수동으로 만들어진 pod로 포트포워딩 되었는지 확인
[root@k8smaster ~]# cd ~/lab/03
[root@k8smaster 03]# ls
custom-namespace.yaml                        guestbook-liveness-probe.yaml           guestbook-manual.yaml
guestbook-gpu.yaml                           guestbook-manual-custom-namespace.yaml
guestbook-liveness-probe-initial-delay.yaml  guestbook-manual-with-labels.yaml
[root@k8smaster 03]# kubectl create -f guestbook-manual.yaml
pod/guestbook-manual created
#yaml 파일을 이용해서 guestbook-manual 이름으로 pod 생성

[root@k8smaster 03]# kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
guestbook-manual           1/1     Running   0          10s
[root@k8smaster 03]# kubectl port-forward guestbook-manual 8888:8080
Forwarding from 127.0.0.1:8888 -> 8080
Forwarding from [::1]:8888 -> 8080

#다른 세션 창에서
[root@k8smaster ~]# curl localhost:8888
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="/common.css" rel="stylesheet">
<link href="/guestbook.css" rel="stylesheet">

<title>방명록 (K8S)</title>
</head>
<body>
        <div class="guestbook list displaynone" style="display: block;">
                <ul class="cont">
                        <li>
                                <p class="memo">
HealthCheck : This is v1 running in pod guestbook-manual (10.102.249.30)
                                </p>
                        </li>
                </ul>
        </div>

        <h4 class="g-top">방명록 v1(정환열)</h4>
        <div class="top-img">
                <img src="/bg-guestbook.jpg">
        </div>
        <form action="/" method="post" id="frm" enctype="multipart/form-data">
                <div class="g-cont">
                        <ul>
                                <li class="name"><input name="name" type="text" maxlength="20" placeholder="이름" class="form-control"></li>
                                <li class="msg"><textarea name="content" maxlength="200" placeholder="내용을 입력해주세요" class="form-control" rows="3"></textarea></li>
                                <li>파일첨부<input type="file" name="uploadingFile"></li>
                        </ul>
                        <p class="btn btn-lg" onclick="document.getElementById('frm').submit();">방명록 남기기</p>
                </div>
        </form>

        <div class="guestbook list displaynone" style="display: block;">
                <ul class="cont">
                        <li>
                                <p class="name">테스트</p>
                                <p class="date">2024-09-25 03:43:39</p>
                                <p class="memo">테스트입니다.</p>
                                첨부파일&nbsp;:&nbsp;<a href="/downloadFile/null"></a>
                        </li>
                </ul>
        </div>
</body>

 

 

미션3.
추가로 deployment한 pod에 서비스 생성(guestbook-http2)-LoadBalancer 타입으로
- 서비스 목록 확인
- 방금 생성된 서비스의 상세정보 확인
[root@k8smaster 03]# kubectl create deployment guestbook --image=zyange/k8s_guestbook --port=8080
deployment.apps/guestbook created

[root@k8smaster 03]# kubectl get pods
NAME                         READY   STATUS         RESTARTS   AGE
guestbook-5567f68f68-j6bv6   0/1     ErrImagePull   0          8s
guestbook-manual             1/1     Running        0          27m

[root@k8smaster 03]# kubectl get deployment
NAME        READY   UP-TO-DATE   AVAILABLE   AGE
guestbook   0/1     1            0           16s

[root@k8smaster 03]# kubectl expose deployment guestbook --type=LoadBalancer --name guestbook-http2
service/guestbook-http2 exposed

[root@k8smaster 03]# kubectl get services
NAME              TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
guestbook-http    LoadBalancer   10.105.62.166    <pending>     8080:32326/TCP   48m
guestbook-http2   LoadBalancer   10.102.198.228   <pending>     8080:30218/TCP   7s
kubernetes        ClusterIP      10.96.0.1        <none>        443/TCP          276d

[root@k8smaster 03]# kubectl describe service guestbook-http2
Name:                     guestbook-http2
Namespace:                default
Labels:                   app=guestbook
Annotations:              <none>
Selector:                 app=guestbook
Type:                     LoadBalancer
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.102.198.228
IPs:                      10.102.198.228
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  30218/TCP
Endpoints:
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

'수업내용' 카테고리의 다른 글

Kubernetes(Ingress)  (0) 2024.10.04
Kubernetes(yaml 파일 수정, service)  (0) 2024.09.30
Kubernetes(label, namespace)  (0) 2024.09.27
Kubernetes(POD, Deployment, ReplicaSet, Service 생성)  (1) 2024.09.27
쿠버네티스 개념 정리  (1) 2024.09.25