공부방
search

초보공부
혼자 공부하고 메모하고
Today
Yesterday
쿠버네티스 => 도커들을 관리하기위해서 만듬
마스터 + 워크노드 => 클러스터
마스터 노트
kubectl : 클러스터에 명령을 내리는 역할, 바로 실행되는 명령 형태인 바이너리로 배포되기때문에 마스터노드에 있을 필요는 없다.통상적으로 api서버와 주로 통신하므로 여기선 api서버가 위치한 마스터노드에 구성했음
api서버 : 클러스터의 중심역할을 하는 통로
etcd : 구성 요소들의 상태값이 모두 저장되는 곳, 모든 상태를 기록하는 곳, 다른 구성요소는 상태값을 관리하지 않는다. etcd의 정보만 백업되어있다면 긴급한 장애상황에서도 클러스터는 복구할 수 있다.
분산 저장이 가능한 키 밸류 저장소이므로 복제해 여러곳에 저장해두면 하나의 etcd에서 장애가 나더라도 시스템의 가용성을 확보할 수 있다.
컨트롤러 매니저 : 클러스터의 오브젝트 상태를 관리, 예를들어 워커 노드에서 통신이 되지 않는 경우, 상태체크와 복구는 컨트롤러 매니저에 속한 노드 컨트롤러에서 이루어진다.
스케줄러 : 노드의 상태와 자원, 레이블, 요구 조건등을 고려해 파드(컨테이너)를 어떤 워커 노드에 생성할 것인지를 결정하고 할당한다.
생성명령을 내리면 알아서 만들어주는것, 나는 위치는 생각안하고 그냥 사용하기만하면됨
워커노드
kubelet : 파드의 구성 내용을 받아서 컨테이너 런타임으로 전달, 파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링 한다.
컨테이너 런타임 : 파드를 이루는 컨테이너의 실행을 담당, 파드 안에서 다양한 종류의 컨테이너가 문제 없이 작동하게 만드는 표준 인터페이스
파드 : 한개 이상의 컨테이너로 단일 목적의 일을 하기 위해서 모인 단위, 웹서버역할을 할 수도있고 로그나 데이터를 분석할 수도있다.
파드는 언제라도 죽을수있는존재
네트워크 플러그인(캘리코) :마스터와 워크노드(클러스트)의 통신을 위해서 구성
파드와 노드를 보는 명령어
설치 끝나면 인터널 ip에 호스트 네트워크 ip가 나오는지 확인할것
doredns : 도메인이름을 이용해 통신하는데 사용
이런식으로 사용할 수 있음
사용자가 배포된 파드에 접속할 때
kube-proxy : 파드가 위치한 노드에 쿠버프록시를 통해 파드가 통신할 수 있는 네트워크를 설정, 이때 실제 통신은 br_netfilter(br : 브릿지)와 iptables로 관리합니다.
파드 : 이미 배포된 파드에 접속하고 필요한 내용을 전달받음
적용하는데
오류가 나옴
쿠버네티스에서 사용할 수있는 모든 리소스에 대해 나옴
api버전이 적은것과 달라서 그럼
다시 여기로가서
수정한다
생성됨
kind => 내가 만들고싶어하는 쿠버네티스의 오브젝트
지울때 사용
만들때는 apply 지울때는 delete
일단 이름을 대충짓고
내용 저장
create 는 사용 불가
대신
팟이아닌 디플로이먼트를 만들때는 사용가능하다
확인해보니 상태가 imagepull이 나옴
=> 도커에 접속해서 하루에 사용할 수 있는 양이 다 되서 못함
삭제
버전 이름을 추가하니 작동한다
pod, replicaset, deployment 차이점
제일 하위가 pod
그위 replicaset
그위가 deployment임
pod 는 컨테이너를 관리하는 쿠버네티스의 가장 작은 오브젝트이다.
Deployment 는 클러스터의 컨트롤 도메인에 속하는 컨트롤러 중 하나로 레플레카셋을 관리하여 복제된 다수의 Pod 를 생성, 관리한다.
pod : 단일개체, 런으로 만들때 하나씩 만들어짐
레플리카셋 : 파드를 복제하여 생성
파드는 초코파이 한개, 디플로이먼트는 초코파이 박스 같은느낌
그안의 초코파이 갯수를 정하는게 레플리카셋
이건 팟으로 만든 단일개체라서 레플리카셋으로 복제를 못한다
이건 디플로이 안에있는 파드를 레플리카로 복제하는거라서 늘어나는것
=> 레플리카를 이용해서 디플로이 안에있는 파드를 조절할 수 있다.
원래라면 되야하는데
node2에서 에러가난다
3대를 돌리라고햇는데 두대만 돌아가는게 보임
디플로이먼트를 삭제하면
만들었던 파드역시 다 날라간다
디플로이먼트를 create하면서 레플리카스를 사용할 수는 없음
scale은 만들어져있는 상태에서만 조절할 수 있다.
한번에 여러개의 파드를 만들려면 필요한 내용을 파일로 작성해야하는데 이 파일을 오브젝트 스펙이라고한다
아까 만든 파일의 이름을 바꿔준다
만들기 전에 미리 있었던 nginx-pod를 지운다
pod를 새로 만들면
오류가 나온다
이미지 버전을 수정하고
파드를 삭제하고 바꾼 야믈파일로 새로 만들면
정상적으로ㅓ 진행해야하는데 안됨
일단 진행
한대가 오류가 났지만 3대가 돌아간다고 생각
레플리카스를 6으로 바꾸고 실행하면
이미 있다고 나옴
이 때 지우고 다시 만들지말고
apply를 이용하여 적용하면 6개로 늘어난다
만들었던 파드, 디플로이먼트를 지워준다
네임스페이스 : 논리적인 네트워크 네임스페이스(공간)을 만들고 라우팅, 가상IP 등 네트워크 구성요소를 조합하여 논리적으로 네트워크를 격리시킵니다. 네트워크를 논리적으로 격리시킴으로써 호스트 네트워크에 직접적인 영향을 최소화합니다.
chroot
리눅스 namespace 이해하기
본 글은 카카오 엔터프라이즈 글과 유튜브 영상을 보고 따라하며 단순히 정리한 글입니다. 개인적으로 다른 어떤 글보다 내부 원리를 이해하기 좋게 구성되어 있다고 생각하여 별도로 정리하게
velog.io
이거보고 이해하기
저장하고
ubuntu@k8s-master:~/sources/ch02/02_env$ kubectl apply -f hello-app.yaml
pod를 생성한다
ubuntu@k8s-master:~/sources/ch02/02_env$ kubectl get pod -o wide
만들어진게 확인되는데
ubuntu@k8s-master:~/sources/ch02/02_env$ curl -v localhost:8080
들어가지는게 확인된다
여기는 클러스터 내부라서 들어가지는데 윈도우는 외부라서 안들어가짐
외부에서 들어가려면 101로 들어가서 pod하고 클러스터와 연결이되어야함 => 포트포워딩이 되어야함