공부하고 기록하는, 경제학과 출신 개발자의 노트

kubernetes 40

Kubernetes Deep Dive - (6). Network

K8s Network pod끼리 통신은 어떻게 할 것인가? 에 관련된 문제들. Network Implementation으로 여러 종류가 있지만, kubeadm을 사용한다면 Calico가 가장 적절함. 기본적인 규칙 모든 pod는 Network Address Translation (NAT) 없이 다른 Pod과 통신이 가능해야 한다. (어느 node에서 동작하건 상관없이) IP / DNS 또는 localhost로 접근이 가능해야 함 같은 Single Cluster 내부에 있다면, 어느 노드에 있는 pod이라 해도 IP주소나 local DNS로 서로 통신이 가능하다. CNI Plugins k8s의 Network Implementation을 제공하는 여러 plugin 중 하나. k8s 공식문서에서 cluster..

Kubernetes Deep Dive - (5). Deployment

Scaling Application in k8s Application scalability : 애플리케이션의 트래픽이 증가할 때 / 감소할 때 유연하게 대처할 수 있는 능력 Stateless App : 클라이언트 데이터를 서버에서 세션 단위로 저장하지 않는 애플리케이션. Horizontal Scale에 유리한 구조 (Pod 개수를 늘려서 트래픽에 대응할 수 있음) Stateful App : 클라이언트 데이터를 서버에 저장하고, 서버의 interal state가 로직에 필요한 형태. K8s에서는 ReplicationController를 사용해서 pod의 개수를 조절함. ReplicationController의 형태 apiVersion: v1 kind: ReplicationController metadata..

Kubernetes Deep Dive - (4). Pods and Containers

Pods / Containers in k8s Manage Application Configuration in k8s 일반적으로 Application의 Config는 Dynamical하게 관리되는 경우가 많음. k8s의 경우 runtime 시점에서 config을 자유롭게 변경해서 적용할 수 있도록 지원하고 있다. Non-sensitive : 토큰이나 auth key 등 confidential을 제외한 데이터들 ConfigMap과 pods / containers는 M:N 관계. 숫자나 범위 제한 없이 자유롭게 매핑이 가능하다. secret 파일 생성에 쓰인 username.txt와 password.txt는 secret을 생성한 뒤에는 서버에서 삭제해도 된다. Secret 객체가 encoded username..

Kubernetes Deep Dive - (3). Object Management

k8s Object Management kubectl get kubectl describe kubectl create kubectl apply kubectl delete kubectl exec : docker exec와 비슷하게 쓰인다고 보면 됨. create와 apply의 차이? 이미 존재하는 Object일 경우 create로 명령어를 실행하면 에러 리턴, apply는 해당 object를 수정함. Rule Based Access Management (RBAC) Role: 특정 namespace를 기반으로 Role 설정 ClusterRole : namespace 관계없이 클러스터 기준으로 Role 설정. 생성한 Role을 사용자 (User)와 Bind하는 객체가 존재한다. Role과 User는 M:N 매..

Kubernetes Deep Dive - (2). Cluster Management

k8s High Availability (availability in Cluster) k8s 자체가 high availability를 달성하기 위해 만들어진 SW. Application Availability와 Cluster Availability는 별도의 개념(aspect)이다. Cluster의 Availability는 infra 레벨이므로, infra (that application is executing) Availability is important in production environment. k8s는 High Availability를 위해 multiple control plane 구조를 사용한다. 즉 multi-master, multi-worker Topology로 되어 있다. Multipl..

Kubernetes Deep Dive - (1). 구성요소

Why Kubernetes Docker Container의 Orchestration Tool 컨테이너화된 애플리케이션을 배포하는 등, manage 작업을 자동화할 수 있는 오픈소스 도구 주어진 제약조건에 맞게 컨테이너를 클러스터 노드에 배포하는 것 Health Check + Healing. 특정 노드에 문제가 있을 경우 자동으로 조치 rolling updates / rollbacks. 서비스 downtime 없이 배포가 가능하며, 문제 있을 경우 롤백도 용이함 storage 시스템을 붙이기도 편리하며 Secret 관리도 지원함. Architecture of Kubernetes 기본적으로는 Master - Slave 아키텍처. Master Node: Cluster Management의 핵심이자, admin..

K8s-Native Serverless Framework - kubeless 정리

cf. kubeless는 2021년 12월을 끝으로 maintain이 종료되었다. 아무도 관리하지 않는 오픈소스라는 의미. 프로젝트 경로도 vmware-archive로 이동된 것을 확인할 수 있다. https://github.com/kubeless/kubeless GitHub - vmware-archive/kubeless: Kubernetes Native Serverless Framework Kubernetes Native Serverless Framework. Contribute to vmware-archive/kubeless development by creating an account on GitHub. github.com 혹시라도 이 포스트를 검색해서 들어왔다면, kubeless라는 프레임워크보다..

KubeCon 2018 - Rightsize Your Pods with Vertical Pod Autoscaling

https://youtu.be/Y4vnYaqhS74?si=gMsGSJ4ruJawJJPd Beata Skiba. Software Engineer @ Google, working on Kubernetes Autoscaling발표자료: https://kccna18.sched.com/event/GrYe/rightsize-your-pods-with-vertical-pod-autoscaling-beata-skiba-google k8s 리소스 배포하는 방법은 아주 쉽다. resource request를 정의하면 됨.그런데 적절한 request 수치는 어느 정도인가? resource request는 k8s scheduler와 workload 간 일종의 '계약'이다.workload는 resource request만큼을 ..

IBM Kubernetes Cluster에 SpringBoot Application 구동 실습하기 - 2. deploy

[IBM Clouders - Indigo Blue 포스트] IBM Cloud에서는 신용카드를 등록한 Pay-go 계정이 있으면 무료 Kubernetes Cluster를 생성할 수 있다. 한 개의 클러스터를 생성할 수 있고, 30일이 지나면 자동으로 삭제되기 때문에 과금 염려도 없다. Kubernetes 환경을 가볍게 실습할 수 있는 조건이다. SpringBoot로 생성한 자바 웹 어플리케이션을 Kubernetes Cluster에 구동하는 실습을 해 보았다. DockerFile을 생성한 경로에 Kubernetes에 Deploy하기 위한 yaml파일 Deployment.yaml을 생성한다. apiVersion: apps/v1 kind: Deployment metadata: name: app-h2db labe..

IBM Kubernetes Cluster에 SpringBoot Application 구동 실습하기 - 1. dockerizing and 환경설정

[IBM Clouders - Indigo Blue 포스트] IBM Cloud에서는 신용카드를 등록한 Pay-go 계정이 있으면 무료 Kubernetes Cluster를 생성할 수 있다. 한 개의 클러스터를 생성할 수 있고, 30일이 지나면 자동으로 삭제되기 때문에 과금 염려도 없다. Kubernetes 환경을 가볍게 실습할 수 있는 조건이다. SpringBoot로 생성한 자바 웹 어플리케이션을 Kubernetes Cluster에 구동하는 실습을 해 보았다. 생성한 스프링부트 프로젝트는 www.edwith.org/boostcourse-web/joinLectures/12943 [부스트코스] 웹 프로그래밍 강좌소개 : edwith - 부스트코스 www.edwith.org 에서 확인할 수 있는 실습 예제를 직접..