ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • k8s
    카테고리 없음 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

    댓글

Designed by Tistory.