쟝이의 세상
Kubernetes 실습 본문
미션 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>
첨부파일 : <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 |