쿠버네티스 5

kubernetes pod debugging 방법 5가지

kubernetes 를 사용하다보면 pod 를 debugging 할일이 있다. 일반적으로 application을 디버깅을 하기 위해서는 application이 실행되는 서버에 접속해서 로그를 확인거나, application의 api를 호출해야 한다. 그런데, kubernetes에서는 대부분의 pod들이 클러스터 내에서만 접속이 가능하기 때문에 외부에서 접속하거나, api를 호출할수 없는 경우가 상당수이다. 1. pod가 정상적으로 실행되지 않을때 - kubectl decribe kubectl describe po [pod 이름] pod가 실행되기전 에러가 발생한다면, describe 명령을 사용한다. pod가 왜 정상적으로 실행되지 않았는지 원인을 추정해볼수 있다. 마지막 출력내용을 보면 에러가 발생한 ..

IT/Kubernetes 2022.03.06

kubernetes woker node 장애가 발생한다면 kubelet 을 살펴보자

아래 그림은 kubernetes architecture 이다. 기본적으로 각 worker node(=Compute machines) 에는 kubelet과 kube-proxy가 존재하는데, 이중 kubelet에 대해서 좀더 자세히 살펴보자. kubelet 이란? 클러스터의 각 노드에서 실행되는 에이전트. Kubelet은 파드에서 컨테이너가 확실하게 동작하도록 관리한다. Kubelet은 다양한 메커니즘을 통해 제공된 파드 스펙(PodSpec)의 집합을 받아서 컨테이너가 해당 파드 스펙에 따라 건강하게 동작하는 것을 확실히 한다. Kubelet은 쿠버네티스를 통해 생성되지 않는 컨테이너는 관리하지 않는다. [출처] https://www.redhat.com/ko/topics/containers/kubernete..

IT/Kubernetes 2022.02.23

쿠버네티스 pod가 실행되는 node 선택하기 (feat. nodeName, taint, affinity, toleration)

pod를 특정 node에서 실행시시켜야 하는 경우가 있다. (GPU 등 특정 HW가 있는 node거나, node별로 용도가 구분되어 있는 경우) 이를 위한 쿠버네티스의 기능을 정리해봤다. 1. node 이름으로 선택하기 - NodeName apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx nodeName: kube-01 가장 단순한 방법이다. pod의 spec에 nodeName을 정의하면 해당 node에서 실행된다. 다만 nodeName과 일치하는 node가 없을 경우 자동으로 삭제되는 등 아래와 같은 제약이 있어서 잘 사용되지는 않는다. (실제로 잘못된 nodeName으로 pod를 스케줄링..

IT/Kubernetes 2022.01.20

쿠버네티스 cpu, memory 관리하기 (feat. 사용량 확인, limit, 리소스 모니터링)

pod가 실행되기 위해서는 cpu, memory 가 필요하며, 이는 pod가 실행되는 node의 리소스를 사용한다. 쿠버네티스는 각 pod가 얼만큼의 리소스(cpu, memory)가 필요한지에 따라, 실행될 node를 적절히 선택한다. 따라서 각 pod가 필요한 리소스를 적절하게 설정해줘야 효율적으로 node의 리소스를 활용할 수 있다. 여기서는 이처럼 pod가 필요한 리소스를 설정하고, 현재 사용되고 있는 리소스를 관리, 모니터링 할 수 있는 방법을 알아본다. 1. Pod가 필요한 cpu, 메모리 (Requests, Limits) pod의 spec.containers[].resources 에 아래와 같은 4개 정보를 설정해야 한다. requests와 limits 이라는 항목이 있으며, 각각 cpu, m..

IT/Kubernetes 2022.01.16

쿠버네티스 ReplicaSet 사용법 (scale, 삭제, pod 제외)

ReplicaSet 이란? 레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. [출처] https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicaset/ 쉽게 정리하면, 가용성의 위해 동일한 파드의 개수를 유지하는 기능이다. 예를 들어 A라는 pod의 개수를 3개로 유지하기로 설정했다면, Node가 다운되어 pod가 사라져도 다른 Node에 pod를 자동으로 생성해서 pod를 3개로 유지하고, 다른 운영자가 pod 를 실수로 지우거나 새로 생성하더라도 쿠버네티스 자체에서 pod의 개수가 3개가 되도록 지속적으로 유지한다. Re..

IT/Kubernetes 2022.01.15
반응형