2023. 6. 1. 23:28ㆍ쿠버네티스 (Kubernetes)
Namespace
네임스페이스(namespace)는 편하게 그룹이라고 생각해도 됩니다.
kubectl을 사용할 때, 별도의 네임스페이스를 지정하지 않으면 기본으로 default를 사용합니다.
만일 특정 네임스페이스를 지정하고 싶다면 --namespace=abc 처럼 만들면 되고, 전체 네임스페이스는 --all-namespaces 옵션을 사용합니다.
네임스페이스를 만들기 위해서 create 명령어를 사용합니다.
kubectl create namespace {네임스페이스 이름}
Context
매번 네임스페이스를 지정하기 귀찮다면, 컨텍스트(context)를 사용하면 됩니다.
예를 들어 abc 네임스페이스를 kubectl에 기본으로 사용하고 싶다면
kubectl config set-context abc-context --namespace=abc
로 컨텍스트를 만들고
kubectl config use-context abc-context
를 실행하면 됩니다.
Object
쿠버네티스에 담겨 있는 모든 자원은 사실 Restful 자원들로 표현할 수 있습니다.
이러한 자원들은 쿠버네티스 오브젝트(kubernetes object)라고 불리기도 하는데, 오브젝트들은 각자 자신만의 고유한 HTTP 경로가 있습니다. 예를 들어 https://your-k8s.com/api/v1/name‐spaces/default/pods/abc 는 abc라는 이름의 pod을 가리킵니다.
API에서 GET으로 보듯, CLI에서는 get 명령어를 사용합니다.
kubectl get <resource-name> <obj-name>
위를 실행하면 resource-name에 해당하는 정보를 볼 수 있으며, 경우에 따라 obj-name을 넣어 세부적으로 확인할 수 있습니다.
더욱 자세한 정보를 얻고 싶다면 get 대신 describe 명령어를 사용해도 좋습니다.
kubectl describe <resource-name> <obj-name>
Debugging
컨테이너 로그를 보고 싶은 경우에는 아래 명령어를 실행하면 됩니다.
kubectl logs <pod-name>
만일 하나의 pod에 여러 개의 컨테이너가 있다면, -c 옵션으로 어떤 컨테이너의 로그를 볼 지 선택할 수 있습니다.
그리고 지속적으로 log를 보고 싶다면 -f 옵션을 사용합니다.
exec 명령어를 사용하면 실행중인 컨테이너에 접속할 수 있습니다.
kubectl exec -it <pod-name> -- bash
또한 attach로 어플리케이션에 직접 붙을 수도 있는데, logs 명령어와 다른 점은 표준 입력이 가능하다는 것입니다.
kubectl attach -it <pod-name>
Port Forward
특정 pod에 네트워크 접속을 하고 싶다면 port-forward 명령어를 사용합니다.
kubectl port-forward <pod-name> 8080:80
이렇게 작성하면 실제 로컬 컴퓨터의 8080번 포트를 해당 pod의 80번 포트로 포워딩할 수 있습니다.
Resource
클러스터의 시스템 자원 사용량을 알고 싶다면 top 명령어를 사용합니다.
kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
kind-control-plane 169m 1% 661Mi 2%
kubectl top pods
pods의 경우 기본으로 현재 네임스페이스에 대해서만 보여주는 데, 전체 네임스페이스를 확인하려면 --all-namespaces 옵션을 사용합니다.
만일 error: Metrics API not available 에러메시지가 뜬다면 아래 명령어를 실행한 후 spec.template.spec.containers.args에 - --kubelet-insecure-tls 를 추가해서 tls 보안을 무시하도록 합니다.
kubectl edit deployments.apps -n kube-system metrics-server
Autocompletion
쿠버네티스 명령어를 작성할 때, 터미널에서 자동 완성 기능을 사용하고 싶다면 bash-completion을 설치합니다.
sudo apt install bash-completion -y
Symbolic Link
kubectl 명령어를 자주 쓰게 될텐데, 매번 전체 이름을 작성하기 귀찮을 때 있습니다.
이럴 땐 명령어를 줄여서 쓰면 매우 편리합니다.
아래 명령어를 실행하면 kubectl이 위치한 장소가 나옵니다.
which kubectl
해당 디렉터리를 방문해서 아래 명령어를 통해 심볼릭 링크 파일을 만듭니다. (sudo는 필요 시 붙입니다.)
sudo ln -s kubectl k
필자는 k라고 붙였는데, 본인이 원하는 줄임말로 만들면 됩니다. 이렇게 만들면,
k get pods
처럼 써도 됩니다.
'쿠버네티스 (Kubernetes)' 카테고리의 다른 글
[Kubernetes] 5. 서비스 검색 (0) | 2023.06.12 |
---|---|
[Kubernetes] 4. POD (0) | 2023.06.03 |
[Kubernetes] 2. 클러스터 배포하기 (0) | 2023.06.01 |
[Kubernetes] 1. 컨테이너 생성 및 구동 (0) | 2023.05.31 |
[Kubernetes] 0. 쿠버네티스와 도커 (0) | 2023.05.31 |