PaaS 221

(Kubernetes) Upgrade Master And Worker Node

Master 노드의 버전이 Worker노드보다 높더라도 서비스는 정상적으로 진행된다. 그 이유는 하위 마이너3버전까지 호환하기 때문이다. 하지만 그 이후는 Support되지 않음으로 주의! 그리고 업그레이드를 할때는 1마이너 업그레이드로 순차적으로 해야 한다. 업그레이드순서 현재버전, 설치된 버전 확인 kubeadm version kubeadm upgrade plan 1. Master 노드 업그레이드 apt-get install kubeadm=1.19.0-00 kubeadm version kubeadm upgrade apply v1.19.0 apt-get install kubelet=1.19.0-00 2. Node 순차적으로 apt-get install kubeadm=1.19.0-00 kubeadm ve..

PaaS/Kubernetes 2021.03.28

(Kubernetes) Cordon And Drain

cordon - cordon은 특정 노드를 선택하여 스케줄 대상에서 제외 시킵니다. 간단한 deployment nginx 이미지를 생성해주는 매니페스트 파일을 작성 후 아래와 같이 cordon 명령을 실행하면 선택한 특정 노드가 SchedulingDisabled 상태가 되는것을 확인할 수 있습니다. 쿠버네티스 클러스터를 사용하다 보면 특정 노드에 있는 포드들을 모두 다른 곳으로 옮기거나 아니면 특정 노드에는 포드들이 스케쥴링 되지 않도록 제한을 걸어둘 필요가 있습니다. 이런한 기능들을 제공하는 명령어가 kubectl에 있습니다. cordon, drain, taint등이 그런 용도의 명령어 들입니다. uncordon 포드가 노드에 정상적으로 스케쥴링될 수 있게 하기 위해서는 uncordon을 해주면 됩니다..

PaaS/Kubernetes 2021.03.28

(Kubernetes) Containers And Volumes

POD와 Container 이렇게 Pod 안에 컨테이너들은 격리된 상태에서 독립적인 일을 수행할 수 있으면서 서로 네트워크 통신이 가능하다는 장점을 갖게 되었다. Init-Containers 이 페이지는 초기화 컨테이너에 대한 개요를 제공한다. 초기화 컨테이너는 파드의 앱 컨테이너들이 실행되기 전에 실행되는 특수한 컨테이너이며, 앱 이미지에는 없는 유틸리티 또는 설정 스크립트 등을 포함할 수 있다. 초기화 컨테이너는 containers 배열(앱 컨테이너를 기술하는)과 나란히 파드 스펙에 명시할 수 있다 파드는 앱들을 실행하는 다수의 컨테이너를 포함할 수 있고, 또한 앱 컨테이너 실행 전에 동작되는 하나 이상의 초기화 컨테이너도 포함할 수 있다. 다음의 경우를 제외하면, 초기화 컨테이너는 일반적인 컨테이너..

PaaS/Kubernetes 2021.03.27

(Kubernetes) Secret

쿠버네티스 시크릿을 사용하면 비밀번호, OAuth 토큰, ssh 키와 같은 민감한 정보를 저장하고 관리할 수 ​​있다. 기밀 정보를 시크릿에 저장하는 것이 파드(Pod) 정의나 컨테이너 이미지 내에 그대로 두는 것보다 안전하고 유연하다. 자세한 내용은 시크릿 디자인 문서를 참고한다. 시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. 그렇지 않으면 이러한 정보가 파드 명세나 이미지에 포함될 수 있다. 사용자는 시크릿을 만들 수 있고 시스템도 일부 시크릿을 만들 수 있다. 시크릿 개요 시크릿을 사용하려면, 파드가 시크릿을 참조해야 한다. 시크릿은 세 가지 방법으로 파드와 함께 사용할 수 있다. - 하나 이상의 컨테이너에 마운트된 볼륨 내의 파일로써 사용. - 컨테이너 환경 ..

PaaS/Kubernetes 2021.03.25

(Kubernetes) ConfigMap

컨피그맵은 키-값 쌍으로 기밀이 아닌 데이터를 저장하는 데 사용하는 API 오브젝트이다. 파드는 볼륨에서 환경 변수, 커맨드-라인 인수 또는 구성 파일로 컨피그맵을 사용할 수 있다. 컨피그맵을 사용하면 컨테이너 이미지에서 환경별 구성을 분리하여, 애플리케이션을 쉽게 이식할 수 있다. POD를 생성할때 env로 환경변수를 줄 수 있는데, 이것을 Property처럼 쉽게 가져다가 쓰게끔하는 데이터베이스이다.

PaaS/Kubernetes 2021.03.25

(Kubernetes) Command And Argument

