Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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 31
Archives
Today
Total
관리 메뉴

쟝이의 세상

Kubernetes(yaml 파일 수정, service) 본문

수업내용

Kubernetes(yaml 파일 수정, service)

zyangee 2024. 9. 30. 14:39

📌 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에 대한 정보가 자동으로 포함되는 것을 확인할 수 있다.