258 lines
14 KiB
Markdown
258 lines
14 KiB
Markdown
---
|
|
|
|
|
|
|
|
title: 쿠버네티스 대시보드를 배포하고 접속하기
|
|
description: >-
|
|
웹 UI(쿠버네티스 대시보드)를 배포하고 접속한다.
|
|
content_type: concept
|
|
weight: 10
|
|
card:
|
|
name: tasks
|
|
weight: 30
|
|
title: 웹 UI 대시보드 사용
|
|
---
|
|
|
|
<!-- overview -->
|
|
|
|
대시보드는 웹 기반 쿠버네티스 유저 인터페이스이다.
|
|
대시보드를 통해 컨테이너화 된 애플리케이션을 쿠버네티스 클러스터에 배포할 수 있고,
|
|
컨테이너화 된 애플리케이션을 트러블슈팅할 수 있으며, 클러스터 리소스들을 관리할 수 있다.
|
|
대시보드를 통해 클러스터에서 동작 중인 애플리케이션의 정보를 볼 수 있고,
|
|
개별적인 쿠버네티스 리소스들을(예를 들면 디플로이먼트, 잡, 데몬셋 등)
|
|
생성하거나 수정할 수 있다.
|
|
예를 들면, 디플로이먼트를 스케일하거나, 롤링 업데이트를 초기화하거나, 파드를 재시작하거나
|
|
또는 배포 마법사를 이용해 새로운 애플리케이션을 배포할 수 있다.
|
|
|
|
또한 대시보드는 클러스터 내 쿠버네티스 리소스들의 상태와 발생하는 모든 에러 정보를 제공한다.
|
|
|
|

|
|
|
|
<!-- body -->
|
|
|
|
## 대시보드 UI 배포
|
|
|
|
대시보드 UI는 기본으로 배포되지 않는다. 배포하려면 다음 커맨드를 실행한다.
|
|
|
|
```
|
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
|
|
```
|
|
|
|
## 대시보드 UI 접근
|
|
|
|
클러스터 데이터를 보호하기 위해, 대시보드는 기본적으로 최소한의 RBAC 설정을 제공한다.
|
|
현재, 대시보드는 Bearer 토큰으로 로그인하는 방법을 제공한다.
|
|
본 시연을 위한 토큰을 생성하기 위해서는,
|
|
[샘플 사용자 만들기](https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md) 가이드를 따른다.
|
|
|
|
{{< warning >}}
|
|
시연 중 생성한 샘플의 사용자에게는 관리자(admin) 권한이 부여되며, 이는 교육 목적으로만 사용한다.
|
|
{{< /warning >}}
|
|
|
|
### 커맨드 라인 프록시
|
|
|
|
`kubectl` 커맨드라인 도구를 이용해 다음 커맨드를 실행함으로써 대시보드로의
|
|
접속을 활성화할 수 있다.
|
|
|
|
```
|
|
kubectl proxy
|
|
```
|
|
|
|
kubectl은 [http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/](http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/)를 통해 대시보드에 접속할 수 있게 해줄 것이다.
|
|
|
|
UI는 _오직_ 커맨드가 실행된 머신에서만 접근 가능하다. 상세 내용은 `kubectl proxy --help` 옵션을 확인한다.
|
|
|
|
{{< note >}}
|
|
Kubeconfig 인증 방법은 외부 아이덴티티 프로바이더
|
|
또는 X.509 인증서를 **지원하지 않는다**.
|
|
{{< /note >}}
|
|
|
|
## 웰컴 뷰
|
|
|
|
초기 클러스터 대시보드에 접근하면, 환영 페이지를 볼 수 있다.
|
|
이 페이지는 첫 애플리케이션을 배포하는 버튼이 있을 뿐만 아니라, 이 문서의 링크를 포함하고 있다.
|
|
게다가, 대시보드가 있는 클러스터에서 기본적으로 `kube-system`
|
|
[네임스페이스](/docs/tasks/administer-cluster/namespaces/)이 동작중인 시스템 애플리케이션을 볼 수 있다.
|
|
|
|

