나미-IT 2023. 11. 21. 14:33

1. Pod (최소단위, po)

2. Namespace (폴더, ns)

3. Yaml (object model)

create -f nsl.yaml
kube ctl get po -n ns1

meaning

. kube = k8s 

. ctl = control

. get po = get pods

. ns1 = namespace의 이름 ns1 안에 있는

 

4. Replica Set

- pods 개수 유지싴줌

- pod단위 update, rollback 가능

5. Deployment

- replicaset을 관리함

deployment - replicase - pod example

 

 

Examples

rs.yaml
apiversion:apps/v1
kind:ReplicaSet
metadata:
    name: rs1
spec:
    replicas:2
    selector:
        matchlabels:
            app:nginx
        template:
            metadata:
            name: rs1-pod
            labels:
                app:nginx
       spec:
           containers:
               name:nginx
               image:nginx:1.14.0
dp1.yaml(deployment object 구성 선언)
apiversion:apps/v1
kind:Deployment
metadata:
    name:dp1
spec:
    replicas:3
    strategy:
       type:recreate
    selector:
        matchLabels:
            app:nginx

   template:
       metadata:
            name:dp1-pod
            labels:
                app:nginx
        spec:
           conainers:
               name:nginx
               image:nginx:1.14.0
               ports:
                   containerPort:80    

 

6.Service

. Pods의 ip주소(내부ip) : 외부접근 불가능. & pods 삭제 & 재생성 → ip변경됨

. ∴ 고정된 주소를 쓰고싶다면 service로 연결해야함

 (1) 원리

  - IF 서비스의 selector = pods의 label THEN connect

apiversion:v1
kind:service
metadata:
    name: service1
spec:
    selector:
        app:nginex
apiversion:v1
kind: pod
metadata:
    name: label
    labels:
        environment:production
        app:nginex

 

 

(2) 서비스의 종류

    (a) Cluster IP

        - 클러스터 내부에서만 사용가능

    (b) NodePort

        - 해당 노드의 ip와 port로 접속하면 서비스 연결됨ㅁ

        - service는 연결된 pod에 트래픽을 전달

        - 생성 구문 (서비스)

kubectl create service nodeport np --tcp=5678:8080 

        - 구문(deployment - service 연결)

kubectl expose deployment nginx -- port80 --target-port 8000 --type:NodePort

 

    (c) Persistent Volume

        - Pod와 별도로 관리

        Pod <-------PVC ---------> PV

        user <-------Service------->pod

        - AWS의 EBS EFS S3 = Volume 서비스. PV가 될 수 있음.

        - 아래 예시에서 PV와 PVC의 access Modes는 동일해야 함. 

 

PV.yaml
apiversion:v1
kind:PersistentVolume
metadata:
    name:pv1
spec:
    capacity:
        storage: 5G
    accessModes:
         ReadWriteOnce
PVC.yaml
apiversion:v1
kind:PersistentVolumeClaim
metadata:
    name:pvc2
spec:
    accessModes:
        ReadWriteOnce
    resources:
       requests:
           storage:2G