본문 바로가기

Kubernetes80

K8s 구성 - AWS 1. 개요 - AWS에서 Amazon EC2에 Kubernetes를 구성하는 절차를 간단하게 설명하고자 합니다. - 구성 환경은 Amazon EC2(Redhat 9.2), CRI-O 1.25.4, Kubernetes 1.28, flannel 0.22.2입니다. - AWS는 관리형 서비스인 Amazon EKS(Elastic Kubernetes Service)와 Amazon ECS(Elastic Container Service)를 제공하고 있습니다. 2. AWS EC2 구성 2.1 Key pair 생성 Kubernetes를 설치하기 위하여 Amazon EC2에 접속할 때 사용할 키를 생성합니다. - 메뉴 EC2 console > Network & Security > Key Pairs > Create key .. 2023. 8. 30.
NFS subdir external provisioner 1. 개요 - 쿠버네티스에는 내장 NFS 프로비저너가 없다. NFS를 위한 스토리지클래스를 생성하려면 외부 프로비저너를 사용해야 한다. ✓ NFS Ganesha server and external provisioner ✓ NFS subdir external provisioner - NFS subdir external provisioner ✓ PVC(Persistent Volume Claim)에 대한 쿠버네티스 PV(Persistent Volume)를동적으로 프로비저닝하기 위하여 사전에 구성된 NFS server를 사용하는 automatic provisioner이다. ✓ PV는 "${namespace}-${pvcName}-${pvName}"로 프로비저닝된다. ✓ NFS-Client Provisioner를.. 2022. 1. 11.
Velero와 restic - 'signal: killed' 1. 개요 - velero backup 실행 시 발생된 에러의 원인을 파악하고 조치한다. 2. 환경 - Velero 1.7 & restic 0.12.0 - MinIO 2021-11-09T03:21:45Z - Kubernetes 1.16.15 3. 문제점 - PostgreSQL Pod의 볼륨을 백업하는 도중에 'signal: killed'에러가 발생되었다. 상세 에러 메시지: od volume backup failed: error running restic backup, stderr=: signal: killed $ k logs -n velero velero-77bd5cd848-k54rk -f | grep 'level=error' … time="2021-12-16T06:24:38Z" level=error .. 2021. 12. 16.
Velero와 restic - 'Error checking repository for stale locks' 1. 개요 - velero backup 실행 시 발생된 에러의 원인을 파악하고 조치한다. 2. 환경 - Velero 1.7 & restic 0.12.0 - MinIO 2021-11-09T03:21:45Z - Kubernetes 1.16.15 3. 문제점 - velero Pod에서 생성되어 있는 restic repository를 주기적으로 점검하는 과정에서 에러가 발생된다. 상세 에러 메시지: Fatal: unable to open config file: Stat: The specified key does not exist. Is there a repository at the following location? s3:https://api.acp.kt.co.kr:9002/k8s-ext/restic/geums.. 2021. 12. 16.
Velero와 restic으로 K8s 백업/복구 in on-premise 1. 개요 - Velero (https://velero.io/)? ✓ Velero는 쿠버네티스 리소스와 퍼시스턴트 볼륨을 오프젝트 스토리지로 백업하는 툴이다. ✓ Velero는 로컬에서 수행하는 클라이언트 CLI(Command-line Interface)와 쿠버네티스 클러스터에서 운영되는 서버로 구성되어 있다. ✓ 클라우드 프로바이더가 제공하는 블럭 스토리지 스냅샷 기능을 이용하여 PV(Persistent Volume)에 대한 스냅샷을 생성하여 백업한다. ✓ On-premise 환경에서는 restic 오픈소스를 활용하여 PV를 오브젝트 스토리지로 백업한다. (Velero 1.5 부터) https://velero.io/blog/velero-1.5-for-and-by-community/ - Velero 활용.. 2021. 12. 8.
MongoDB Sharded - 설정 변경 1. 개요 - Helm으로 설치된 MongoDB sharded의 설정을 변경하고자 하는 경우 helm 명령어로 사용해야 한다. - MongoDB sharded helm chart by Bitnami This chart bootstraps a deployment on a cluster using the package manager. 2. 환경 - bitnami/mongodb-sharded 3.9.14 - MongoDB 4.4.10 - Helm v3.3.1 3. 설정 변경 절차 a. MongoDB sharded 설정 값 조회 - 'helm get values' 명령어로 최종 설정된 값을 조회한다. 참고로 직접 쿠버네티스 리소스를 수정한 내용들은 조회되지 않는다. $ helm list -A | egrep 'N.. 2021. 12. 7.
MongoDB Sharded - root 암호 변경 시 고려사항 1. 개요 - root 계정 암호 변경 시 고려 사항 MongoDB Sharded를 사용하는 환경에서는 root 계정의 암호를 변경할 경우 암호를 저장하고 있는 secret도 같이 변경해야 한다. - MongoDB sharded helm chart by Bitnami This chart bootstraps a deployment on a cluster using the package manager. 2. 환경 - bitnami/mongodb-sharded 3.9.14 - MongoDB 4.4.10 3. root 계정 암호 변경 절차 a. 암호 변경 - MongoDB에 접속하여 root 계정의 암호를 'mongo'로 변경한다. $ kubectl run -n ontact bizcollabo-mongodb-m.. 2021. 12. 6.
MinIO - Distributed Mode 1. 개요 - MinIO? ✓ Amazon S3와 호환하는 오브젝트 스토리지를 제공하는 오픈소스 소프트웨어이다. ✓ MinIO는 Standalone(Single), Distributed 모드로 구성할 수 있다. ✓ Kubernetes, docker, OS (linux, macOS, Windows)등 다양한 운영 환경을 지원한다. - MinIO Distributed 모드 ✓ 분산 모드에서는 1개 이상의 인스턴스(서버)가 관리하는 최소 4개 이상의 디스크/볼륨으로 구성한다. ✓ 분산 모드에서는 모든 서버가 엔드포인트가 되기 때문에 아무 서버에 접속하여 사용할 수 있으며, 로드 밸랜서 사용을 권고한다. ✓ Erasure coding으로 데이터 중복 허용 및 가용성을 지원한다. Erasure Coding은 파일.. 2021. 11. 11.
k8s - Kubernetes container 이해 및 Kubernetes unknown container 조치 1. 개요 - Docker engine의 역할을 이해한다. - Kubernetes 컨테이너 구조와 pause 컨테이너의 역할을 이해한다. - Kubernetes에서 관리하고 있지 않는 unknown 컨테이너의 존재를 인지하고 사라지게(kill) 한다. 2. Docker 이해 a. Docker engine (간략) - dockerd containerd를 활용하여 컨테이너를 생성하고 관리하는 서비스 - containerd image와 컨테이너 lifecycle을 관리하는 서비스, dockerd로부터 컨테이너 생성 요청을 받고, runc를 이용하여 컨테이너를 생성함. - containerd-shim shim은 containerd와 컨텐이너 runtime 사이에서 소통을 담당 runc가 컨테이너를 생성 후 컨테.. 2021. 11. 7.
MongoDB Sharded by Bitnami 1. 개요 - MongDB ✓ MongoDB는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. ✓ NoSQL 데이터베이스로 분류되는 MongoDB는 JSON과 같은 동적 스키마형 도큐먼트들을 선호한다. - MongoDB Replica sets vs Sharded cluster ✓ https://severalnines.com/database-blog/turning-mongodb-replica-set-sharded-cluster a. Replica sets ✓ Replica Sets are a great way to replicate MongoDB data across multiple servers and have the database automatically failover in case of se.. 2021. 11. 3.
MongoDB Community Kubernetes Operator 1. 개요 - MongDB ✓ MongoDB는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. ✓ NoSQL 데이터베이스로 분류되는 MongoDB는 JSON과 같은 동적 스키마형 도큐먼트들을 선호한다. - MongoDB Enterprise server vs Community server ✓ MongoDB Enterprise server는 아래와 같은 추가적인 기능을 제공한다. ▷ in-memory storage engine for high throughput and low latency ▷ advanced security features like LDAP and Kerberos access controls ▷ encryption for data at rest. - MongoDB Enterprise .. 2021. 11. 3.
MariaDB - replication 1. 개요 - MariaDB replication을 구성한다. ✓ Primary DB는 읽기/쓰기용으로, Secondary DB는 읽기용으로 사용해야 한다. ✓ Secondary DB는 0개부터 n개까지 구성할 수 있다. - MariaDB 기본 설치는 'MariaDB'를 참조한다. 2. Environments - helm chart bitnami/mariadb 9.7.0 - MariaDB 10.15.12 - Helm 3.3.1 - Kubernetes 1.16.15 3. MariaDB replication 구성 - helm chart용 parametes yaml 파일 생성 및 replication 구성 ✓ architecture, rootPassword, database, replicationPasswor.. 2021. 10. 29.
NFS-Client Provisioner - PV 마운트 위치 1. 개요 - Docker container가 PV(Pysical Volume)를 어떻게 연결해서 사용하는지 이해한다. - 본 환경은 Dynamic provisioning이 구성되어 있어 PVC(Pysical Volume Claim리소스를 생성하면 자동으로 PV가 생성된다. Storage : NFS Provisioner: quay.io/external_storage/nfs-client-provisioner v3.1.0-k8s1.11 구성 관련 문서: NFS-Client Provisioner - Docker container에 마운트된 PV는 '/var/lib/kubelet/pods' 디렉토리 이하에 위치한다. 2. Docker container 정보 확인 - NFS에 생성된 PV을 사용하는 예제 Pod에.. 2021. 10. 22.
Kubernetes 업그레이드 (1.16 ⇢1.20) 및 호환성 검토 1. 개요 - Kubernets를 업그레이드하기 위하여 영향이 높은 소프트웨어에 대한 호환성을 검토하였다. Dashboard, metrics-server, Kubeflow, istio, knative - Kubeflow 호환성 만을 고려했을 때 Kubernetes 1.19를 선택해야 하지만, 자사의 컨테이너 플랫폼(Flyingcube)의 업그레이드 전략을 고려해서 1.20을 진행하였다. (5.c 참조) - 업그레이드 진행 시점(21.10.20)의 최신 버전은 Kubernetes 1.22.2이다 2. Environments - Kubernetes 1.16.15 - Ubuntu 18.04.5, Docker 19.3.15 $ k get nodes -o wide NAME STATUS ROLES AGE VERSI.. 2021. 10. 19.
Knative - Private docker registry certificates 설정 1. 테스트 환경 - knative v0.14.3, istio 1.3, Kubernetes 1.16.15, Harbor 2.1.3 - Kubeflow 1.2에 포함된 knative, istios를 사용함 2. Problem - Knative serving service 배포 시 에러("certificate signed by unknown authority")가 발생된다. 배포할 이미지는 "repo.acp.kt.co.kr/agp/helloworld-python:1.0"이다. 해당 이미지는 Self-signed certificate를 사용하는 Private docker registry(Harbor)에서 제공한다. $ vi knative-svc.yaml apiVersion: serving.knative.dev.. 2021. 10. 13.