- 인쇄
- PDF
클러스터 이용 가이드
- 인쇄
- PDF
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
이전 단계에서 얻은 토큰값(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