클러스터 이용 가이드
    • PDF

    클러스터 이용 가이드

    • PDF

    Article Summary

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

    이 가이드에서는 주로 kubectl, helm 명령을 사용합니다. 이 명령을 이용하려면 클러스터를 제어하기 위해 Ncloud Kubernetes Service 콘솔 화면에서 설정 파일을 다운로드 후 다음 방법 중 하나를 선택하여 사용해야 합니다.

    • $HOME/.kube/config에 설정 파일 추가
    • kubectl, helm 명령 사용 시 --kubeconfig="설정파일" 옵션 추가

    kubectl 설치하기

    kubectl는 CLI를 통해 클러스터를 제어할 수 있는 기능을 제공합니다.

    운영체제별 kubectl 설치하기

    kubeconfig 환경변수 설정하기

    예시: macOS/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
    NAME                 STATUS   ROLES   AGE   VERSION
    nks-pool-1865-w2zy   Ready    node    4d    v1.12.3
    nks-pool-1865-w2zz   Ready    node    4d    v1.12.3
    

    예시: 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
    NAME                 STATUS   ROLES   AGE    VERSION
    nks-pool-1865-w2zy   Ready    node    4d5h   v1.12.3
    nks-pool-1865-w2zz   Ready    node    4d5h   v1.12.3
    

    예시: Windows Command Prompt $KUBE_CONFIG 환경변수 설정하기

    > SET KUBE_CONFIG=%USERPROFILE%\Downloads\kubeconfig-1865.yaml
    > kubectl --kubeconfig=%KUBE_CONFIG% get nodes
    NAME                 STATUS   ROLES   AGE    VERSION
    nks-pool-1865-w2zy   Ready    node    4d5h   v1.12.3
    nks-pool-1865-w2zz   Ready    node    4d5h   v1.12.3
    

    Kubernetes 대시보드 접속하기

    Kubernetes 대시보드(Dashboard)는 CLI 대신 GUI를 통해 클러스터 확인 및 제어할 수 있는 기능을 제공합니다.

    Kubernetes 대시보드 접속을 위한 토큰 얻기

    토큰 정보 확인

    $ kubectl --kubeconfig=$KUBE_CONFIG -n kube-system get secret | grep kubernetes-dashboard-token
    kubernetes-dashboard-token-56h7n                 kubernetes.io/service-account-token   3      2d3h
    

    Secret 목록에서 kubernetes-dashboard-token 이름을 확인하고 다음 명령어를 통해 해당 토큰 정보를 확인할 수 있습니다.

    $ kubectl --kubeconfig=$KUBE_CONFIG -n kube-system describe secret kubernetes-dashboard-token-56h7n
    Name:         kubernetes-dashboard-token-56h7n
    Namespace:    kube-system
    Labels:       <none>
    Annotations:  kubernetes.io/service-account.name: kubernetes-dashboard
                  kubernetes.io/service-account.uid: 77036f26-55de-11e9-b757-f220cd3abfc8
    
    Type:  kubernetes.io/service-account-token
    
    Data
    ====
    ca.crt:     1025 bytes
    namespace:  11 bytes
    token:      eyJhbGciOiJSUzI1NiIsImtpZ...
    

    토큰값만 얻기

    다음과 같이 토큰값만 확인하는 방법은 awk 명령어가 지원되는 경우에만 사용할 수 있습니다.

    $ kubectl --kubeconfig=$KUBE_CONFIG -n kube-system describe secret \
    $(kubectl --kubeconfig=$KUBE_CONFIG -n kube-system get secret | awk '/^kubernetes-dashboard-token/{print $1}') | awk '$1=="token:"{print $2}'
    eyJhbGciOiJSUzI1NiIsImtpZ...
    

    Kubernetes 대시보드 Proxy 구동하기

    $ kubectl --kubeconfig=$KUBE_CONFIG proxy
    

    위 명령을 실행 후 브라우저에서 다음 주소에 접속하면 대시보드 초기 화면을 확인할 수 있습니다.

    • http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/overview?namespace=default

    nks-1-2-1_ko(1)

    이전 단계에서 얻은 토큰값(eyJhbGciOiJSUzI1NiIsImtpZ...)을 해당 초기화면에 입력하고, 로그인 버튼을 클릭합니다.

    nks-1-2-2_ko(1)

    이제 대시보드 화면을 통해서 쉽게 클러스터 확인 및 제어를 할 수 있습니다.

    외부 도메인을 통한 Kubernetes 대시보드 접속하기

    외부 도메인으로 Kubernetes 대시보드 접속을 원하는 경우 system:anonymous 권한을 추가해야 합니다.

    접속 주소 확인하기

    아래 명령을 이용해서 kubernetes-dashboard 주소를 확인할 수 있습니다.

    $ kubectl --kubeconfig=$KUBE_CONFIG cluster-info
    ...
    kubernetes-dashboard is running at https://CLUSTER_ID.kr.nks.ntruss.com/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
    ...
    
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
    
    • 접속 주소 예시: https://CLUSTER_ID.kr.nks.ntruss.com/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

    기본적으로 외부 접속이 차단된 상태이기 때문에 다음 단계인 system:anonymous 권한 추가를 수행 후 위 주소로 접속하고, Kubernetes 대시보드 접속을 위한 토큰 얻기 단계에서 토큰을 확인 후 해당 토큰값(eyJhbGciOiJSUzI1NiIsImtpZ...)을 이용해서 로그인 후 Kubernetes 대시보드를 이용할 수 있습니다.

    nks-1-2-1a_ko(1)

    system:anonymous 권한 추가

    이 권한을 추가하면 외부 주소를 통해 Kubernetes 대시보드에 접근할 수 있습니다.

    $ cat <<EOF | kubectl --kubeconfig=$KUBE_CONFIG apply -f -
    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: kubernetes-dashboard-anonymous
    rules:
    - apiGroups: [""]
      resources: ["services/proxy"]
      resourceNames: ["https:kubernetes-dashboard:"]
      verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
    - nonResourceURLs: ["/ui", "/ui/*", "/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/*"]
      verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
    
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: kubernetes-dashboard-anonymous
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: kubernetes-dashboard-anonymous
    subjects:
    - kind: User
      name: system:anonymous
    EOF
    

    system:anonymous 권한 삭제

    이 권한을 삭제하면 외부 주소를 통해 Kubernetes 대시보드에 접근할 수 없습니다.

    $ kubectl --kubeconfig=$KUBE_CONFIG delete clusterrole kubernetes-dashboard-anonymous
    $ kubectl --kubeconfig=$KUBE_CONFIG delete clusterrolebinding kubernetes-dashboard-anonymous
    

    Weavescope 설치하기

    Weavescope은 Kubernetes 클러스터의 워커노드, 파드, 컨테이너와 같은 리소스 정보를 한눈에 볼 수 있는 시각화 도구입니다.

    Weavescope 설치하기

    $ kubectl --kubeconfig=$KUBE_CONFIG apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl --kubeconfig=$KUBE_CONFIG version | base64 | tr -d '\n')"
    namespace/weave created
    serviceaccount/weave-scope created
    clusterrole.rbac.authorization.k8s.io/weave-scope created
    clusterrolebinding.rbac.authorization.k8s.io/weave-scope created
    deployment.apps/weave-scope-app created
    service/weave-scope-app created
    daemonset.extensions/weave-scope-agent created
    

    로컬머신에서 Weavescope 접속하기

    $ export POD_NAME=$(kubectl --kubeconfig=$KUBE_CONFIG get pods -n weave -l "name=weave-scope-app" -o jsonpath="{.items[0].metadata.name}"); echo $POD_NAME; kubectl --kubeconfig=$KUBE_CONFIG -n weave port-forward $POD_NAME 14040:4040
    weave-scope-app-79b7f7b9b6-rx99f
    Forwarding from 127.0.0.1:14040 -> 4040
    Forwarding from [::1]:14040 -> 4040
    

    위 명령을 실행 후 브라우저에서 다음 주소에 접속하면 Weavescope 화면을 확인할 수 있습니다.

    • http://localhost:14040

    nks-1-2-3_ko(1)


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

    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.