Kubernetes(쿠버네티스) 간단한 설명
2022. 9. 27. 20:38ㆍ교육/클라우드 인프라
쿠버네티스의 특징
모든 리소스는 오브젝트 형태로 관리됩니다.
- Pod(파드) : 컨테이너의 집합을 말하며 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위를 말합니다.
- Controller(컨트롤러) : 컨테이너의 집합을 관리합니다. 예) Replic Set(레플리카셋)
- Service Account(서비스 어카운트) : 체계적으로 권한을 관리하기 위한 오브젝트
- Workload(워크로드) : 쿠버네티스에서 구동되는 애플리케이션을 말합니다
- namespace(네임스페이스) : 쿠버네티스 오브젝트를 묶는 하나의 가상공간 또는 그룹을 말합니다.
- deployment : 쿠버네티스에서 가장 널리 사용되는 오브젝트입니다.
Node(노드) : 쿠버네티스에서 워커 머신을 말하며 클러스터에 따라 가상 또는 물리머신일 수 있습니다.
- 마스터(Master) 노드 : 쿠버네티스가 제대로 동작할 수 있게 클러스터를 관리합니다.
- 워커(Worker) 노드 : 실제 애플리케이션이 구동되는 컨테이너가 생성됩니다.
Kubernetes 접근방법
우리는 쿠버네티스에 접근하기 위해 CLI 기반의 "kubectl 명령어"를 사용합니다. Docker를 설치해 사용하고 있다면 쿠버네티스 클러스터를 바로 사용해볼 수 있기 때문에 kubectl 명령어를 이용하여 쿠버네티스 리소스에 접근할 수 있습니다.
정상적으로 작동하고 있음을 확인할 수 있습니다.
Kubernetes(쿠버네티스) 설정
- Clusters : 쿠버네티스 API 서버 정보(IP, 도메인)을 말하며 여러 클러스터를 명시할 수 있습니다.
- Users : 쿠버네티스 API에 접속하기 위한 사용자 목록을 말하며 인증 방식에 따라 형태가 다를 수 있습니다.
- Context : Clusters 항목과 Users 항목 중에 하나씩 조합해서 만들어집니다. 여러 개의 Context가 나올 수 있으며 Context 기반으로 "어떤 서버(Cluster)에 어떤 사용자(User)가 쿠버네티스를 사용한다" 의미로 해석하면 됩니다.
Kubeconfig 설정하는 방법
Kubeconfig 파일을 직접 수정해서 Cluster, User, Context 항목을 입력해도 되지만 kubectl 명령어를 이용하여 설정할 수 있습니다. CMD 명령프롬프트로 실행하였습니다.
- Context 조회하기
kubectl config get-contexts |
- 현재 Context 확인하기
kubectl config current-context |
- 새로운 Context 만들기
kubectl config set-context new-context --cluster=(클러스터명) --user=(사용자명) |
- Context 삭제하기
kubectl config delete-context (Context 명) |
- Context 바꾸기
kubectl config use-context (바꿀 context 명) |
Kubectl 자주 쓰는 명령어
들어가기 전에
- nginx-pod.yaml 파일
# Nginx 컨테이너로 구성된 파드를 직접 생성하는 yaml 파일 예시
apiVersion: v1
kind: Pod
metadata:
name: my-nginx-pod
spec:
containers:
- name: my-nginx-container
image: nginx:latest
ports:
- containerPort: 80
protocol: TCP
|
- nginx-deployment.yaml 파일
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
|
명령어 정리
- 버전 정보
kubectl version --short |
- 쿠버네티스에서 사용가능한 오브젝트 리스트
kubectl api-resources |
- yaml 파일을 이용해 리소스 생성
kubectl apply -f (yaml 파일명) |
파일을 적용하려면 해당 경로로 이동해야합니다.(cd 명령 사용)
- 현재 쿠버네티스에 존재하는 특정 오브젝트 리스트
kubectl get (오브젝트 타입) |
※ 추가옵션
-o wide : 옵션을 추가하면 더 많은 정보를 얻을 수 있습니다.
--show-lables : 옵션을 추가하면 라벨을 함께 출력할 수 있습니다.
※ 오브젝트 타입 : pod, node, deployment, service 등
- 해당 리소스의 자세한 정보 출력
kubectl describe pods (오브젝트타입) (리소스명) |
- 해당 pod에 직접 접근
kubectl exec -it my-nginx-pod bash |
※ 추가옵션
--it : 옵션을 사용해 배시 셸을 유지한다.
exit : 잡고있는 명령을 해제한다.
kubectl exec -it (pod명) -c (컨테이너명) bash |
-c : pod의 어떤 컨테이너에 대해 명령어를 수행할 것인지 명시합니다.
- pod 로그확인
kubectl logs (pod명) |
- 오브젝트 삭제
kubectl delete -f (파일명.확장자) |
kubectl delete (오브젝트 타입) (리소스명) |
- 모든 리소스를 삭제
kubectl delete deployment, pod, rs --all |
- 리소스의 속성을 변경할 수 있도록 텍스트 편집기를 실행
kubectl edit (오브젝트 타입) (리소스명) |
'교육 > 클라우드 인프라' 카테고리의 다른 글
네트워크 플러그인(Network Plugin) (1) | 2022.09.30 |
---|---|
컨테이너간 통신 실습하기 (1) | 2022.09.30 |
Kubernetes(쿠버네티스, K8S) 기초 실습 (0) | 2022.09.27 |
컨테이너 개념 및 이해하기 (0) | 2022.09.26 |
Docker Desktop 이용하여 Nginx 설치하기 (0) | 2022.09.26 |