Exercise 7.1: Working with ReplicaSets

  1. CP 노드에 연결된 터미널로 이동

  2. ReplicaSet 생성

    cat <<EOF | kubectl create -f -
    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:
      name: rs-one
      labels:
        system: ReplicaOne
    spec:
      replicas: 2
      selector:
        matchLabels:
          system: ReplicaOne
      template:
        metadata:
          labels:
            system: ReplicaOne
        spec:
          containers:
          - name: nginx
            image: nginx:1.15.1
            ports:
            - containerPort: 80
    EOF
  3. 생성된 ReplicaSet 상태 확인

    kubectl describe rs rs-one
  4. 생성된 Pod 확인

    kubectl get pod -l system=ReplicaOne
  5. 생성된 Pod에 명시된 ownerReferences 확인

    kubectl get pod -l system=ReplicaOne \
    -o=jsonpath='{.items[*].metadata.ownerReferences}' | jq
  6. ReplicaSet이 생성한 Pod는 유지하면서 ReplicaSet 삭제

    kubectl delete rs rs-one --cascade=orphan
  7. ReplicaSet 및 Pod 확인

    kubectl get rs,pod -l system=ReplicaOne
  8. 생성된 Pod에 명시된 ownerReferences 확인

    kubectl get pod -l system=ReplicaOne \
    -o=jsonpath='{.items[*].metadata.ownerReferences}' | jq
  9. 새로운 Pod를 생성하고 Label (system: ReplicaOne) 부여

    kubectl run nginx --image=nginx -l system=ReplicaOne
  10. 생성된 Pod 및 각 Pod에 부여된 Label 확인

    kubectl get pod --show-labels 
  11. ReplicaSet 재생성

    cat <<EOF | kubectl create -f -
    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:
      name: rs-one
      labels:
        system: ReplicaOne
    spec:
      replicas: 2
      selector:
        matchLabels:
          system: ReplicaOne
      template:
        metadata:
          labels:
            system: ReplicaOne
        spec:
          containers:
          - name: nginx
            image: nginx:1.15.1
            ports:
            - containerPort: 80
    EOF
  12. ReplicaSet 및 Pod 확인

    kubectl get rs,pod -l system=ReplicaOne
  13. ReplicaSet에 발생한 Event 확인 - https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/#scaling-a-replicaset

    kubectl describe rs rs-one
  14. 생성된 2개의 Pod 중에 한개의 Pod의 Label 변경

    kubectl label pod POD_NAME system=IsolatedPod --overwrite

    OR

    kubectl label pod $(kubectl get pod -l system=ReplicaOne -o=jsonpath='{.items[0].metadata.name}') system=IsolatedPod --overwrite
  15. ReplicaSet 및 Pod 확인

    kubectl get rs,pod -L system
  16. ReplicaSet에 발생한 Event 확인

    kubectl describe rs rs-one
  17. Label이 변경된 Pod에 ownerReferences가 명시되어 있는지 확인

    kubectl get pod -l system=IsolatedPod \
    -o=jsonpath='{.items[*].metadata.ownerReferences}' | jq
  18. ReplicaSet 삭제

    kubectl delete rs rs-one
  19. ReplicaSet 및 Pod 확인

    kubectl get rs,pod -L system
  20. 남은 Pod 삭제

    kubectl delete pod -l system=IsolatedPod 

Last updated