분류 전체보기189 Kubernetes 대시보드 설치 쿠버네티스 대시보드 설치 1. 대시보드 yaml 파일 다운로드 root@master:~# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml --2021-12-07 15:31:28-- https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml raw.githubusercontent.com (raw.githubusercontent.com)을(를) 해석하는 중... 185.199.110.133, 185.199.109.133, 185.199.108.133, ... 접속 raw.githubuse.. 2021. 12. 8. Kubernetes - canary deployment (카나리 배포) canary deployment (카나리 배포) 정의 파드를 배포(업데이트)하는 방법 배포 방법 설명 블루 그린 업데이트 블루 제품을 전부 제거 후 그린 제품을 업데이트 (서비스 중단 간격이 생김) 롤링 업데이트 서비스 중단없이 한 개씩 업데이트 하는 방법 카나리 배포 기존 버전을 유지한 채로 일부 버전만 신규 버전으로 올려서 신규 버전에 버그나 이상은 없는지 확인 시나리오 name=mainui version=stable 버전의 pod를 생성 root@master:~# cat > mainui-stable.yaml apiVersion: apps/v1 kind: Deployment metadata: name: mainui-stable spec: replicas: 2 selector: matchLabels: .. 2021. 12. 3. [쿠버네티스] annotation (어노테이션) annotation (어노테이션) 정의 Label과 동일하게 key-value를 통해 리소스의 특성을 기록 Kubernetes 에게 특정 정보 전달할 용도로 사용 예를 들어 Deployment의 rolling update 정보 기록 annotations: kubernetes.io/change-cause: version 1.15 관리를 위해 필요한 정보를 기록할 용도로 사용 릴리즈, 로깅, 모니터링에 필요한 정보들을 기록 annotations: builder: "홍길동" buildDate: "20211203" imageRegistry: https://hub.docker.com/ 생성 root@master:~# cat > annotation.yaml apiVersion: v1 kind: Pod met.. 2021. 12. 3. 쿠버네티스 - label (레이블) label (레이블)정의Node를 포함하여 pod, deployment 등 모든 리소스에 할당리소스의 특성을 분류하고 selector를 이용해서 선택Key-Value 한쌍으로 적용생성파드이름생성방법레이블cmdpodcmd 명령어run=cmdpod (자동으로 할당됨)pod-demoyaml 파일 label-pod-demoyaml 파일name=mainui,rel=stableroot@master:~# kubectl run cmdpod --image=nginx:1.14 --port=80 pod/cmdpod created root@master:~# cat > pod1.yaml apiVersion: v1 kind: Pod metadata: name: pod-demo spec: containers: - name: ngi.. 2021. 12. 2. Kubernetes - Ingress (인그레스) Ingress 정의 HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출 기능 Service에 외부 URL을 제공 트래픽을 로드밸런싱 SSL 인증서 처리 Virtual hostring을 지정 구축순서 1. ingress-nginx.yaml 다운로드 링크 : https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters root@master:~# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/baremetal/deploy.yaml --2021-12-01 15:19:15-- https://ra.. 2021. 12. 1. Kubernetes - kube-proxy kube-proxy 정의 Kubernetes Service의 backend 구현 endpoint 연결을 위한 iptables 구성 nodePort로의 접근과 Pod 연결을 구현 (iptables 구성) kube-proxy mode userspace 클라이언트의 서비스 요청을 iptables를 거쳐 kube-proxy가 받아서 연결 kubernetes 초기버전에 잠깐 사용 iptables default kubernetes network mode kube-proxy service API 요청시 받아서 iptables 룰을 통해 연결 클라이언트 연결은 kube-proxy가 받아서 iptables 룰을 통해 연결 IPVS 리눅스 커널이 지원하는 L4 로드밸런싱 기술을 이용 별도의 ipvs 지원 모듈을 설정한 후.. 2021. 11. 30. Kubernetes - Headless Service Headless Service 정의 ClusterIP가 없는 서비스로 단일 진입점이 필요 없을 때 사용 Service와 연결된 Pod의 endpoint로 DNS 레코드가 생성됨 쿠버네티스 coreDNS에 등록되며 DNS resolving Service로 요청이 가능해진다. Pod의 DNS 주소: pod-ip-addr.namespace.pod.cluster.local 생성 사전에 Deployment를 먼저 생성하고 그 다음에 Service를 생성하여 묶어준다. root@master:~# cat > deploy-nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: webui spec: replicas: 3 selector: matchLabels: .. 2021. 11. 30. Kubernetes - Service (서비스) Service (서비스) 정의 동일한 서비스를 제공하는 Pod 그룹의 단일 진입점을 제공 파드들의 하나의 IP로 묶어서 관리를 해줌 Service 종류 ClusterIP selector의 label가 동일한 파드들의 그룹으로 묶어 단일 진입점 (Virtual_IP)을 생성 클러스터 내부에서만 사용가능 type 생략 시 default 값으로 10.96.0.0/12 범위에서 할당됨 생성 사전에 Deployment를 먼저 생성하고 그 다음에 Service를 생성하여 ClusterIP로 묶어준다. root@master:~# cat > deploy-nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: webui spec: replicas: 3 selec.. 2021. 11. 30. Kubernetes - Deployment Deployment 정의 ReplicaSet을 컨트롤해서 Pod수를 조절 Rolling Update & Rolling Back RollingUpdate란? 서비스 중단없이 이루어질 수 있도록 하는 업데이트 생성 root@master:~# cat > deployment-examl.yaml apiVersion: apps/v1 kind: Deployment metadata: name: app-deploy spec: replicas: 3 selector: matchLabels: app: webui template: metadata: labels: app: webui spec: containers: - image: nginx:1.14 name: web ports: - containerPort: 80 root@ma.. 2021. 11. 25. Kubernetes - DaemonSet DaemonSet 정의 전체 노드에서 Pod가 한개씩 실행되도록 보장 로그 수집기, 모니터링 에이전트와 같은 프로그램 실행시 적용 생성 root@master:~# cat > daemonset-exam.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: daemonset-nginx spec: selector: matchLabels: app: webui template: metadata: name: nginx-pod labels: app: webui spec: containers: - name: nginx-container image: nginx:1.14 root@master:~# kubectl create -f daemonset-exam.yaml daemo.. 2021. 11. 25. Kubernetes - CronJob CronJob 정의 job 컨트롤러로 실행할 Application Pod를 주기적으로 반복해서 실행 Linux의 cronjob의 스케줄링 기능을 Job Controller에 추가한 API 다음과 같은 반복해서 실행하는 Job을 운영해야 할 때 사용 Data Backup Send email Cleaning tasks Cronjob Schedule: "0 3 1 * *" Minutes (from 0 to 59) Hours (from 0 to 23) Day of the month (from 1 to 31) Month (from 1 to 12) Day of the week (from 0 to 6) 생성 옵션 설명 concurrencyPolicy Allow: 중복실행 가능, Forbid: 중복실행 불가 root@.. 2021. 11. 24. Kubernetes -Job Controller Job Controller 정의 쿠버네티스는 Pod를 running 중인 상태로 유지 Batch 처리하는 Pod는 작업이 완료되면 종료됨 Batch 처리에 적합한 컨트롤러로 Pod의 성공적인 완료를 보장 생성 옵션 설명 completions 실행해야 할 jobs의 수가 몇 개인지 지정 parallelism 병렬성. 동시 running되는 pod 수 activeDeadlineSeconds 지정 시간 내에 Job을 완료 옵션 설명 restartPolicy Never: Pod를 재시작, OnFailure: Container를 재시작 backoffLimit restartPolicy가 OnFailure일 경우 재시작 횟수를 지정 root@master:~# cat > job-exam.yaml apiVersion: .. 2021. 11. 23. Kubernetes - StatefulSet StatefulSet 정의 Pod의 상태를 유지해주는 컨트롤러 Pod 이름 Pod의 볼륨(스토리지) 생성 root@master:~# cat > sf-nginx.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: sf-nginx spec: replicas: 3 serviceName: df-nginx-service podManagementPolicy: Parallel selector: matchLabels: app: webui template: metadata: name: nginx-pod labels: app: webui spec: containers: - name: nginx-container image: nginx:1.14 root@master:~#.. 2021. 11. 22. Kubernetes - ReplicaSet ReplicaSet 정의 ReplicationController 와 같은 역할을 하는 컨트롤러 ReplicationController 보다 풍부한 selector matchExpressions 연산자 표현 설명 In key와 values를 지정하고 key, value가 일치하는 Pod만 연결 NotIn key는 일치하고 value는 일치하지 않는 Pods에 연결 Exists key에 맞는 label의 pod를 연결 DoesNotExist key와 다른 label의 pod를 연결 실행방법 생성 root@master:~# cat > rs-nginx.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: rs-nginx spec: replicas: 3 selec.. 2021. 11. 21. Kubernetes - ReplicationController ReplicationController 정의 요구하는 Pod의 개수를 보장하며 파드 집합의 실행을 항상 안정적으로 유지하는 것을 목표 요구하는 Pod의 개수가 부족하면 template 이용해 Pod를 추가 요구하는 Pod 수 보다 많으면 최근에 생성된 Pod를 삭제 기본 구조 selector replicas template 실행방법 생성 replicas를 3으로 설정하고 3개의 pod를 생성 root@master:~# cat > rc-nginx.yaml apiVersion: v1 kind: ReplicationController metadata: name: rc-nginx spec: replicas: 3 selector: app: webui template: metadata: name: nginx-pod.. 2021. 11. 19. Kubernetes - pod resource 요청 및 제한 pod resource 요청 및 제한 Resource Requests 파드를 실행하기 위한 최소 리소스 양을 요청 Resource Limits 파드가 사용할 수 있는 최대 리소스 양을 제한 Memory limit을 초과해서 사용되는 파드는 종료 (OOM Kill)되며 다시 스케줄링 된다. pod 실행방법 실행방법 root@master:~# kubectl get pods No resources found in default namespace. root@master:~# cat > nginx.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: nginx-container image: nginx:1.14 ports:.. 2021. 11. 18. Kubernetes - static Pod (정적 파드) static Pod 란? API 서버없이 특정 노드에 있는 kubelet 데몬에 의해 직접 관리 /etc/kubernetes/manifests/ 디렉토리에 k8s yaml 파일을 저장시 적용됨 static pod 설정 파일 : /var/lib/kubelet/config.yaml static 파드 생성 1. master에서 현재 pod 조회 현재 생성된 파드가 존재하지 않음 root@master:~$ kubectl get pods -o wide No resources found in default namespace. 2. node1 에서 config 파일 확인 root@node1:~# cat /var/lib/kubelet/config.yaml apiVersion: kubelet.config.k8s.io/v.. 2021. 11. 18. Kubernetes - namespace (네임스페이스) namespace란? namepace 정의 클러스터 하나를 여러 개의 논리적인 단위로 나누어서 사용 쿠버네티스 클러스터 하나를 여러 팀이나 사용자가 함께 공유 용도에 따라 실행해야 하는 앱을 구분할 때 사용 namepace 명령어 namespace 조회 root@master:~# kubectl get namespaces NAME STATUS AGE default Active 3d23h kube-node-lease Active 3d23h kube-public Active 3d23h kube-system Active 3d23h namespace 생성 root@master:~# kubectl create namespace blue namespace/blue created root@master:~# kubect.. 2021. 11. 15. Kubernetes - kubectl 명령어 실습 kubectl 개념 kubectl 이란? 쿠버네티스 API에 요청할때 사용하는 명령어 kubectl 명령어 구조 kubectl [command] [TYPE] [NAME] [flags] command : 자원에 실행할 명령 (create, get, delete, edit ...) TYPE : 자원의 타입 (node, pod, service ...) NAME : 자원의 이름 flags : 부가적으로 설정할 옵션 (--help, -o options) 예) kubectl get pod webserver -o wide webserver 이름의 POD를 상세히 조회한다. kubectl - node 명령어 node 조회하기 root@master:~# kubectl get nodes NAME STATUS ROLES A.. 2021. 11. 14. Kubernetes PC에 설치해보기 설치 환경 구성 HOST IP Address arch CPU Memory OS master.example.com 10.100.0.104 X86_64 2core 4GiB Ubuntu 20.04.3 LTS node1.example.com 10.100.0.101 X86_64 2core 4GiB Ubuntu 20.04.3 LTS node2.example.com 10.100.0.102 X86_64 2core 4GiB Ubuntu 20.04.3 LTS 1. Docker 설치하기 링크 : https://docs.docker.com/engine/install/ubuntu/ 저장소 설정 설치 가능한 패키지 리스트 업데이트 root@master:~# apt-get update ... 내려받기 5,956 k바이트, 소요시간.. 2021. 11. 14. python - 데코레이터 (Decorator) 데코레이터란? 어떤 함수를 받아 명령을 추가한 뒤 이를 다시 함수의 형태로 반환하는 함수. 어떤 함수의 내부를 수정하지 않고 기능에 변화를 주고 싶을 때 사용한다. 말그대로 다른 함수를 꾸며주는 함수이다. 데코레이터 구조 def 데코레이터이름(func): def 내부함수이름(*args, **kwargs): 기존 함수에 추가할 명령 return func(*args, **kwargs) return 내부함수이름 예) 피보나치 수열 from collections import defaultdict def recursive(func): result = defaultdict(int) def wrapper(n): if n in result: return result[n] result[n] = func(n) return.. 2021. 11. 8. 네트워크 OSI 7계층 개요 모든 네트워크 통신에서 생기는 여러가지 충돌 문제를 완화하기 위하여, 국제표준기구(ISO)에서 표준화된 네트워크 구조를 제시한 기본 모델로써 통신망을 통한 상호접속에 필요한 제반 통신절차를 정의하고 이 가운데 비슷한 기능을 제공하는 모듈을 동일계층으로 분할하여 모두 7계층으로 분할한 것이다. "간단히 말하면 랜선을 연결해서 컴퓨터를 켜고 인터넷을 보기까지 네트워크 과정을 모델로 정의한 것이다." OSI 7 계층 모델 계층간 역할 데이터 단위 계층 기능 프로토콜 호스트 계층 데이터 7. 응용 계층 (application layer) 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 우리가 사용하는 사용자 인터페이스를 제공하는 프로그램 등을 말한다. 게이트웨이, HTTP, DNS, FTP, N.. 2021. 10. 25. [알고리즘] 플로이드 와샬 알고리즘 정의 모든 정점에서 모든 정점으로의 최단 경로를 구하는 최단 경로 알고리즘이다. 거쳐가는 기준을 최단거리를 구한다는 특징이 있다. 코드 import math INF = math.inf def floyid(graph): for k in range(len(graph)): for i in range(len(graph)): for j in range(len(graph)): if graph[i][k] + graph[k][j] < graph[i][j]: graph[i][j] = graph[i][k] + graph[k][j] print(graph) _graph = [ [0, 5, INF, 8], [7, 0, 9, INF], [2, INF, 0, 4], [INF, INF, 3, 0] ] floyd(_graph) 2021. 10. 24. [알고리즘] 다익스트라 알고리즘 정의 특정한 정점으로부터 다른 모든 정점으로 가는 최단 경로를 구하는 알고리즘이다. 음의 간선은 포함시킬 수 없다. 활용 현실 생활에서 많이 사용되는 알고리즘으로 인공위성 GPS 등이 있다. 코드 시간 복잡도 O(N * log N)를 가지는 코드이다. import heapq import math def dijkstra(graph, start): distances = {node : math.inf for node in graph} distances[start] = 0 queue = [] heapq.heappush(queue, [distances[start], start]) while queue: curr_distance, curr_dest = heapq.heappop(queue) if distances[c.. 2021. 10. 24. kubernetes 아키텍쳐 Master Node 구성 설명 API Server ㆍ쿠버네티스 클러스터의 모든 작업을 제어하는 REST API Controller (컨트롤러) ㆍ클러스터를 설계한 상태로 유지 (파드 개수 유지) ㆍ백그라운드에서 클러스터 컨트롤러를 관리 ㆍAPI 서버를 이용하여 클러스터 상태를 모니터링 Scheduler (스케쥴러) ㆍ노드가 배정되지 않은 새로 생성된 Pod를 감지하고 그것을 어느 Node에서 실행될지를 선택 ㆍPod를 어떻게 Node에 배치할지를 예약 etcd ㆍ클러스터의 모든 정보를 저장하는 데이터 저장소 ㆍ고가용성을 가진 Key-Value 저장소 구조 Worker Node 구성 설명 kubelet ㆍ노드에서 실행되는 에이전트로 컨테이너가 Pod에서 실행중인지 확인 ㆍkubelet은 다양한 메커니즘을.. 2021. 10. 21. conda install vs pip install ※ 퍼가실때 반드시 출처를 남겨주세요 개요 conda 패키지 관리자와 pip 패키지 관리자를 같이 사용하면서 두 개의 차이점에 대해서 알지 못하고 사용하는 분들이 많이 안타까워 알고있는 지식을 최대한 공유하여 남기고자한다. FAQ conda install 하면 pip install도 별도로 해줘야하나요? (pip install하면 conda install도 별도로 해줘야하나요?) → python 패키지는 site-packages 같은 디렉토리를 공유하고 있으므로 한쪽만 install 을 해주면 됩니다. conda vs pip 차이점은 무엇인가요? → 차이점은 패키지를 받아오는 주소가 다르고 설치하는 모듈과 패키지가 다를 수 있습니다. pip로 했을 경우 python에 해당하는 패키지만 설치하는것에 반해서.. 2021. 9. 25. 패션 의류 분류 (Fashion Classification) 목적 패션 데이터셋을 활용하여 가방, 셔츠, 스커트 등을 분류합니다. 환경설정 데이터 파이프 라인 : 데이터 로드시 과부하를 완화하기 위하여 데이터 파이프라인을 구축합니다. 조기종료 설정 : 학습이 개선되지 않으면 조기종료 콜백을 설정하여 중지합니다. TensorBoard 모니터링 : TensorBoard와 연결하여 학습 진행 상태를 모니터링 할 수 있도록 합니다. 데이터셋 아래와 같이 dataset 디렉토리 안에 가방, 셔츠, 스커트의 폴더별로 나누어져있으며 이미지 파일이 있습니다. ├─dataset │ ├─bag │ ├─shirt │ └─skirt └─runs └─fashion_classification 데이터 로드 import os import time from PIL import Image imp.. 2021. 9. 15. Fashion MNIST 데이터 로드 import torch import torch.nn as nn import torchvision.datasets as datasets import torchvision.transforms as transforms import matplotlib.pyplot as plt from torchvision.utils import make_grid import numpy as np from torch.utils.data import DataLoader import os import time batch_size = 100 num_epochs = 50 learning_rate = 0.0001 device = torch.device('cuda') if torch.cuda.is_available() else.. 2021. 9. 12. PyTorch Tensorboard 시각화 기본적인 샘플링 from torch.utils.tensorboard import SummaryWriter import numpy as np writer = SummaryWriter() for n_iter in range(100): writer.add_scalar('Loss/train', np.random.random(), n_iter) writer.add_scalar('Loss/test', np.random.random(), n_iter) writer.add_scalar('Accuracy/train', np.random.random(), n_iter) writer.add_scalar('Accuracy/test', np.random.random(), n_iter) tensorboard --logdir ru.. 2021. 9. 12. torchsummary 모델 정보 요약 CNN for MNSIT import torch import torch.nn as nn import torch.nn.functional as F from torchsummary import summary class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 10, kernel_size=5) self.conv2 = nn.Conv2d(10, 20, kernel_size=5) self.conv2_drop = nn.Dropout2d() self.fc1 = nn.Linear(320, 50) self.fc2 = nn.Linear(50, 10) def forward(self, x): x = F.rel.. 2021. 9. 12. 이전 1 2 3 4 5 6 7 다음 728x90 반응형