k8s logging and monitoring

Monitor Cluster Components 아직 모니터링을 위한 full featured built-in solution은 없는 상황이다. 오픈소스 모니터링 서비스로는 metrics server, prometheus 등이 있다. kubelet은 cAdvisor이라는 오브젝트를 내장하고 있고, 이는 pod의 metrics를 측정하는 데 사용된다. 얘를 raw data로 이쁘게 모니터링 제공하는 원리이다. metrics-server 켜고 kubectl top node Managing Application Logs kubectl logs -f {pod name} 한 pod 내 container가 하나면 위처럼 되지만, multiple container라면 이름을 명시하라는 오류를 리턴한다.

2022년 12월 12일
·
0개의 댓글
·

k8s scheduling (2)

Resource Requirements and Limits pod는 cpu / mem / disk를 사용한다. pod definition file에서 specify한대로 node에 배정된다. 1cpu == 1 AWS vCPU == 1 GCP Core == 1 Azure Core == 1 Hyperthread 기존 도커는 default 설정에서는 리소스에 제한이 없다. 하나가 커지면 다른 컨테이너 자리 잡아먹어서 suffocate한다. 반면, k8s는 default로 "1 vcpu, 512 mb"의 리소스 제한이 있다. cpu는 기준치 넘어가면 바로 차단하지만, mry는 기준치 넘어가도 사용 가능하다. 한 pod의 mry 제한을 다 쓰면 그때 터진다. 주의! 이 limit은 전부 node 내 pod 내 컨테이너 각각에 적용되는 것이다! https://kubernetes.io/docs/tasks/administer-cluster/manage-res

2022년 12월 12일
·
0개의 댓글
·

k8s scheduling (1)

Manual Scheduling 스케줄러가 없으면? 직접 해야지. nodeName이라는 필드가 pod 생성 시 자동으로 생긴다. 스케줄러는 nodeName이 기입되지 않은 pod들을 탐지해서, 얘네를 필요한 Node에 배정해준다. 스케줄러가 없으면? 직접 nodeName을 기입해주면 된다. BUT 사후 수정은 불가하다. 대신 binding obj를 생성해서 post 리퀘를 날리면 된다. 이때 binding ymal 파일을 json으로 바꿔 보내야 한다. Labels and Selectors k8s의 다양한 오브젝트들의 그루핑을 위한 것. (pod, rs, deployments …) metadata 아래에 key value 방식으로 추가 kubectl get pods —selector app=App1 replicaset의 경우, 그냥 metadata 내의 labels는 rs 자체. template 내 labels는 pods의 label.

2022년 12월 10일
·
0개의 댓글
·

k8s core concepts

CKA를 준비하며.. PODs containers are encapsulated in pods pod == smallest obj in kube 유저가 늘어나면 pod에 container를 추가하는게 아니라 container가 든 pod를 추가하는 방식이다. 그러다 node가 다 차면 새로운 node를 추가하고, 그 node 안에는 container가 든 pod 추가한다. single pod도 multi container를 가질 수 있다. 그러나 일반적이진 않다. → 같은 두 컨테이너를 띄우지는 않고, 하나는 메인 컨테이너, 하나는 헬퍼 컨테이너식으로. 이 경우 서로 스토리지 공유, 네트워크 공유가 쉽다. ReplicaSets Replication Controller는 multiple pod instance를 유지하도록 도와준다. pod가 하나여도 가능하다. HA를 위한 것. Replication Controller는 여러 node에 걸쳐

2022년 12월 10일
·
0개의 댓글
·