[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
[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
[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가 다시 생성되는 것.