668 words
3 minutes
[Kubernetes]02. 기본명령어와 오브젝트
Overview
1. Kubernetes Object
Kubernetes Object
Concept
- Kubernetes Object : 쿠버네티스 API 서버로 생성되는 영속성을 가지는 모든 실체
- Pod : k8s에서 컨테이너를 실행하는 가장 작은 단위. 하나 이상의 컨테이너로 구성될 수 있음.
- Deployment : Pod가 배포된는 방법을 정의하는 오브젝트. Pod를 생성, 업데이트, 삭제하는 방법을 정의
- Namespace : 쿠버네티스 클러스터 내에서 리소스를 그룹화하는 방법. 리소스를 분리하고 격리하는데 사용
Pod
echo "Start a nginx pod"
kubectl run nginx --image=nginx
# wait 3 seconds
timeout 3 sleep 3
echo "Start a nginx pod with new name"
kubectl run nginx01 --image=nginxDeployment
#!/bin/bash
echo "Creating deployment..."
kubectl create deployment httpd --image=httpd
# wait 10 secondstimeout 3 sleep 10
echo "Changing number of replicas..."
kubectl scale deployment httpd --replicas=5
# delete pod
# kubectl delete pod httpd-5c758d86c9-7z5zvNamespace
- 주로 어플리케이션을 구분하기 위해 사용
- RBAC 을 이용해 namespace 별로 권한을 부여할 수 있음
- 기본적으로 클러스터를 가상으로 구분하는 단위라 물리적인 분리는 아님
#!/bin/bash
# namespace is a way to divide cluster resources between multiple users# create a namespacekubectl create ns my-namespace
# switch to the namespacekubectl ns my-namespace
# kubectl ns : 전체 namespace를 보여줌
# delete namespace
kubectl delete ns my-namespace2. YAML을 활용한 쿠버네티스 오브젝트 관리
플러그인 설치용
kubectl krew install ctx ns neatConcept
- affinity : k8s에서 특정 조건에 부합하는 노드에 파드를 배치하도록하는 규칙. 기본적으로 이런 특성을 가진 노드에 배치해라 라고 스케줄러에게 요청하는 것과 같다.
- anti-affinity : 특정 조건에 부합하는 노드에 파드를 배치하지 않도록 하는 규칙. 이런 특성을 가진 노드에는 배치하지 말아라 라고 스케줄러에게 요청하는 것과 같다.
- node affinity : 파드가 특정 노드 집합에 스케줄링되도록 제한. 노드의 레이블을 기반으로 한다. ex) GPU가 있는 노드, SSD 스토리지가 있는 노드와 같은 특정 하드웨어 조건을 가진 노드에 파드를 배치할 때 사용
yaml 파일을 통한 관리
- 모든 쿠버네티스 오브젝트는 yaml 파일로 export 가능
- yaml 파일을 통해 쿠버네티스 오브젝트를 생성, 수정, 삭제 가능
k get pod busybox -o yaml > busybox.yaml
k apply -f busybox.yamlyaml naming rule
{app}-{opt}-{obj}.yaml
service yaml 예제
apiVersion: v1kind: Servicemetadata: name: my-servicespec: selector: app.kubernetes.io/name: MyApp ports: - name: http protocol: TCP port: 80 targetPort: 9376 - name: https protocol: TCP port: 443 targetPort: 9377References
- 24단계 실습으로 정복하는 쿠버네티스 3,4장
[Kubernetes]02. 기본명령어와 오브젝트
https://yjinheon.netlify.app/posts/05system/k8s/k8s_02_commands/