쟝이의 세상
Kubernetes(yaml 파일 수정, service) 본문
📌 replicaSet 수정
✔️ yaml 파일을 통한 rc 생성
[root@k8smaster 03]# cd ~/lab/04
[root@k8smaster 04]# ls
batch-job guestbook-replicaset-matchexpressions.yaml ssd-monitor
batch-job.yaml guestbook-replicaset.yaml ssd-monitor-daemonset.yaml
cronjob.yaml multi-completion-batch-job.yaml
guestbook-rc.yaml multi-completion-parallel-batch-job.yaml
[root@k8smaster 04]# kubectl create -f guestbook-rc.yaml
replicationcontroller/guestbook created
[root@k8smaster 04]# kubectl get rc
NAME DESIRED CURRENT READY AGE
guestbook 3 3 3 10s
[root@k8smaster 04]# k get pods
NAME READY STATUS RESTARTS AGE
guestbook-2qd45 1/1 Running 0 22s
guestbook-79qj5 1/1 Running 0 22s
guestbook-cc2sm 1/1 Running 0 22s
✔️ yaml파일 수정
# replicaset을 5로 변경
[root@k8smaster 04]# vi guestbook-rc.yaml
# 변경된 내용 업데이트 (없으면 생성)
[root@k8smaster 04]# k apply -f guestbook-rc.yaml
replicationcontroller/guestbook configured
[root@k8smaster 04]# k get pods
NAME READY STATUS RESTARTS AGE
guestbook-2qd45 1/1 Running 0 2m54s
guestbook-6knxb 1/1 Running 0 7s
guestbook-79qj5 1/1 Running 0 2m54s
guestbook-cc2sm 1/1 Running 0 2m54s
guestbook-hldzw 1/1 Running 0 7s
파일 내용에서 replicaset을 5로 변경한 후 변경된 yaml파일 업데이트 실행
👇🏻 결과 출력
더보기
[root@k8smaster 04]# k get pods
NAME READY STATUS RESTARTS AGE
guestbook-2qd45 1/1 Running 0 2m54s
guestbook-6knxb 1/1 Running 0 7s
guestbook-79qj5 1/1 Running 0 2m54s
guestbook-cc2sm 1/1 Running 0 2m54s
guestbook-hldzw 1/1 Running 0 7s
✔️ yaml 파일을 통한 rs 생성
[root@k8smaster 04]# k create -f guestbook-replicaset.yaml
replicaset.apps/guestbook created
[root@k8smaster 04]# k get rs
NAME DESIRED CURRENT READY AGE
guestbook 3 3 3 9s
👇🏻 rs를 통해 생성된 pod 확인
더보기
[root@k8smaster 04]# k get pods
NAME READY STATUS RESTARTS AGE
guestbook-5tfkn 1/1 Running 0 12s
guestbook-bdnrm 1/1 Running 0 12s
guestbook-ktd2w 1/1 Running 0 12s
pod 삭제 시의 결과
[root@k8smaster 04]# k delete pod --all
pod "guestbook-5tfkn" deleted
pod "guestbook-bdnrm" deleted
pod "guestbook-ktd2w" deleted
[root@k8smaster 04]# k get pods
NAME READY STATUS RESTARTS AGE
guestbook-g9mxr 1/1 Running 0 4s
guestbook-jc4cw 1/1 Running 0 4s
guestbook-m4257 1/1 Running 0 4s
pod가 다시 생성되는 것을 확인할 수 있다.
✔️ yaml 파일 수정
[root@k8smaster 04]# k get pods
NAME READY STATUS RESTARTS AGE
guestbook-g9mxr 1/1 Running 0 4s
guestbook-jc4cw 1/1 Running 0 4s
guestbook-m4257 1/1 Running 0 4s
[root@k8smaster 04]# vi guestbook-replicaset.yaml
[root@k8smaster 04]# k apply -f guestbook-replicaset.yaml
Warning: resource replicasets/guestbook is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
replicaset.apps/guestbook configured
파일 내용에서 replicaset을 5로 변경한 후 변경된 yaml파일 업데이트 실행
👇🏻 결과 출력
더보기
[root@k8smaster 04]# k get pods
NAME READY STATUS RESTARTS AGE
guestbook-2z6lc 1/1 Running 0 5s
guestbook-cfd2h 1/1 Running 0 5s
guestbook-g9mxr 1/1 Running 0 96s
guestbook-jc4cw 1/1 Running 0 96s
guestbook-m4257 1/1 Running 0 96s
[root@k8smaster 04]# k describe pods guestbook-2z6lc
replicas가 5로 설정되어 있는 것을 확인할 수 있다.
kubectl create : 없는 객체를 생성하는 명령어
kubectl apply : 없으면 객체를 생성하고, 있으면 업데이트를 실행해주는 명령어
📌 Service
💡 Service
: pod들을 통해 실행되고 있는 애플리케이션을 네트워크에 노출시키는 가상의 컴포넌트
💡 Service의 유형
1) ClusterIP (기본형태)
: 클러스터 내부에서만 접근 가능
2) NodePort
: 외부에서 노드IP의 특정포트로 들어오는 요청을 감지하여, 해당 포트와 연결된 파드로 트래픽을 전달하는 유형의 서비스
3) LoadBalancer
: NodePort와 ClusterIP 자동 생성
4) ExternalName
: 서비스에 selector 대신 DNS name을 직접 명시하고자 할 때 쓰임
✔️ pod를 생성한 뒤 service 생성
- 만들어진 pod는 그냥 두고, service를 생성
[root@k8smaster 05]# k create -f guestbook-svc.yaml
service/guestbook created
👇🏻 결과 출력
더보기
[root@k8smaster 05]# k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
guestbook ClusterIP 10.111.54.14 <none> 80/TCP 4s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 42m
- 생성되었던 pod 내용 확인
[root@k8smaster 05]# k exec guestbook-h74s2 -- curl -s http://10.111.54.14:80
##<p class="memo">
##HealthCheck : This is v1 running in pod guestbook-h74s2 (10.102.249.19)
...(생략)
생성된 service에 대한 정보는 기존의 pod 환경변수에 자동으로 포함되지 않는다.
✔️ service를 생성한 뒤 pod생성
- 기존에 만들어져 있는 pod를 모두 삭제
[root@k8smaster 05]# k delete pod --all
pod "guestbook-h74s2" deleted
pod "guestbook-p922g" deleted
pod "guestbook-vl2jb" deleted
[root@k8smaster 05]# k get pods
NAME READY STATUS RESTARTS AGE
guestbook-2spjh 1/1 Running 0 6s
guestbook-krnpp 1/1 Running 0 6s
guestbook-pzppv 1/1 Running 0 6s
기존에 만들어져 있는 pod는 replicaset에 의해 재생성되는 것을 알 수 있다.
위에서 service를 만든 상태에서 pod를 지우고 replicaset에 의해 pod가 다시 생성되는 것.
-> 결과적인 순서: service 생성 후 pod 생성
- 나중에 생성된 pod의 내용 확인
[root@k8smaster 05]# k exec guestbook-2spjh -- env | sort
APP_HOME=/app
GUESTBOOK_PORT_80_TCP_ADDR=10.111.54.14
GUESTBOOK_PORT_80_TCP_PORT=80
GUESTBOOK_PORT_80_TCP_PROTO=tcp
GUESTBOOK_PORT_80_TCP=tcp://10.111.54.14:80
GUESTBOOK_PORT=tcp://10.111.54.14:80
GUESTBOOK_SERVICE_HOST=10.111.54.14
GUESTBOOK_SERVICE_PORT=80
HOME=/root
HOSTNAME=guestbook-2spjh
JAVA_HOME=/usr/local/openjdk-8
JAVA_VERSION=8u342
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
LANG=C.UTF-8
PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
pod의 환경변수에 service에 대한 정보가 자동으로 포함되는 것을 확인할 수 있다.
'수업내용' 카테고리의 다른 글
AWS에서 웹 애플리케이션 배포하기 위한 프로세스 (0) | 2024.10.16 |
---|---|
Kubernetes(Ingress) (0) | 2024.10.04 |
Kubernetes 실습 (0) | 2024.09.27 |
Kubernetes(label, namespace) (0) | 2024.09.27 |
Kubernetes(POD, Deployment, ReplicaSet, Service 생성) (1) | 2024.09.27 |