|
|
|
|
## 컨테이너화 된 애플리케이션 배포
|
|
|
|
대시보드를 이용하여 컨테이너화 된 애플리케이션을 디플로이먼트와 간단한 마법사를 통한 선택적인 서비스로 생성하고 배포할 수 있다.
|
|
애플리케이션 세부 정보를 수동으로 지정할 수 있고, 또는 애플리케이션 구성을 포함한 YAML 또는 JSON _매니페스트(manifest)_ 파일을 업로드할 수 있다.
|
|
|
|
시작하는 페이지의 상위 오른쪽 코너에 있는 **CREATE** 버튼을 클릭한다.
|
|
|
|
### 애플리케이션 세부 정보 지정
|
|
|
|
배포 마법사는 다음 정보를 제공한다.
|
|
|
|
- **앱 이름** (필수): 애플리케이션 이름.
|
|
[레이블](/ko/docs/concepts/overview/working-with-objects/labels/) 이름은
|
|
배포할 모든 디플로이먼트와 서비스에 추가되어야 한다.
|
|
|
|
애플리케이션 이름은 선택된 쿠버네티스 [네임스페이스](/docs/tasks/administer-cluster/namespaces/) 안에서 유일해야 한다.
|
|
소문자로 시작해야 하며, 소문자 또는 숫자로 끝나고,
|
|
소문자, 숫자 및 대쉬(-)만을 포함해야 한다. 24 문자만을 제한한다.
|
|
처음과 끝의 스페이스는 무시된다.
|
|
|
|
- **컨테이너 이미지** (필수):
|
|
레지스트리에 올라간 퍼블릭 도커 [컨테이너 이미지](/ko/docs/concepts/containers/images/)
|
|
또는 프라이빗 이미지(대체로 Google Container Registry 또는 도커 허브에 올라간)의 URL.
|
|
컨테이너 이미지 사양은 콜론으로 끝난다.
|
|
|
|
- **파드의 수** (필수): 배포하고 싶은 애플리케이션의 원하는 목표 파드 개수.
|
|
값은 양의 정수만 허용됩니다.
|
|
|
|
클러스터에 의도한 파드의 수를 유지하기 위해서
|
|
[디플로이먼트](/ko/docs/concepts/workloads/controllers/deployment/)가 생성될 것이다.
|
|
|
|
- **서비스** (선택): 일부 애플리케이션의 경우, (예를 들어, 프론트엔드) 아마도 클러스터 바깥의
|
|
퍼블릭 IP 주소를 가진 (외부 서비스) 외부에 [서비스](/ko/docs/concepts/services-networking/service/)를
|
|
노출시키고 싶을 수 있다.
|
|
|
|
{{< note >}}
|
|
외부 서비스들을 위해, 한 개 또는 여러 개의 포트를 열어 둘 필요가 있다.
|
|
{{< /note >}}
|
|
|
|
클러스터 내부에서만 보고 싶은 어떤 서비스들이 있을 것이다. 이를 내부 서비스라고 한다.
|
|
|
|
서비스 타입과는 무관하게, 서비스 생성을 선택해서 컨테이너의 (들어오는 패킷의) 포트를 리슨한다면,
|
|
두 개의 포트를 정의해야 한다.
|
|
서비스는 컨테이너가 바라보는 타겟 포트와 (들어오는 패킷의) 맵핑하는 포트가 만들어져야 할 것이다.
|
|
서비스는 배포된 파드에 라우팅 될 것이다. 지원하는 프로토콜은 TCP와 UDP이다.
|
|
서비스가 이용하는 내부 DNS 이름은 애플리케이션 이름으로 지정한 값이 될 것이다.
|
|
|
|
만약 필요하다면, 더 많은 세팅을 지정할 수 있는 **자세한 옵션 보기** 섹션에서 확장할 수 있다.
|
|
|
|
- **설명**: 입력하는 텍스트값은 디플로이먼트에
|
|
[어노테이션](/ko/docs/concepts/overview/working-with-objects/annotations/)으로
|
|
추가될 것이고, 애플리케이션의 세부사항에 표시될 것이다.
|
|
|
|
- **레이블**: 애플리케이션에 사용되는 기본적인 [레이블](/ko/docs/concepts/overview/working-with-objects/labels/)은
|
|
애플리케이션 이름과 버전이다.
|
|
릴리스, 환경, 티어, 파티션, 그리고 릴리스 트랙과 같은 레이블을 디플로이먼트, 서비스, 그리고 파드를
|
|
생성할 때 추가적으로 정의할 수 있다.
|
|
|
|
예를 들면:
|
|
|
|
```conf
|
|
release=1.0
|
|
tier=frontend
|
|
environment=pod
|
|
track=stable
|
|
```
|
|
|
|
- **네임스페이스**: 쿠버네티스는 동일한 물리 클러스터를 바탕으로 여러 가상의 클러스터를 제공한다.
|
|
이러한 가상 클러스터들을 [네임스페이스](/docs/tasks/administer-cluster/namespaces/)라고 부른다.
|
|
논리적으로 명명된 그룹으로 리소스들을 분할할 수 있다.
|
|
|
|
대시보드는 드롭다운 리스트로 가능한 모든 네임스페이스를 제공하고, 새로운 네임스페이스를 생성할 수 있도록 한다.
|
|
네임스페이스 이름은 최대 63개의 영숫자 단어와 대시(-)를 포함하고 있지만 대문자를 가지지 못한다.
|
|
네임스페이스 이름은 숫자로만 구성할 수 없다.
|
|
만약 이름을 10이라는 숫자로 세팅한다면, 파드는 기본 네임스페이스로 배정하게 될 것이다.
|
|
|
|
네임스페이스 생성이 성공하는 경우, 생성된 네임스페이스가 기본으로 선택된다.
|
|
만약 생성에 실패하면, 첫 번째 네임스페이스가 선택된다.
|
|
|
|
- **이미지 풀(Pull) 시크릿**:
|
|
특정 도커 컨테이너 이미지가 프라이빗한 경우,
|
|
[풀(Pull) 시크릿](/ko/docs/concepts/configuration/secret/) 자격 증명을 요구한다.
|
|
|
|
대시보드는 가능한 모든 시크릿을 드롭다운 리스트로 제공하며, 새로운 시크릿을 생성할 수 있도록 한다.
|
|
시크릿 이름은 예를 들어 `new.image-pull.secret` 과 같이 DNS 도메인 이름 구문으로 따르기로 한다.
|
|
시크릿 내용은 base64 인코딩 방식이며,
|
|
[`.dockercfg`](/ko/docs/concepts/containers/images/#파드에-imagepullsecrets-명시) 파일로 정의된다.
|
|
시크릿 이름은 최대 253 문자를 포함할 수 있다.
|
|
|
|
이미지 풀(Pull) 시크릿의 생성이 성공한 경우, 기본으로 선택된다. 만약 생성에 실패하면, 시크릿은 허용되지 않는다.
|
|
|
|
- **CPU 요구 사항 (cores)** 와 **메모리 요구 사항 (MiB)**:
|
|
컨테이너를 위한 최소 [리소스 상한](/ko/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/)을
|
|
정의할 수 있다. 기본적으로, 파드는 CPU와 메모리 상한을 두지 않고 동작한다.
|
|
|
|
- **커맨드 실행** 와 **커맨드 인수 실행**:
|
|
기본적으로, 컨테이너는 선택된 도커 이미지의
|
|
[기본 엔트리포인트 커맨드](/ko/docs/tasks/inject-data-application/define-command-argument-container/)를 실행한다.
|
|
커맨드 옵션과 인자를 기본 옵션에 우선 적용하여 사용할 수 있다.
|
|
|
|
- **특권을 가진(privileged) 상태로 실행**: 다음 세팅은 호스트에서 루트 권한을 가진 프로세스들이
|
|
[특권을 가진 컨테이너](/ko/docs/concepts/workloads/pods/#컨테이너에-대한-특권-모드)의
|
|
프로세스들과 동등한지 아닌지 정의한다.
|
|
특권을 가진(privileged) 컨테이너는 네트워크 스택과 디바이스에 접근하는 것을 조작하도록 활용할 수 있다.
|
|
|
|
- **환경 변수**: 쿠버네티스 서비스를
|
|
[환경 변수](/ko/docs/tasks/inject-data-application/environment-variable-expose-pod-information/)를 통해 노출한다.
|
|
환경 변수 또는 인자를 환경 변수들의 값으로 커맨드를 통해 구성할 수 있다.
|
|
애플리케이션들이 서비스를 찾는데 사용된다.
|
|
값들은 `$(VAR_NAME)` 구문을 사용하는 다른 변수들로 참조할 수 있다.
|
|
|
|
### YAML 또는 JSON 파일 업로드
|
|
|
|
쿠버네티스는 선언적인 설정을 제공한다.
|
|
이 방식에서는 모든 설정이 매니페스트(YAML 또는 JSON 설정 파일)에 저장된다.
|
|
매니페스트는 쿠버네티스 [API](/ko/docs/concepts/overview/kubernetes-api/) 리소스 스키마를
|
|
사용한다.
|
|
|
|
배포 마법사를 통해 애플리케이션 세부 사항들을 지정하는 대신, 애플리케이션을 하나 이상의 매니페스트로 정의할 수 있고 대시보드를 이용해서 파일을 업로드할 수 있다.
|
|
|
|
## 대시보드 사용
|
|
|
|
다음 섹션들은 어떻게 제공하고 어떻게 사용할 수 있는지에 대한 쿠버네티스 대시보드 UI의 모습을 보여준다.
|
|
|
|
### 탐색
|
|
|
|
클러스터에 정의된 쿠버네티스 오프젝트가 있으면, 대시보드는 초기화된 뷰를 제공한다.
|
|
기본적으로 _기본_ 네임스페이스의 오프젝트만이 보이는데,
|
|
이는 탐색 창에 위치한 네임스페이스 셀렉터를 이용해 변경할 수 있다.
|
|
|
|
대시보드는 몇 가지 메뉴 카테고리 중에서 대부분의 쿠버네티스 오브젝트 종류와 그룹을 보여준다.
|
|
|
|
#### 어드민 개요
|
|
|
|
클러스터와 네임스페이스 관리자에게 대시보드는 노드, 네임스페이스 그리고 퍼시스턴트 볼륨과 세부사항들이 보여진다.
|
|
노드는 모든 노드를 통틀어 CPU와 메모리 사용량을 보여준다.
|
|
세부사항은 각 노드들에 대한 사용량, 사양, 상태,
|
|
할당된 리소스, 이벤트 그리고 노드에서 돌아가는 파드를 보여준다.
|
|
|
|
#### 워크로드
|
|
|
|
선택된 네임스페이스에서 구동되는 모든 애플리케이션을 보여준다.
|
|
해당 뷰는 애플리케이션의 워크로드 종류(예시: 디플로이먼트, 레플리카셋(ReplicaSet), 스테이트풀셋(StatefulSet))를 보여준다.
|
|
각각의 워크로드 종류는 분리하여 볼 수 있다.
|
|
리스트는 예를 들어 레플리카셋에서 준비된 파드의 숫자 또는 파드의 현재 메모리 사용량과 같은
|
|
워크로드에 대한 실용적인 정보를 요약한다.
|
|
|
|
워크로드에 대한 세부적인 것들은 상태와 사양 정보,
|
|
오프젝트들 간의 관계를 보여준다.
|
|
예를 들어, 레플리카셋으로 관리하는 파드들 또는 새로운 레플리카셋과 디플로이먼트를 위한 Horizontal Pod Autoscalers 이다.
|
|
|
|
#### 서비스
|
|
|
|
외부로 노출되는 서비스들과 클러스터 내에 발견되는 서비스들을 허용하는
|
|
쿠버네티스 리소스들을 보여준다.
|
|
이러한 이유로 서비스와 인그레스는 클러스터간의 연결을 위한 내부 엔드포인트들과
|
|
외부 사용자를 위한 외부 엔드포인트들에 의해 타게팅된 파드들을 보여준다.
|
|
|
|
#### 스토리지
|
|
|
|
스토리지는 애플리케이션이 데이터를 저장하기 위해 사용하는 퍼시턴트볼륨클레임 리소스들을 보여준다.
|
|
|
|
#### 컨피그맵과 시크릿 {#config-maps-and-secrets}
|
|
|
|
클러스터에서 동작 중인 애플리케이션의 라이브 설정을 사용하는 모든 쿠버네티스 리소스들을 보여준다.
|
|
컨피그 오브젝트들을 수정하고 관리할 수 있도록 허용하며, 기본적으로는 숨겨져 있는 시크릿들을 보여준다.
|
|
|
|
#### 로그 뷰어
|
|
|
|
파드 목록과 세부사항 페이지들은 대시보드에 구현된 로그 뷰어에 링크된다.
|
|
뷰어는 단일 파드에 있는 컨테이너들의 로그들을 내려가면 볼 수 있도록 한다.
|
|
|
|

|
|
|
|
## {{% heading "whatsnext" %}}
|
|
|
|
|
|
더 많은 정보는
|
|
[쿠버네티스 대시보드 프로젝트 페이지](https://github.com/kubernetes/dashboard)를 참고한다.
|