docker & Kubernetes

반응형
kubernetes를 처음에 공부했을 때 별로 필요없는 줄 알고 비중을 크게 두지 않았다. 근데 공부하고 나서 활용도가 높아서 정리하게 되었다.예를 들어 ai모델을 클라우드에서 돌리고자 한다. 그런데 워커 노드에 어떤 gpu와 disk가 있는지 모른다. 그렇다면 어느 노드에 돌리는 것이 효율적인지 모른다.이럴 경우를 대비하여 label를 사용한다.위와 같이 node1에는 gpu가 있고, disk가 ssd임을 알려준다면 ai모델을 돌리는 워커 노드를 택하는 것이 쉬워질 것이다. 이럴 경우에 쓰이도록 한다.1. 노드의 label 할당하기1) 전체 노드의 label 확인하기kubectl get nodes --show-labels위와 같이 node들의 label들을 확인할 수 있다. 이는 기본적으로 node들에..
쿠버네티스 클러스터를 사용하다 보면 특정 노드에 있는 포드들을 모두 다른 곳으로 옮기거나 아니면 특정 노드에는 포드들이 스케쥴링 되지 않도록 제한을 걸어둘 필요가 있다. 그럴 때 사용하는 것이 cordon, drain이다.cordon: cordon은 지정된 노드에 더 이상 pod들이 스케쥴링되어서 실행되지 않도록 제재하는 것을 말한다.1) pod 확인하기kubectl get po -o wide위의 명령어를 쳐서 pod들에게 할당되어진 pod들을 확인한다. 내 경우 워커노드를 3개를 돌리고 있어서 각각 w1,w2,w3에게 골고루 지정되어 있다.2) cordon 지정하기kubectl scale deployment --replicas=1우선 워커들이 pod들에게 지정되어 있으므로 replicas를 pod 하..
centos에서 snap을 바로 설치할 수 없다. 그래서 EPEL 레포지토리가 필요하고, 그 다음에 snapd를 설치해야 이를 사용할 수 있다.1. EPEL 저장소 활성화하기sudo yum install epel-release -yEPEL(Enterprise Linux용 추가 패키지)은 CentOS용 추가 패키지를 제공한다.2. snapd 설치하기sudo yum install snapd -yEPEL 저장소가 활성화되면 Snapd를 설치할 수 있다.3. Classic Confinement 활성화(필요한 경우):sudo systemctl enable --now snapd.socket일부 스냅에는 시스템 리소스에 대한 무제한 액세스를 허용하는 클래식 제한이 필요하다. 그러므로 클래식 제한을 활성화하려면 다음 ..
볼륨을 사용해야 하는 이유는?컨테이너 특성 상 어떠한 문제가 발생하여 컨테이너가 삭제 된다면 데이터도 같이 삭제되게 된다. 파일을 따로 보관해야 한다거나, 데이터 베이스를 사용할 경우 실시간으로 생성되던 데이터가 사라지면 큰 장애가 발생 하게 된다. 모종의 이유로 컨테이너를 사용할 때 중요한 데이터가 있다면, 볼륨을 사용하여 데이터를 보관해줘야 한다.즉, Stateful한 Application 경우(Pod, Deployment) 데이터를 영속적으로 저장하기 위한 방법이 필요하다.Storage Volume이란?Pod의 일부분으로 정의되며 Pod와 동일한 Lifecycle을 가진다. 파드가 시작되면 Volume이 생성되고, 파드가 삭제되면 볼륨이 삭제된다는 것을 의미한다.→ 쿠버네티스 Volume은 Pod의..
Kubernetes에서 NFS 서버는 Kubernetes 클러스터에서 실행되는 애플리케이션에 영구 스토리지를 제공하는 NFS(네트워크 파일 시스템) 서버입니다. NFS는 클라이언트가 마치 로컬에 저장된 것처럼 네트워크를 통해 파일에 액세스할 수 있도록 하는 분산 파일 시스템 프로토콜입니다. Kubernetes의 맥락에서 NFS 서버는 일반적으로 외부 스토리지 솔루션으로 사용됩니다. 이를 통해 Kubernetes 포드는 NFS 서버에서 호스팅되는 공유 스토리지 볼륨에 액세스할 수 있습니다. 이는 여러 Pod 간에 데이터를 공유하거나 개별 Pod의 수명 주기를 넘어 데이터를 유지해야 하는 시나리오에 유용합니다.1. NFS 서버를 쓰는 배경클러스터 내부 저장소에 마운트하면 컨테이너 생명주기와 클러스터 생명주기..
참고 사이트를 기반으로 하여 mysql를 배포하였습니다.기본적으로 data가 많다면 kubernetes안에 mysql을 배포하는 것이 좋지 않은 선택이다. 그렇지만 데이터가 많지 않고 insert하고 나중에 delete하는 작업을 반복한다면 안에 넣어 관리하는 것도 나쁘지 않다고 생각한다.1. 쿠버네티스 secret 만들기: 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. 이를 사용하지 않으면 중요한 정보가 파드 명세나 컨테이너 이미지에 포함될 수 있다.vi mysql-secret.yamlmysql의 secret파일을 만든다.apiVersion: v1kind: Secretmetadata: name: mysql-secrettype: kubernetes.io/basic-auths..
내 경우 참고 사이트에 있는 영상으로 해서 어떻게 ingress가 돌아가는지 파악하였다.쿠버네티스 ingress를 이용한 nginx 배포🪄 실습 환경master node 1개(192.168..16.10)worker node 1개(192.168..16.101)실습하기1) deployment, service 생성하기kubectl create deploy nginx --image=nginx이름이 nginx이고, 이미지는 nginx를 기반으로 생성해주었다.kubectl expose deploy nginx --type=NodePort --port=80 --target-port=80생성되어 있는 deployment nginx를 기반으로 하여 type은 Nodeport로 하고 port는 80으로 지정해준다.kube..
microk8s 생성하기내 경우 yum을 사용하여 기본적인 명령어를 설치하고는 했다. 그래서 snap이 설치되지 않았다. microk8s를 설치하려면 snap이 있어야 하기에 snap부터 설치해준다.snapd가 설치되어 있는지 확인하기 : 시스템에 snapd가 설치되어 있는지 확인한다.sudo yum install snapd이미 설치가 되어 다음 단계로 넘어갔다.2. snapd 서비스 시작하기 : snapd가 설치된 경우 snapd 서비스를 시작한다.sudo systemctl start snapd3. snapd 서비스 활성화 : 부팅 시 snapd 서비스가 시작되도록 활성화되어 있는지 확인한다.sudo systemctl start snapd4. snapd 상태 확인 : snapd 서비스의 상태를 확인하여..
반응형
Uheeking
'docker & Kubernetes' 카테고리의 글 목록 (2 Page)