컨테이너를 위한 커맨드와 인자 정의하기 파드를 생성할 때, 파드 안에서 동작하는 컨테이너를 위한 커맨드와 인자를 정의할 수 있다. 커맨드를 정의하기 위해서는, 파드 안에서 실행되는 컨테이너에 command 필드를 포함시킨다. 커맨드에 대한 인자를 정의하기 위해서는, 구성 파일에 args 필드를 포함시킨다. 정의한 커맨드와 인자들은 파드가 생성되고 난 이후에는 변경될 수 없다. 구성 파일 안에서 정의하는 커맨드와 인자들은 컨테이너 이미지가 제공하는 기본 커맨드와 인자들보다 우선시 된다. 만약 인자들을 정의하고 커맨드를 정의하지 않는다면, 기본 커맨드가 새로운 인자와 함께 사용된다. ※ The Definition of Command (entry-point) is overwritten by Definition..

PaaS/Kubernetes 2021.03.24

(Kubernetes) Rollout

디플로이먼트의 파드 템플릿(즉, .spec.template)이 변경된 경우에만 디플로이먼트의 롤아웃이 트리거(trigger) 된다. 예를 들면 템플릿의 레이블이나 컨테이너 이미지가 업데이트된 경우이다. 디플로이먼트의 스케일링과 같은 다른 업데이트는 롤아웃을 트리거하지 말아야 한다. Deployment Strategy recreate : 기존 POD 모두 shutdown > 일괄 업그레이드 rolling update : 하나씩 shutdown > 업그레이드 롤오버(일명 인-플라이트 다중 업데이트) 디플로이먼트 컨트롤러는 각 시간마다 새로운 디플로이먼트에서 레플리카셋이 의도한 파드를 생성하고 띄우는 것을 주시한다. 만약 디플로이먼트가 업데이트되면, 기존 레플리카셋에서 .spec.selector 레이블과 일치..

PaaS/Kubernetes 2021.03.24

(Kubernetes) Monitoring

Metrics API를 사용하면 유용한 정보들을 볼 수 있다. kubectl top nodes kubectl top pods Metrics Server 구축 minikube : minikube addons enable metrics-server 그 외 : git clone https://github.com/kubernetes-incubator/metrics-server.git 에서 받은 YAML 실행 Metrics Server metrics-server는 클러스터 상의 모든 노드를 발견하고 각 노드의 Kubelet에 CPU와 메모리 사용량을 질의한다. Kubelet은 쿠버네티스 마스터와 노드 간의 다리 역할을 해서 머신에서 구동되는 파드와 컨테이너를 관리한다. Kubelet은 각각의 파드를 해당하는 컨테..

PaaS/Kubernetes 2021.03.23

(Kubernetes) Scheduler

새로 생성된 모든 파드 또는 예약되지 않은 다른 파드에 대해 kube-scheduler는 실행할 최적의 노드를 선택한다. 그러나 파드의 모든 컨테이너에는 리소스에 대한 요구사항이 다르며 모든 파드에도 요구사항이 다르다. 따라서 기존 노드들은 특정 스케줄링 요구사항에 따라 필터링 되어야 한다. 클러스터에서 파드에 대한 스케줄링 요구사항을 충족하는 노드를 실행 가능한(feasible) 노드라고 한다. 적합한 노드가 없으면 스케줄러가 배치할 수 있을 때까지 파드가 스케줄 되지 않은 상태로 유지된다. 스케줄러는 파드가 실행 가능한 노드를 찾은 다음 실행 가능한 노드의 점수를 측정하는 기능 셋을 수행하고 실행 가능한 노드 중에서 가장 높은 점수를 가진 노드를 선택하여 파드를 실행한다. 그런 다음 스케줄러는 바인딩..

PaaS/Kubernetes 2021.03.23

(Kubernetes) DeamonSet And StaticPod

데몬셋 데몬셋 은 모든(또는 일부) 노드가 파드의 사본을 실행하도록 한다. 노드가 클러스터에 추가되면 파드도 추가된다. 노드가 클러스터에서 제거되면 해당 파드는 가비지(garbage)로 수집된다. 데몬셋을 삭제하면 데몬셋이 생성한 파드들이 정리된다. 데몬셋의 일부 대표적인 용도는 다음과 같다. 모든 노드에서 클러스터 스토리지 데몬 실행 모든 노드에서 로그 수집 데몬 실행 모든 노드에서 노드 모니터링 데몬 실행 단순한 케이스에서는, 각 데몬 유형의 처리를 위해서 모든 노드를 커버하는 하나의 데몬셋이 사용된다. 더 복잡한 구성에서는 단일 유형의 데몬에 여러 데몬셋을 사용할 수 있지만, 각기 다른 하드웨어 유형에 따라 서로 다른 플래그, 메모리, CPU 요구가 달라진다. DaemonSet을 Create하려면 ..

PaaS/Kubernetes 2021.03.22