본문 바로가기

컨테이너/Kubernetes

(23)
[Kubernetes] (17). DaemonSets 데몬셋 DaemonSet는 노드에 1개씩 POD가 배포되는 워크로드이다. RC나 RS에 의해서 관리되는 Pod 는 여러 노드의 상황에 따라서 일반적으로 비균등적으로 배포가 되지만, DS에 의해 관리되는 Pod는 모든 노드에 균등하게 하나씩만 배포 된다. 이런 형태의 워크로드는 서버의 모니터링이나 로그 수집 용도로 많이 사용되는데, DS의 다른 특징중 하나는, 특정 Node들에만 Pod가 하나씩만 배포 되도록 설정이 가능하다. 앞에서 언급한 로그나 모니터링 시나리오에서 특정 장비에 대한 모니터링을 하고자 할 때 이런 시나리오가 유효하다. 예를 들어 특정 장비(노드)에만 Nvme SSD를 사용하거나 GPU를 사용할 경우에는 그 장비가 설치된 노드만을 모니터링하면 된다. 출처: https://bcho.tist..
[Kubernetes] (15). Node Affinity / Pod Affinity Node Affinity label을 통해서 특정 노드에 pod가 스케쥴링 될수 있도록 주는 옵션이다. 조건에 따라서 조금 더 유연한 스케쥴링이 가능하며, 더불어서 운영중에 변경값이 적용되면 무시할지 아니면 재기동 시킬지를 결정한다. node에 라벨링을 해준후에, node Affinity 룰을 통해서 해당 노드에 배포가 될수 있게 스케쥴링 합니다. $ kubectl label nodes node1 disktype=ssd ## 다음과 같이 노드에 라벨링을 해준다. $ kubectl get nodes --show-labels ## 다음과 같이 노드에 라벨링이 된지 확인한다. 노드 어피니티를 통해서 특정 노드에 pod가 스케쥴링 될수 있게 하는 configuration file 이다. apiVersion: v..
[Kubernetes] (14) Taints and Tolerations Node Affinity는 파드의 속성이다. Taints는 그 반대로, 노드의 속성이다. Toleration은 파드에 속성이며, 파드를 일치하는 테인트가 있는 노드에 스케줄되게 하지만 필수는 아니다. 테인트와 톨러레이션은 함께 작동하여 파드가 부적절한 노드에 스케줄되지 않게 한다. 하나 이상의 테인트가 노드에 적용된다. 이것은 노드가 테인트를 용인하지 않는 파드를 수용해서는 안 되는 것을 나타낸다 테인트를 확인하려면 노드를 describe 해보면 된다. # kubectl describe node node01 # kubectl describe node controlplane | grep -i taint # grep으로 해당 단어의 LINE만 출력 테인트 (예제) # 선언형 Declarative # kube..
[Kubernetes] (13) Lables & Selectors 레이블이란? 실제 애플리케이션을 배포할때 대부분의 사용자는 수백개의 파드를 실행시킨다. 파드를 정리하는 메커니즘이 없다면, 파드를 관리하기 굉장히 어려울것이고, 난장판이 될 가능성이 높다. 마이크로 서비스를 구현하는것이 쿠버네티스의 가장큰 장점이라고 하기 때문에, 파드를 정리하고 구분짓는 메커니즘은 꽤 많이 존재하는데, 그중 레이블은 파드와 기타 다른 쿠버네티스 오브젝트의 조직화를 이루게 해준다. # 레이블의 소개: 레이블은 키-값을 쌍으로, 이 쌍들은 레이블 셀렉터를 사용해 리소스를 선택할때 사용된다. 1. Label 생성 node의 label을 확인할떄는 # kubectl get nodes --show-labels node에 label을 생성할때에는 # kubectl label nodes diskty..
[Kubernetes] (12) Scheduling 개요 스케쥴링은 pod를 어떤 노드위에 배포할까에 대한 기술이나 , 리소스에 대한 제약조건 , 모든 노드에 복제 pod를 항상 실행시키는 Daemonset, 컨트롤 플레인 노드가 아니라 kubelet이 관리하는 Static Pod 등 이러한 개념들에 대한 이야기야. 우선 가장 처음, 어떤 노드위에 pod를 배포할까에 대한 기술을 이야기 해볼까? 제일 많이 쓰는건 Label & Node Selector와 Taint & Toleration 이지 않을까 싶어. 그 아래에 이런것들도 있긴 한데 많이 쓰지는 않는것 같아. node Affinity rule , anti Affinity rule pod topology spread rule nodeName Assigning Pods to Nodes You can const..
[Kubernetes] (10) replicaset / replica컨트롤러 레플리카셋은 일정 개수의 포드를 유지하는 kubernetes 컨트롤러이다. 레플리카셋을 사용하는 이유: 1.고가용성(HA) = 정해진 수의 동일한 포드가 항상 실행되도록 관리합니다. = 노드 장애 등의 이유로 포드를 사용할수 없다면 다른 노드에서 포드를 다시 생성합니다. 2. 로드밸런싱(LoadBalancer) = 사용자의 증가로 인한 Traffic 분산 3. 자동 스케일링(Scaling) = 클러스터 내 Pod를 더 배포함 Replication Controller Replicaset Old skill Alternative Skill [ 레플리카 컨트롤러 / 레플리카 셋 ]의 차이점을 yaml 배포방법을 보면서 설명한다. 레플리카 컨트롤러 생성하기 1. spec 섹션에는 우리가 만들려는 생성물의 안에 어..
[Kubernetes] (9) Pod Pod에 대해서 이해하기 전에, 우리는 어플리케이션이 이미 개발이 되어있고, 그리고 도커 이미지와 이를 활용할수 있는 도커 repository가 준비가 되있다고 가정하겠다. 그래서 kubernetes 클러스터가 도커 이미지 파일을 땡겨갈수 있어야 한다. Pod란 무엇일까? 쿠버네티스 object중 가장 최소 단위이다. 이 Pod를 쿠버네티스 클러스터 안에 생성할수 있다. 하나의 Pod안에는 여러개의 컨테이너가 만들어질수도, 한개의 컨테이너가 만들어 질수도 있다. 그러나 kubernetes.io 공식 홈페이지에 따르면, 멀티-pod 컨테이너는 드문 케이스이다. 즉 한개의 pod안에는 한개의 container을 생성하는것이 적당하다. 이제 pod가 배포되는 과정에 대해서 살펴보자. kubectl = 즉 쿠바..
[Kubernetes](8) kubeadm으로 k8s 구성(2) 다음은 k8s 클러스터에 대한 개념정리입니다. 지난시간에 Master노드에 kube admin을 통해서 컨트롤 플레인 설치를 완료했다. etcd api server controller-manager scheduler 그 후 , kubeadm init 시행 --> 컨트롤 플레인 (마스터 노드 실행) [워커노드에서 실행] kubeadm join 172.15.0.158:6443 --token htahde.26hi3ewr2z86zm17 \ --discovery-token-ca-cert-hash sha256:9fa019cf326f6d503ea033321758cd3a7361330bfd35c0324cc34eece31c641a ## 다음과 같은 에러가 날때, 권한을 정리해줘야 한다. export 명령어 => 환경 변수..