클러스터 접속 및 관리
    • PDF

    클러스터 접속 및 관리

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    클러스터 생성을 완료하면 Ncloud Kubernetes Service 대시보드에서 클러스터 목록을 확인할 수 있으며, 클러스터에 접속할 수 있습니다. 클러스터 목록에서 클러스터의 상세 정보 확인, 파일 재설정, 클러스터 삭제 등 개별 클러스터와 관련된 작업을 수행할 수 있습니다.

    네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Containers > Ncloud Kubernetes Service 메뉴를 차례대로 클릭하면 생성된 클러스터의 목록이 표시됩니다.

    클러스터 접속

    생성된 클러스터에 kubectl 명령어를 사용하여 접속할 수 있습니다.

    kubectl 명령어를 사용하여 클러스터에 접속하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Containers > Ncloud Kubernetes Service 메뉴를 차례대로 클릭해 주십시오.

    2. 클러스터 목록에서 접속할 클러스터의 행을 클릭한 인증 방식에 따라 설정파일을 구성해 주십시오.

      • Admin 인증 : [다운로드] 버튼을 클릭하여 클러스터의 설정 파일을 다운로드해 주십시오.
      • IAM 인증 : [IAM인증 가이드] 버튼을 클릭하여 ncp-iam-authenticator 설치 후 kubeconfig 파일을 생성해 주십시오.
      참고

      Admin 인증은 2022년 2월 13일 이전에 생성된 클러스터만 지원됩니다.

    3. 아래 예시와 같이 kubectl 명령어에 --kubeconfig 옵션을 사용하여 다운로드한 설정 파일의 경로를 지정한 후 실행해 주십시오.

      $ kubectl --kubeconfig "설정파일" get nodes
      
      참고

      $HOME/.kube/config 경로에 설정 파일을 직접 추가하는 방법도 있습니다.

    4. 아래 코드를 참조하여 사용 중인 운영 체제에 알맞은 방법으로 환경변수를 설정해 주십시오.

      • Mac 또는 Linux 운영 체제에서 $KUBE_CONFIG 환경변수 설정
      $ export KUBE_CONFIG="${HOME}/Downloads/kubeconfig-1865.yaml"
      $ echo $KUBE_CONFIG
      /Users/azamara/Downloads/kubeconfig-1865.yaml
      
      $ kubectl --kubeconfig $KUBE_CONFIG get nodes
      
      • Windows Powershell에서 $KUBE_CONFIG 환경변수 설정
      > $KUBE_CONFIG=$HOME+"\Downloads\kubeconfig-1865.yaml"
      > $KUBE_CONFIG
      C:\Users\NAVER\Downloads\kubeconfig-1865.yaml
      > kubectl --kubeconfig $KUBE_CONFIG get nodes
      
      • Windows 명령 프롬프트에서 $KUBE_CONFIG 환경변수 설정
      > SET KUBE_CONFIG=%USERPROFILE%\Downloads\kubeconfig-1865.yaml
      > kubectl --kubeconfig %KUBE_CONFIG% get nodes
      


    정상적으로 설정된 경우 아래 예시와 같이 결과가 표시됩니다.

    NAME                  STATUS   ROLES   AGE
    nks-pool-0000-w-001   Ready    node    5h22m
    nks-pool-0000-w-002   Ready    node    5h22m
    nks-pool-0000-w-003   Ready    node    5h22m
    

    클러스터 상세 정보 보기

    클러스터 목록에서 개별 클러스터 행을 클릭하면 상세 정보를 확인할 수 있습니다.

    • [가이드 보기] 버튼을 클릭해 클러스터에 접속하는 방법에 대한 가이드를 확인할 수 있습니다. 해당 가이드에서 설명하는 내용은 클러스터 접속에서 더 자세히 확인할 수 있습니다.
    • Audit Log 오른쪽에 있는 [수정] 버튼을 클릭하여 활성화 여부를 변경할 수 있습니다.
      Audit Log를 활성화하면 Cloud Log Analytics에서 로그를 수집할 수 있습니다. 단, 활성화하려면 먼저 Cloud Log Analytics 서비스를 신청해야 합니다. (CLA 사용 가이드 참조)

    kubeconfig 파일 재설정

    kubeconfig 설정 파일을 재설정할 수 있습니다. 재설정 기능을 사용할 경우 기존 파일은 더 이상 사용할 수 없으며, 재설정을 통해 만들어진 새 설정 파일을 다운로드해서 사용해야 합니다.

    kubeconfig 설정 파일을 재설정하는 방법은 다음과 같습니다.

    1. 클러스터 목록에서 개별 클러스터 행을 클릭해 주십시오.
    2. 클러스터 상세 정보 탭에서 [재설정] 버튼을 클릭해 주십시오.
    3. 인증 파일을 재설정할 클러스터의 이름을 입력한 후 [재설정] 버튼을 클릭해 주십시오.
    참고

    Admin 인증을 지원하는 클러스터에서만 kubeconfig 파일을 재설정 할 수 있습니다.

    클러스터 삭제

    클러스터를 삭제하는 방법은 다음과 같습니다.

    1. 클러스터 목록에서 삭제하려는 클러스터의 행을 클릭해 주십시오.
    2. 클러스터 목록 왼쪽 위에 있는 [삭제] 버튼을 클릭해 주십시오.
    3. 확인 팝업창에 해당 클러스터의 이름을 입력한 후 [삭제] 버튼을 클릭해 주십시오.

    클러스터 Autoscaler 사용

    클러스터 Autoscaler를 사용하면 클러스터를 자동으로 확장하거나 축소할 수 있습니다. Autoscaler는 사용자가 요청한 Pod의 자원량에 비해 현재 클러스터의 자원이 부족한 경우 자동으로 노드를 증가시키며, 일정 시간 동안 특정 노드의 사용률이 낮게 유지되는 경우 노드 개수를 감소시킵니다.

    클러스터 Autoscaler를 사용하는 방법은 다음과 같습니다.

    1. 클러스터 목록에서 개별 클러스터 행을 클릭해 주십시오.
    2. 클래스터 상세 정보 탭에 표시되는 노드풀 목록에서 Autoscaler를 적용할 노드풀의 이름을 클릭해 주십시오.
    3. [수정] 버튼을 클릭해 주십시오.
    4. 설정 팝업창에서 [설정] 버튼을 클릭한 후 최소 노드 수, 최대 노드 수를 지정해 주십시오.
    5. [수정] 버튼을 클릭해 주십시오.

    Autoscaler 사용 시에는 아래의 사항을 고려하십시오.

    • Autoscaler 기능을 시작 또는 정지하는 데는 약 1분에서 5분 가량 소요됩니다.
    • Autoscaler 사용 중에는 수동으로 노드 개수를 변경할 수 없으므로, 노드 개수를 수동으로 변경하려면 해당 기능을 미설정으로 변경해야 합니다.
    • Autoscaler는 클러스터 내에서 해당 기능을 설정한 노드풀에만 적용됩니다.
    • 아래와 같은 상황에서는 노드 사용률이 낮아도 노드 개수가 감소되지 않습니다.
      • Controller(예: Deployment, StatefulSet 등)에 의해 제어되지 않는 경우
      • Local Storage가 설정되어 있는 경우
      • 다른 노드로 Pod가 이동할 수 없는 경우
      • 어노테이션 "cluster-autoscaler.kubernetes.io/safe-to-evict" : "false"가 설정되어 있는 경우

    Autoscaler의 특성에 관한 보다 자세한 내용은 Autoscaler FAQ를 참조하십시오.

    Autoscaler 정상 동작 확인

    Autoscaler가 정상적으로 동작하는지 확인하려면 아래 명령어를 실행해 주십시오.

    $ kubectl --kubeconfig $KUBE_CONFIG get cm cluster-autoscaler-status -o yaml -n kube-system
    

    정상적으로 동작할 때의 결과 예시는 아래와 같습니다.

    $ kubectl --kubeconfig $KUBE_CONFIG get cm cluster-autoscaler-status -o yaml -n kube-system
    
    apiVersion: v1
    data:
      status: |+
        Cluster-autoscaler status at 2019-09-03 08:59:53.84165088 +0000 UTC:
        Cluster-wide:
          Health:      Healthy (ready=1 unready=0 notStarted=0 longNotStarted=0 registered=1 longUnregistered=0)
                       LastProbeTime:      2019-09-03 08:59:53.70167178 +0000 UTC m=+23.846174142
                       LastTransitionTime: 2019-09-03 08:59:43.520248394 +0000 UTC m=+13.664750787
          ScaleUp:     NoActivity (ready=1 registered=1)
                       LastProbeTime:      2019-09-03 08:59:53.70167178 +0000 UTC m=+23.846174142
                       LastTransitionTime: 2019-09-03 08:59:43.520248394 +0000 UTC m=+13.664750787
          ScaleDown:   NoCandidates (candidates=0)
                       LastProbeTime:      2019-09-03 08:59:53.70167178 +0000 UTC m=+23.846174142
                       LastTransitionTime: 2019-09-03 08:59:43.520248394 +0000 UTC m=+13.664750787
    
        NodeGroups:
          Name:        k8s-default-group
          Health:      Healthy (ready=1 unready=0 notStarted=0 longNotStarted=0 registered=1 longUnregistered=0 cloudProviderTarget=1 (minSize=1, maxSize=5))
                       LastProbeTime:      2019-09-03 08:59:53.70167178 +0000 UTC m=+23.846174142
                       LastTransitionTime: 2019-09-03 08:59:43.520248394 +0000 UTC m=+13.664750787
          ScaleUp:     NoActivity (ready=1 cloudProviderTarget=1)
                       LastProbeTime:      2019-09-03 08:59:53.70167178 +0000 UTC m=+23.846174142
                       LastTransitionTime: 2019-09-03 08:59:43.520248394 +0000 UTC m=+13.664750787
          ScaleDown:   NoCandidates (candidates=0)
                       LastProbeTime:      2019-09-03 08:59:53.70167178 +0000 UTC m=+23.846174142
                       LastTransitionTime: 2019-09-03 08:59:43.520248394 +0000 UTC m=+13.664750787
    
    kind: ConfigMap
    metadata:
      annotations:
        cluster-autoscaler.kubernetes.io/last-updated: 2019-09-03 08:59:53.84165088 +0000
          UTC
      creationTimestamp: 2019-09-03T08:59:31Z
      name: cluster-autoscaler-status
      namespace: kube-system
      resourceVersion: "426558451"
      selfLink: /api/v1/namespaces/kube-system/configmaps/cluster-autoscaler-status
      uid: 248a8014-ce29-11e9-8a51-f220cd8c2e67
    

    클러스터 업그레이드

    클러스터를 업그레이드하여 내부 관리 마스터 영역을 신규 버전으로 교체할 수 있습니다. 업그레이드 이후에 추가하는 노드풀은 업그레이드 이후의 버전이 적용됩니다. 업그레이드 도중에는 일시적으로 리소스 조회, 수정, 삭제가 불가능할 수 있습니다.

    업그레이드 전 점검

    클러스터를 업그레이드하기 전 아래의 사항을 확인하여 서비스에 영향을 줄 수 있는 요소를 점검해 주십시오.

    • 신규 버전 변경 사항: Kubernetes changelog를 참조하여 신규 버전에서 변경된 사항들이 서비스에 영향을 줄 수 있는지 확인하십시오.
    • 버전 차이 정책 : Version Skew Policy를 참조하여 클러스터 및 구성요소의 버전 간 호환성을 확인하십시오.
    • Admission Webhook: 클러스터 내에 Webhook이 있는 경우 업그레이드 도중 교착 상태에 빠질 수 있으므로, Dynamic Admission Control을 참조하여 업그레이드 전 미리 조치를 취하십시오.
    • 가용 서버 확보: 안정적인 업그레이드를 위해 가용 서버를 3개 이상 확보하십시오.

    다음 사항을 참고하여 업그레이드와 관련된 세부 사항을 설정할 수 있습니다.

    • PodDisruptionBudget: Specifying a Disruption Budget을 참조하여 클러스터 업그레이드 중에도 서비스 중인 Pod을 원하는 비율 또는 개수로 유지할 수 있습니다.
    • Readiness Probe: Define readiness probes를 참조하여 노드풀 교체 중 Pod가 재배치될 때 Pod가 서비스 가능 상태일때만 Ncloud Kubernetes Service 리소스를 통해 접근 가능하도록 설정할 수 있습니다.

    업그레이드 방법

    클러스터를 업그레이드하는 방법은 다음과 같습니다.

    1. 클러스터 목록에서 업그레이드하려는 클러스터의 행을 클릭해 주십시오.
    2. 클러스터 상세 정보 탭에서 [업그레이드] 버튼을 클릭해 주십시오.
    3. 설정 팝업 창에서 업그레이드할 버전을 선택한 후 해당 클러스터의 이름을 입력해 주십시오.
    4. [업그레이드] 버튼을 클릭해 주십시오.

    Control Plane에 대한 IP ACL 구성

    공인IP 주소를 기반으로 Kubernetes Control Plane에 대한 액세스를 제한할 수 있습니다.

    Kubernetes Console에서 IP ACL(Access Control List)를 수정할 클러스터를 선택 후, Endpoint > IP ACL 수정 버튼을 클릭하십시오.

    vnks_ip_acl_ko

    Default action

    Control Plane에 접근하고자하는 클라이언트의 공인 IP가 IP ACL(Access Control List)에 등록된 규칙들에 의해 허용이나 거부되지 않는 경우, Default action에 따라 접근을 필터링합니다.

    IP ACL(Access Control List)

    공인 IP 주소를 기반으로 Kubernetes Control Plane에 대한 IP ACL을 설정할 수 있습니다.
    최대 20개까지 등록 가능합니다.

    • 접근 소스: IPv4 기반의 CIDR Block을 입력합니다.
    • 액션: 접근 소스 CIDR에 해당하는 IP가 접근시 처리하기 위한 방법을 선택합니다.
    • 메모: 입력할 규칙에 대한 메모를 작성할 수 있습니다.

    Example

    Case 1) 공인 아이피에 대한 모든 접근을 차단하고, VPC내 VM 인스턴스에서만 Kubernetes Control Plane에 접근하고자 하는 경우

    • Default action을 deny로 설정
    • IP ACL에는 아무런 규칙을 등록하지 않음

    위와 같이 설정하는 경우, 공인 아이피를 이용한 모든 접근이 차단됩니다. VPC 네트워크 내 VM 인스턴스 환경에서 Control Plane에 접근할 경우 공인아이피를 이용하지 않으며, 따라서 IP ACL의 영향 받지 않습니다.

    Case 2) 특정 공인아이피 143.248.142.77 에 대한 접근을 차단하고, 다른 공인 아이피는 접근을 허용하고 싶은 경우

    • Default action을 allow로 설정
    • IP ACL에는 접근 소스 143.248.142.77/32, 액션을 deny로 설정

    위와 같이 설정하는 경우 143.248.142.77에 대한 접근은 거부되지만, 나머지 공인아이피는 Default action에 의해 접근이 허용됩니다.


    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.