목록Study (269)
전공공부
Volume Volume은 기본적으로 Pod에서 생성된 데이터를 Pod와 따로 두어 Pod가 삭제되어도 데이터 값은 유지 하게 하기 위해 만들어진 것이다. apiVersion: v1 kind: Pod metadata: name: random-number-generator spec: containers: - image: alpine name: alpine command: ["/bin/sh","-c"] args: ["shuf -i 0-100 -n 1 >> /opt/number.out"] volumeMounts: #opt로 마운트 된 값만 노드의 /data로 저장된다. - mountPath: /opt name: data-volume volumes: - name: data-volume hostPath: path..
1. Traffic Ingress & Egress Ingress : Traffic이 해당 서버 또는 서비스로 들어오는 곳 / Egress : Traffic이 해당 서버 또는 서비스 나가는 것 Network Security 예제) 웹에서 바로 DB 서버로 접근 하는 것을 막기 위해서 필요하다. only allow ingress traffic from api Pod on Port 3306 을 적용 할 수 있어야 한다. Network Policy - Selector, Rules selector로 Label에 따른 접근 제어 podSelector: matchLabels: role: db #이런식으로 role이 DB 인 것만 접근 가능하게 할 수 있다. 어떤 포트 번호로 어떤 포드 이름으로 들어올 지 지 poli..

1. Ingress 온라인 스토어를 k8s 클러스터에 배포 하는 상황을 가정해보자 my-sql service를 만들어서 Cluster ip 형태로 배포하면 백앤드 서버(Pod)가 연결 할 것이고 이것을 바깥에서 접속하려면 노드 포드 서비스를 통해 접근이 가능하다. http://:이런 식으로 그런데 새로운 api 서버를 같은 클러스터 내에서 추가하고 싶다면 LoadBalancer 형태로 서비스를 배포하여야 한다. http 세팅은..? 이러한 것들을 한 번에 할 수 있는 것이 INGRESS이다. Ingress Controller가 LB, Proxy 서버, HTTPS 세팅과 같은 솔루션을 구현 Ingress Resource : 설정할 서비스와의 연결등을 구현 허나 Ingress Controller는 K8S의 ..
1. Services 역할 - 포드끼리 묶어 놓음 그리고, 다른 서비스와의 연결을 도와줌 예제로 외부 사용자가 어떻게 내부 POD에 접근 할 수 있을까? SSH로 쿠버네티스 서버에 연결하면 되겠죠. 하지만, SSH를 연결하지 않고 노트북에서 노드 IP로 바로 접속하는 방법이 없을까? - Service가 바로 연결을 도와줌. - NodePort : 서비스가 노드 포트를 열어서 외부에서 서비스에 지정한 노드 포트로 연결 할 수 있게 해서 들어 가게 함 - ClusterIP : 클러스터 내부에 가상 IP를 만들어서 APP끼리 연결을 가능하게 한다. - LoadBalancer : Service - NodePort - 서비스는 노드 포트끼리 매핑 시켜줘서 접속을 할 수 있게 한다. TargetPort : Pod의..
확실히 문제 자체는 쉬웠으나 자료형 체크가 필요했던 문제이다. B 감독관이 볼 수 있는 학생 수 1, C 감독관이 볼 수 있는 학생 수 1 이고 나머지 시험장의 갯수가 10만개, 응시자 수 10만개면 100000*100000을 보아야 하는데 이때의 볼 수 있는 최소한의 감독관의 수는 어마어마하게 큰 수가 된다. 따라서 ans를 넣을 변수를 long으로 설정하자 package DFS; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * BOJ_13458 */ public class BOJ_13458 { public static void main(String[] args) { Scanner sc = new Sca..

상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. Ti : 걸리는 시간 Pi : 최대 이익 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15이다. 상담을 하는데 필요한 기간은 1일보다 클 수 있기 때문에, 모든 상담을 할 수는 없다. 예를 들어서 1일에 상담을 하게 되면..
우선 Job을 현실 세계에서 이해하려면, pod가 보고서를 만들고 그것을 job이 이메일을 보내 주는 행위를 상상해보자 실제로는 batch job을 많이 사용한다. RestartPolicy K8S의 RestartPolicy는 기본적으로 Always이다. 그래서, 내부 컨테이너의 명령어가 실행 되어지는 명령어가 필요하다면 매번 Pod Restart하면서 명령어를 재시작한다. 이를 막기 위해서 아래와 같이 설정 할 수 잇다. apiVersion: v1 kind: Pod metadata: name: myapp-pod lables: app: app1 function: Front-end spec: containers: - name: math-add image: ubuntu command: ['expr', '3',..
Deployment Strategy - K8S의 배포 전략은 구 버전의 Pod 하나를 제거하고 새로운 버전의 Pod를 하나씩 생성하므로써 무중단 배포를 가능하게 한다. - 기본 배포 전략 잠깐 강의 중에 나온 것 기존의 pod 이미지 수정시 pod-defination.yaml을 수정하여 kubectl apply -f 을 실행하는 방법 말고 kubectl set image / \ nginx=nginx:1.9.1 이런식으로 새로운 배포가 가능하다고 한다. 하지만, 위와 같이 변경하면 pod-defination.yaml 파일이 올라간 Pod와 달라져서 추후 확장성에 문제가 있을 듯 하다. Strategy - Recreate vs Rolling Update - Recreate 전략의 ReplicaSet의 경우 ..