컴퓨팅 격리 사용 설정

Kf 앱은 클러스터의 전용 노드에 배포할 수 있습니다. 앱 포드가 도착하는 노드를 보다 효과적으로 관리해야 할 때 이 기능이 필요합니다. 예를 들면 다음과 같습니다.

  • 여러 앱에서 동일한 클러스터를 공유하지만 특정 앱의 전용 노드가 필요한 경우
  • 특정 조직의 전용 노드가 필요한 경우(Kf 공간)
  • Windows와 같은 특정 운영체제를 타겟팅하는 경우
  • 자주 통신하는 두 서비스의 포드를 같은 위치에 배치하는 경우

컴퓨팅 격리를 사용 설정할 때 Kf에서는 Kubernetes nodeSelector를 사용합니다. 이 기능을 사용하려면 먼저 앱 포드가 도착할 노드 또는 노드 풀에 라벨을 추가한 후 Kf 공간에 동일한 적격 라벨을 추가합니다. 이 공간에 설치된 모든 앱이 라벨이 일치하는 노드에 도착합니다.

Kf는 각 Kf 빌드를 실행하기 위한 Kubernetes 포드를 만듭니다. buildNodeSelector 기능을 사용하여 빌드 포드만 실행하도록 컴퓨팅 리소스를 격리시킬 수 있습니다. 한 가지 사용 사례는 앱 포드를 다른 노드에서 실행하고 SSD가 있는 노드에서 빌드 포드가 실행되도록 격리하는 것입니다. BuildNodeSelectors 기능은 컴퓨팅 리소스 최적화 및 클러스터 유연성을 제공합니다. 이 페이지에서 'BuildNodeSelectors 및 빌드 노드 풀 구성' 장을 참조하세요.

Kf 클러스터에서 nodeSelector 구성

기본적으로 컴퓨팅 격리는 사용 중지되어 있습니다. 다음 절차에 따라 라벨 및 nodeSelector를 구성합니다.

  1. 애플리케이션 pod가 도착할 노드에 라벨(distype=ssd)을 추가합니다.

    kubectl label nodes nodeid disktype=ssd
    
  2. Kf 공간에 동일한 라벨을 추가합니다. 그러면 이 공간에 배포된 모든 앱이 적격한 노드에 도착합니다.

    kf configure-space set-nodeselector space-name disktype ssd
    

    동일한 명령어를 다시 실행하여 라벨을 여러 개 추가할 수 있습니다.

  3. 라벨이 구성되었는지 확인합니다.

    kf configure-space get-nodeselector space-name
    
  4. 공간에서 라벨을 삭제합니다.

    kf configure-space unset-nodeselector space-name disktype
    

kf 스택의 nodeSelector 재정의

Kf 앱 배포는 앱을 빌드하고 패키징하는 데 사용되는 스택(빌드팩)을 기반으로 추가로 타겟팅할 수 있습니다. 예를 들어 spaceStacksV2로 빌드된 애플리케이션을 Linux 커널 4.4.1이 있는 노드에 배치하려는 경우 스택의 nodeSelector 값이 공간에서 구성된 값을 재정의합니다.

스택에서 nodeSelector를 구성하려면 다음 안내를 따르세요.

  1. Kf 클러스터의 config-defaults를 수정하고 라벨을 추가합니다.

    $ kubectl -n kf edit configmaps config-defaults
    
  2. 스택 정의에 nodeSelector를 추가합니다.

    .....
    .....
    spaceStacksV2: |
    - name:  cflinuxfs3
            image: cloudfoundry/cflinuxfs3
            nodeSelector:
                  OS_KERNEL: LINUX_4.4.1
    .....
    .....
    

BuildNodeSelectors 및 빌드 노드 풀 구성

빌드 노드 선택기는 빌드 풀의 노드 선택기를 대체할 때만 효과가 있고 앱 포드에 영향을 주지 않습니다. 예를 들어 공간의 노드 선택기와 Kfsystem의 빌드 노드 선택기를 모두 지정하면 앱 포드에 공간 노드 선택기가 포함되고 빌드 포드에는 Kfsystemㅇ의 빌드 노드 선택기가 포함됩니다. 노드 선택기가 공간에만 지정되었으면 앱 및 빌드 포드 모두 공간의 노드 선택기가 포함됩니다.

  1. 빌드 포드를 할당하려는 노드에 라벨(예를 들어 disktype:ssd)을 추가합니다.

    kubectl label nodes nodeid disktype=ssd
    
  2. KfSystem CR에 패치를 적용하여 빌드 노드 선택기를 추가/업데이트합니다(key:value 쌍 형식).

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {<key>:<value>}}]'
    

    예를 들어 disktype=ssd를 빌드 노드 선택기로 추가합니다.

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {"disktype":"ssd"}}]'