ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kubernetes] Affinity
    IT/Education 2021. 8. 6. 18:18
    반응형

    스스로 DevOps 엔지니어라고 말하면서 관련 글을 아무것도 올리지 않는것을 보면,

    나도 아직 한참 먼 것 같다. 그래서 다시 개인 공부 및 정리 차원에서 글을 작성해보려 한다.

     

    우선 기본적인 개념은 공식 사이트나 다른 많은 사이트들에서 찾아볼수 있으므로 나는 내가 정리하고자 하는 내용만

    정리해본다.

    ref) Kubernetes 공식 홈페이지 : https://kubernetes.io/ko/

     

    운영 수준의 컨테이너 오케스트레이션

    운영 수준의 컨테이너 오케스트레이션

    kubernetes.io

     

    원래는 쿠버네티스를 이용하면서 우리는 Pod를 어디에 띄울지, 크게 고민하지 않는다는 이점을 이용하였다.

     

    하지만, 어떤 application이 동작함에 있어서, 원하는 node에서 하나만 뜨고 싶고, 어떤 pod와 같이 뜨고 싶은

     

    경우가 생길 수 있다. 그중 내가 사용했었던 조건에 대한 정리이다.

     

     

    1. Affinity ( PodAffinity )

     

    Affinity는 선호도라고 생각하는 것이 좋다.

    - 어떤 Node에 label A를 포함하고 있고, Pod가 뜰 때, label A를 가진 node에서 동작하길 희망한다고 선언하면,

    label A 를 가진 node에 할당할 수 있으면 거의 할당해준다고 보면 된다.

     

    또한 Affinity의 내부 변수중 required, preferred로 할당을 제어할 수 도 있다. 아래는 예시의 yaml 파일이다.

     

    apiVersion: v1
    kind: Pod
    metadata:
      name: with-pod-affinity
    spec:
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: security
                operator: In
                values:
                - S1
            topologyKey: topology.kubernetes.io/zone
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: security
                  operator: In
                  values:
                  - S2
              topologyKey: topology.kubernetes.io/zone
      containers:
      - name: with-pod-affinity
        image: k8s.gcr.io/pause:2.0

     

    Affinity 종류로는 총 4가지가 있다.

      Affinity Antiaffinity
    Node nodeAffinity nodeAntiaffinity
    Pod podAffinity podAntiaffinty

     

    본인이 사용했던 것은 podAffinity로 노드에는 상관하지않고, 특정 label을 가진 pod가 있는 ( 조건을 만족한 pod )

    node에 새로운 pod를 할당하는 정책이 필요해서 위의 내용을 찾아보고 정리하였다.

     

    해당 Affinity 조건만으로는 내가 원하는 스케쥴링을 만족시키진 못해서 조건 하나를 더 추가하였다.

     

    이후 추가 포스팅할 내용으로 topologySpreadConstraint 라는 내용을 정리할 것이다.

    반응형

    댓글

Designed by Tistory.