[Kubernetes] Service - ClusterIP
DevOps/Kubernetes2022. 5. 20. 21:50[Kubernetes] Service - ClusterIP

쿠버네티스의 네트워크 형태는 내부용 서비스, 외부 노출용 서비스, 특수한 형태(내부에서 외부로 나갈 때) 등이 있다. DB와 같이 외부로 노출되면 안되는 컨테이너는 어떻게 접근해야 할까 ? ✔️ Service - ClusterIP 쿠버네티스(클러스터) 내부에서만 사용 가능한 가상 IP를 가진 엔드포인트를 제공하는 로드밸런서 구성(L4) ClusterIP는 클러스터 내부에 새로운 IP를 할당하고 여러개의 파드를 바라보는 로드밸런서 기능을 제공한다. 그리고 서비스 이름을 내부 도메인 서버에 등록하여 파드 간에 서비스 이름으로 통신할 수 있다. 클러스터 내부에서만 접근할 수 있으며, 외부에서 접근이 불가능하므로 포트 포워딩이나 프록시를 통해 접근해야 한다. 서비스 타입을 별도로 지정하지 않으면 ClusterI..

[Kubernetes] Service & DNS (서비스와 DNS)
DevOps/Kubernetes2022. 5. 20. 15:54[Kubernetes] Service & DNS (서비스와 DNS)

✔️ Service & DNS 서비스 | Kubernetes 파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법 쿠버네티스는 파드에게 고유한 IP 주소와 파드 집합에 대한 단일 DNS 명을 부여하고, 그것들 간에 로드-밸런스를 수행할 수 있다. RS(ReplicaSet)을 만들고 복제본 개수를 3으로 하면 파드 3개가 만들어지고 파드마다 고유한 ip가 부여된다. 컨테이너가 여러개 있더라도 ip는 파드에 하나만 부여된다. 컨테이너의 개수와 상관없이 같은 ip를 갖는다. 컨테이너에서 web app을 실행하고 있다면 클라이언트 입장에서 누구를 어떻게 찾아가야 하는지 알 수 없다. 그래서 우리는 Service라는 리소스를 만들게 되며 Service 리소스는 각 파드와 연결된다. SVC(..

DevOps/Kubernetes2022. 5. 20. 15:37[Kubernetes] CronJob (크론잡)

✔️ CronJob 크론잡 | Kubernetes 크론잡은 반복 일정에 따라 잡을 만든다. 하나의 크론잡 오브젝트는 크론탭 (크론 테이블) 파일의 한 줄과 같다. 크론잡은 잡을 크론 형식으로 쓰여진 주어진 일정에 따라 주기적으로 동작시킨다. 크론잡은 비교적 최근에 stable 되었다. 1.8 버전부터 ~ 1.20 버전까지 베타버전이었다가 1.21 버전부터 stable 되었다. vagrant@k8s-node1  ~  kubectl api-versions batch/v1 batch/v1beta1 api-versions를 보면 아직 v1, v1beta1이 존재한다. CronJob을 1.8 ~ 1.20 버전까지는 yaml 파일 작성시 v1beta1을 사용해야 했다. 1.20 버전은 아직 많이 사용하는 버전이..

DevOps/Kubernetes2022. 5. 20. 15:22[Kubernetes] Job (잡)

✔️ Job Job에서 하나 이상의 파드를 생성하고 지정된 수의 파드가 성공적으로 종료될 때까지 계속해서 파드의 실행을 재시도한다. 파드가 성공적으로 완료되면, 성공적으로 완료된 잡을 추적한다. 지정된 수의 성공 완료에 도달하면, 작업(즉, 잡)이 완료된다. 잡을 삭제하면 잡이 생성한 파드가 정리된다. 작업을 일시 중지하면 작업이 다시 재개될 때까지 활성 파드가 삭제된다. ✔️ Job은 자동으로 레이블과 셀렉터를 설정한다. mypi.yaml apiVersion: batch/v1 kind: Job metadata: name: mypi spec: template: spec: containers: - image: perl name: mypi command: ["perl", "-Mbignum=bpi", "-wl..

DevOps/Kubernetes2022. 5. 20. 12:07[Kubernetes] Kubespray로 노드 추가/삭제하기

✔️ kubespray로 노드 추가/삭제하기 Kubespray - Deploy a Production Ready Kubernetes Cluster kubespray.io ✔️ 노드 제거 ansible-playbook -i inventory/mycluster/hosts.yml remove-node.yml -b -v \ --private-key=~/.ssh/private_key \ --extra-vars "node=nodename,nodename2" SSH key는 default key를 사용하고 있으면 설정할 필요가 없다. --extra-vars : 제거할 노드를 지정한다. 인벤토리에 있는 노드를 지정한다. 만약 노드가 SSH 연결이되지 않으면 reset_node = false 리셋을 skip한다. 리셋이..

[Kubernetes] DaemonSet (데몬셋)
DevOps/Kubernetes2022. 5. 20. 12:02[Kubernetes] DaemonSet (데몬셋)

✔️ DaemonSet 서비스, 데몬, 서비스 데몬 모두 같은 의미이며 Daemon이라는 것은 systemctl로 제어할 수 있고 systemd에 의해 제어되는 App이다. 백그라운드에서 실행하거나 stop 또는 시스템을 끄기 전까지 계속적으로 실행되는 App을 서비스 데몬이라고 한다. 계속적으로 실행하는 어플리케이션을 제어하는 것이 systemd이다. 데몬셋은 모든 노드 또는 일부 노드에 파드를 실행한다. 노드가 3개면 3개를 실행하고 노드가 10개면 10개를 실행한다. 우리가 데몬이라고 하는 형태를 생각해보면 지금까지 봤던 여러가지 어플리케이션의 형태도 데몬이라고 할 수 있지 않는가? 라고 생각해볼 수 있다. 아파치도 mysql도 모두 데몬이 아닌가 ? 실제로 백그라운드에서 계속적으로 실행하는 형태의..

image