클러스터 이용 가이드

이 가이드에서는 주로 kubectl, helm 명령을 사용합니다. 이 명령을 이용하려면 클러스터를 제어하기 위해 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

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


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

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

외부 도메인을 통한 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 대시보드를 이용할 수 있습니다.

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

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...