Kubernetes

· Kubernetes
DaemonSet 파드의 복사본이 모든 노드에 하나씩 호스트되는 것을 보장한다. 사용사례: 모니터링 에이전트, 로깅 콜렉터 manifest 파일은 ReplicaSet과 매우 흡사하다.( Kind만 다름) spec.metadata.labels(파드의 라벨)과 spec.selector.matchLabels(데몬셋의 라벨 셀렉터)가 일치해야한다. apiVersion: apps/v1 kind: DaemonSet metadata: name: custom-daemon-set labels: spec: template: metadata: labels: app: daemon-set-app containers: - name: daemon-set-container image: nginx selector: matchLabel..
· Kubernetes
Resource Requirements & Limits 각 노드마다 자원 할당량이 있고, 각 파드는 필요한 자원 용량이 다르다. 스케쥴러는 파드를 배치할 때 파드가 필요로 하는 자원을 고려해 최적의 노드에 배치한다. 만약 모든 노드에서 새로운 파드가 필요로 하는 자원량을 충족하지 못하면 스케쥴러는 파드 배치를 멈추게 된다. 이 때 파드는 Pending 상태가 되고, 에러 메세지가 생성된다. (Insufficient cpu 등) Resources Request (파드 생성시 필요한 자원) apiVersion: v1 kind: Pod metadata: name: [pod-name] spec: containers: - name: [container-name] image: [image-name] ports: -..
· Kubernetes
Node Selectors 파드에 nodeSelector를 지정하기 위해서는 노드에 라벨링하는 작업이 우선되어야 한다. Cf. 노드에 라벨링하기 kubectl label node [node-name] [key]=[value] apiVersion: v1 kind: Pod metadata: name: [pod-name] spec: containers - name: [container-name] image: [container-image] nodeSelector: [key]: [value] 이후 파드 생성(apply -f) 노드 셀렉터는 복잡한 요구사항을 충족시키기 어려움(NOT, OR과 같은 조건 충족 불가) → Node Affinity 등장 Node Affinity 주목적은 특정 파드가 특정 노드에 호스트..
· Kubernetes
Manual Scheduling 파드가 Pending 상태인데, 별다른 이유 없이 Node: 이라면 kube-system namespace의 파드 목록을 조회해서 스케쥴러가 존재하는지 확인해보기(No scheduler presents.) 파드 생성시 spec.nodeName 필드를 정의해 직접 스케쥴링해줄 수 있다. 이미 실행중인 파드는 다른 노드로 이동시킬 수 없다. (.yaml 파일을 replace —force할 것) Taints & Tolerations 노드에 특정 파드가 수용되지 않게 함(특정 taint 대한 toleration을 가진 파드는 해당 노드가 아닌 다른 taint가 없는 모든 노드에 수용될 수 있음) master node에는 자동으로 taint가 존재해서 별도의 파드가 스케쥴링되는 것..
· Kubernetes
명령형 관리와 선언형 관리 명령형 create, replace, … 오브젝트 생성 혹은 수정시 이미 존재하는지 확인하는 과정이 동반되어야 하며, 이미 있는데 생성하려했거나 없는데 수정하려했을 경우 에러 메세지가 발생한다. 선언형 apply 오브젝트가 이미 존재하면 수정하고 없으면 새로 생성한다. Cf. 특정 경로에 있는 복수의 파일을 오브젝트로 생성하는 경우 -f 옵션 인자로 경로를 줄 수 있다. kubectl apply apply -f를 통해 오브젝트 생성시 세 개의 파일이 존재하게 된다. 세 파일을 통해 라이브 객체에 적용되어야하는 변경사항을 확인하고 결정할 수 있다. Local file(apply한 파일) Live Object config(status 필드에 실시간 상태가 저장됨) Last appl..
· Kubernetes
Object 선언적으로 추구하는 상태를 기술해둔 것 추구하는 상태와 현재 상태가 맞지 않으면 이를 맞추려고 함 edit 명령어를 통해 추구하는 상태를 변경할 수 있음(수정 시 즉시 이를 반영하려 하기 시작) 쿠버네티스 기본 오브젝트 파드, 서비스(노드포트, 로드밸런서 형태) 네임스페이스 볼륨(영속성 - 데이터 저장에 사용됨) NFS(Network File System) Volume을 생성하여 파드에 이를 마운트하는 경우 YAML(생성 및 수정) Top level property: apiVersion, kind, metadata, spec 오브젝트 생성 테스트 등에 사용할 수 있는 옵션 오브젝트를 실제로 생성하지는 않지만, 오브젝트 설정(manifest) 파일을 생성하는 경우 등 --dry-run=clie..
· Kubernetes
쿠버네티스 환경에 애플리케이션 배포하기(nginx) 여기서는 nginx 이미지를 이용하여 nginx라는 이름의 애플리케이션을 실행 kubectl run nginx —image=nginx 배포한 파드 조회(`-o wide` 옵션을 통해 IP까지 조회) kubectl get pod kubectl get pod -o wide 애플리케이션이 동작하는 IP로 접근해 데이터 조회 curl 172.16.103.129 외부에서 쿠버네티스 환경에 접근하기 기본적으로는 접근 불가. 이를 가능하게 하기 위해서는 Service를 이용해야 한다. Service 안전지대(like DMZ)같은 구역을 두고, 여기에 배포한 파드들이 존재하는 노드를 (node port를 통해) 연결해두면 서비스를 통해 들어와 노드(파드)로 연결 가능..
devYH
'Kubernetes' 카테고리의 글 목록 (2 Page)