
Kubernetes Storage Kubernetes 저장 공간은 쿠버네티스 어플리케이션이 스토리지를 요청하고 사용할 수 있는 방법을 제공한다. Pod는 컨테이너가 종료되면 컨테이너 내부의 데이터는 사라진다. 이 데이터를 영속적으로 보관할 수 있는 방법이 필요하며 이때 Persistent Volume에 저장할 수 있다. image from : https://amazic.com/kubernetes-storage-101-all-you-need-to-know-to-get-started/ Persistent Volume (PV) 클러스터 레벨의 리소스이다. 클러스터 관리자 혹은 외부 프로비저너에 의해서 생성되거나, 스토리지 클래스를 사용하여 동적으로 프로비저닝 된다. 노드가 클러스터 리소스인 것처럼 클러스터의 ..

Kubernetes Scheduler Scheduler 란? 스케줄러는 쿠버네티스에서 kubelet이 파드를 실행할 수 있도록 파드를 노드에 할당하는 역할을 수행한다. kube-scheduler는 쿠버네티스의 기본 스케줄러, 컨트롤 플레인의 일부로 실행 필요한경우 커스텀 스케줄러를 사용할 수 있다. 새로 생성된 모든 파드에 대해서 kube-schedluer는 최적의 노드를 선택한다. 스케줄시 고려사항 개별 및 집단 리소스 요구사항 하드웨어/소프트웨어 어피니티/안티어피니티 테인트/톨러레이션 데이터 지역성 워크로드 간섭 Scheduler 기본 동작 방식 스케줄러의 기본 동작 방식은 아래와 같다. image from: https://k21academy.com/docker-kubernetes/scheduling..
Local 에서 MariaDB StatefulSet 컨테이너 실행하기 Local에서 데이터베이스를 Container로 실행하는 경우가 자주 발생한다. DataBase 는 pod가 재실행 되더라도 항상 고정된 볼륨으로 데이터를 저장하고 있어야한다. 이때 주로 사용하는 것이 StatefulSet 이다. 우리는 여기서 StatefulSet을 생성하고, MariaDB를 로컬 환경에서 실행해 볼 것이다. Namespace 생성하기 우리는 storage라는 namespace를 생성하고, mariadb를 실행할 것이다. namespace definition 은 다음과 같다. apiVersion: v1 kind: Namespace metadata: name: storage StorageClass 생성하기 저장해야할 스..

Kubernetes apiVersion 알아보기 kubernetes manifest 를 작성할때 구성은 다음과 같다. apiVersion: kind: metadata: sepc: 위 내용과 같은 구조에서 apiVersion 을 통해서 생성하길 원하는 객체가 배포되는 버젼을 지정하게 된다. Overview apiVersion apiVersion 릴리즈 버젼 releaseVersiondesc alpha Kubernetes에 앞으로 생성될 기능의 초기 후보를 의미한다. 버그를 포함할 수 있고 beta 알파를 통과한 기능이며 Kubernetes에 포함될 예정인 기능이라는 것을 의미한다. stable alpha나 beta등의 prefix가 붙지 않으며 안정화된 버젼의 기능을 의미한다. apiVersion 그룹 알..

ArgoCD 사용하기. 사전 확인하기. 우선 Kubernetes 가 설치되고, kubectl 을 이용할 수 있는지 우선 확인하자. kubectl cluster-info Kubernetes master is running at https://172.16.10.100:6443 KubeDNS is running at https://172.16.10.100:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. 필자의 경우 로컬에 VM을 이용하여 multer master kubernetes cluster 를 우선..

간단한 웹 프로그래밍 개발 및 DockerHub 업로드 이제는 간단한 Hello World 웹 어플리케이션을 만들어 보자. 우리 예제는 go gin 을 이용하여 개발해 볼 것이다. go module 설치 go mod init com.github.schooldevops.go.gin go: creating new go.mod: module com.github.schooldevops.go.gin Gin 의존성 가져오기 go get -u github.com/gin-gonic/gin ... 위와 같이 필요한 모듈을 가져왔다. 간단한 샘플 작성하기. main.go 파일을 열어 다음 내용을 추가한다. package main import ( "bufio" "net/http" "os" "strings" "github.c..

ArgoCD 디플로이 이제는 ArgoCD 를 이용하여 kubernetes 에 배포를 수행할 것이다. 그러기 위해서는 기본적으로 2가지 작업을 수행해 주어야한다. Deployment: Kubernetes 에 어플리케이션을 배포하기 위해서는 Deployment 를 통해서 배포를 수행하게 된다. 버전관리 등 다양한 이점이 있다. Service: Service 는 외부 접속을 위한 연결 정의를 수행하는 매니페스트이다. Deployment 작성하기. greetweb-deploy.yml 파일을 다음과 같이 작성한다. apiVersion: apps/v1 kind: Deployment metadata: labels: app: greet name: greet spec: replicas: 2 selector: matchL..
POD 실습하기. 현재 기본 네임스페이스의 pod 목록 보기. kubectl get pods nginx pod 실행하기. kubectl run nginx --image=nginx nginx pod/nginx created 현재 수행하는 pod 상세 정보 보기. kubectl describe pod newpods-1234 Name: newpods-1234 Namespace: default Priority: 0 Node: node01/172.17.0.26 Start Time: Wed, 10 Mar 2021 04:46:05 +0000 Labels: tier=busybox Annotations: Status: Running IP: 10.244.1.3 IPs: IP: 10.244.1.3 Controlled By:..
ReplicaSet 살펴보기 리플리카 셋이 없는경우 kubectl get rs No resources found in default namespace. 리플리카 셋이 있는경우 kubectl get rs NAME DESIRED CURRENT READY AGE replica-set 4 4 0 25s DESIRED: 원하는 POD의 개수 CURRENT: 현재 존재하는 POD의 개수 READY: 운영 상태가 된 POD수 (위 상태를 보면 현재 요청한 POD와 현재 POD는 4개이나, 정상적으로 서비스 되는 것은 0개이다.) 리플리카 셋 상세보기. kubectl get rs -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR replica-set ..
Deployment 살펴보기 Deployment 확인하기. kubectl get deploy or kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE my-deployment 0/4 4 0 7s Deoloyment 상세보기 kubectl describe deploy frontend-deployment Name: frontend-deployment Namespace: default CreationTimestamp: Fri, 12 Mar 2021 00:41:31 +0000 Labels: Annotations: deployment.kubernetes.io/revision: 1 Selector: name=busybox-pod Replicas: 4 desire..
- Total
- Today
- Yesterday
- docker
- NodeSelector
- argocd
- tfsec
- deploy
- docker-compose
- Gorilla
- mapping
- CD
- java
- Kafka
- kafka-springboot
- go
- AWS
- kubernetes
- jenkins
- springboot
- CI
- kubectl
- MongoDB
- Database
- mongo
- declative
- MySQL
- jpa
- D3
- Golang
- Terraform
- gitops
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |