⭐ Kubernetes & EKS/Kubernetes (쿠버네티스) (28) 썸네일형 리스트형 nodes are available: 1 Too many pods. 가끔 pod를 실행 후 위와 같이 나오는 경우가 있다. AWS의 인스턴스들은 각 타입별로 pod 생성 갯수를 제한하고 있다. 원인은 해당 인스턴스에 pod 생성 갯수를 초과해서 이다. 안쓰는 pod를 제거 후 다시 실행하면 정상적으로 동작 한다. # 아래는 AWS 인스턴스 타입별로 생성가능한 pod를 정리해놓은 사이트이다. https://github.com/awslabs/amazon-eks-ami/blob/master/files/eni-max-pods.txt GitHub - awslabs/amazon-eks-ami: Packer configuration for building a custom EKS AMI Packer configuration for building a custom EKS AMI - Gi.. 쿠버네티스 Basic Architecture, 기본 아키텍처 # 쿠버네티스의 기본 아키텍처와 서비스에 대해서 알아보자. - 쿠버네티스의 기본 구성은 pod, 레플리카셋, 디플로이먼트, 서비스(클러스터IP, 노드포트, 로드밸런서), Ingress - pod : Pod 는 쿠버네티스에서 가장 기본적인 배포 단위로, 컨테이너를 포함하는 단위이다. 쿠버네티스의 특징중의 하나는 컨테이너를 개별적으로 하나씩 배포하는 것이 아니라 Pod 라는 단위로 배포하는데, Pod는 하나 이상의 컨테이너를 포함한다. - ReplicaSet : 레플리카셋이란? 쿠버네티스에서 가장 유명한 특징중 하나는 "pod이 죽었을때 다시 복구해준다" 입니다. pod을 복구해주는 resource는 대표적으로 레플리케이션 컨트롤러(replication-controller)와 레플리카셋(replicaset).. 쿠버네티스 alias 기능 활성화 # alias 기능을 활성화 하여 조회 시 명령어를 줄여보자 우리는 항상 node를 조회하거나 pod를 조회시 kubectl get nodes 및 kubectl get pod등의 명령어를 사용하여 조회를 수행하였다. 하지만 항상 kubectl 이라는 기본 명령어를 치기가 너무 귀찮아 질때가 있다. 리눅스에서도 존재하는 alias 기능을 활성화 하고 간단하게 조회하는 방법에 대해서 알아보자. ec2-user:~/environment $ echo "source 쿠버네테스 api 버전 종류 쿠버네티스 apiVersion 설명 v1 쿠버네티스에서 발행한 첫 stable release API (대부분의 api가 포함되어 있음) apps/v1 쿠버네티스의 common API 모음, Deployment, RollingUpdate, ReplicaSet을 포함 autoscaling/v1 pod의 autoscale 기능을 포함하는 API, 현재는 CPU metric을 사용한 scaling만 가능 (추후에 alpha, beta version에서 memory, custom metric으로 scaling 기능 추가예정) batch/v1 배치 프로세스, job-like task를 위한 배포 api batch/v1beta1 batch/v1에서 cronJob으로 job을 돌리는 api가 추가 certivicate.. 쿠버네티스 Create VS Apply 차이점 쿠버네티스 공부를 하던 중 Pod을 생성할 때 명령어가 두 가지가 존재하여, 무엇이 차이가 있는지 찾아보았습니다. command 리소스가 존재하지 않을 경우 리소스가 이미 존재할 경우 create 새로운 리소스가 생성됩니다. ERROR가 발생합니다. apply 새로운 리소스가 생성됩니다. 리소스를 구성합니다. (부분적인 spec을 적용합니다.) replace ERROR가 발생합니다. 리소스가 삭제된 뒤 새롭게 생성됩니다. create VS apply create 명령은 각 리소스의 구성이 그 구성파일 내에 완전하게 정의되고 기록된 경우 잘 작동합니다. 하지만 리소스가 업데이트 되고, 업데이트 내용이 구성파일 안에 병합되지 않으면, 업데이트 내용은 다음 replace가 될 때 삭제됩니다. 동일 리소스에 대.. 수동 스케줄링 (원하는 노드에 배치) # # 수동 스케줄링 - 수동으로 pod를 원하는 node에 수동으로 배치하기 vim http-go.yaml apiVersion: v1 kind: Pod metadata: name: http-go spec: containers: - name: http-go image: busybox nodeName: work1 kubectl create -f http-go.yaml * 만약 error: unable to recognize "http-go.yaml": no matches for kind "Pod" in version "apps/v1" 에러가 발생한다면 yaml 파일의 상단의 버전정보를 apiVersion: apps/v1 > apiVersion: v1 변경하여 주면 된다. # 실행된 pod 확인하기 kubect.. Static pod (스태틱 pod)에 대해서 알아보자 # 스태틱 포드 - 자동으로 실행하는 포드 - 기본 경로 : /etc/kubernetes/manifests/ - 해당 경로에 파일을 배치해 놓으면 알아서 실행한다. # 포드생성 cd /etc/kubernetes/manifests/ vim http-go.yaml apiVersion: apps/v1 kind: Pod metadata: name: http-go spec: containers: - name: http-go image: busybox kubelet에 의해 실행이 된다. kubectl create -f http-go.yaml - kubectl create -f http-go.yaml 이 명령어를 실행하지 않아도 pod가 실행이 된것을 확인 할 수 있다. kubectl get pod -n kube-s.. 노드마다 포드를 하나씩 배치하는 방법 # 데몬셋, 노드마다 포드를 하나씩 배치하는 방법 - 백그라운드에서 실행되는 프로세스를 데몬셋 이라고 한다. - 노드에 설치되어 데이터를 제공하기 위해 설치 - 쿠버네티스 용어 사전 : 데몬셋 - 데몬셋(DaemonSet)은 파드 복제본을 클러스터 노드 집합에서 동작하게 한다. (백그라운드에서 실행한다는 의미? 노드 아래의 백그라운드에서 실행되는 프로세스 인거 같다.) 일반적으로 모든 노드에서 실행돼야 하는 로그 수집기 및 모니터링 에이전트 등의 시스템 데몬을 배포하기 위해서 사용된다. # 연습문제 쿠버네티스 공식사이트 > 데몬셋 > kind: vim http-go-ds.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: http-go spec: sele.. 이전 1 2 3 4 다음