목록Study (269)
전공공부
설명 어떻게 접근할지는 대강 파악했으나 상세히 떠오르지 않아 블로그를 보고 푼 문제이다. 해당 코드는 2개의 지점을 먼저 잡아두고 10000*10000 이분 탐색으로 가능한 범위 내의 숫자들을 가져오는 코드이다. 이게 무슨 말이냐면 -1,-1,-1,-1,1,2,2,2,2,2,2,3 이런식으로 수열이 들어오면 만일 한 번 이분 탐색해서 찾으면 -1,-1 fix 값 빼고 left,right 지정 후 mid = (l+r)/2 으로 찾으면 당연히 그냥 가능한 수열중 딱 하나를 빠르게 찾을 뿐이다.... 이러면 안되고 lower boundary의 끝 부분과 지금 수열에서 가능한 부분인 [5 번째 인덱스 자리 부터 ~ 10 번째 인덱스 자리까지 탐색해야한다.] upper boundary의 끝을 알아내면 된다. N이..
1. 중요도 X 버전 kube-apiserver : 최고로 높아야 하는 컴포넌트 X - 1 버전 controller-manager kube-scheduler X - 2 버전 kubelet kube-proxy X+1 > X - 1 버전 kubectl : apiServer 보다 버전이 높을 수도 있음 2. 언제 어떻게 클러스터 업그레이드를 진행 할 수 있을까? GKE의 경우 클러스터 설정에 따라서 다른데 GKE 사용시에는 몇번의 클릭만으로 업그레이드가 가능하다. kubeadm의 경우 kubeadm upgrade plan kubeadm upgrade apply 위 명령어로 업데이트가 가능하다. kubeadm의 경우로 자세히 알아보자 Master Node가 먼저 업그레이드가 되고 나머지 Worker Node가 ..
설명 start 지점은 그저 처음 카운트 할 때 홀 수이면 초기화 해서 올라가기 위함이고 end는 계속 상승시키면서 만일, K 번을 초과하면 break해서 나오는 코드를 짰다. 그래서 연속한 긴 짝수 부분 수열을 구했다. 그리고, 처음에는 max라는 변수를 두고 짝수의 카운트 값을 잡았는데 이렇게 하면 초기화를 시키는 부분이 많아져서 end - start - cnt로 변경해서 풀었다. 코드 package two_pointer; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ_22862 { public static void main(String[] ..
1. OS Upgrade Node 하나가 사라졌을 경우를 가정해봅시다. (drain 된 상태) ReplicaSet으로 관리되던 Pod는 다시 다른 노드로 롤링 업데이트가 될 것입니다. 그리고, 이때 노드가 내려갔다가 다시 올라 옵니다.(uncordon) 이때, 기존에 붙어 있던 Pod가 다시 붙지는 않습니다. 만일, OS Parameter를 바꾸게 되어서 Node 하나를 재부팅 해야 한다면 Node Drain을 진행해야 한다. 아래 명령어를 쓰면 기존 노드에 존재하던 노드의 포드가 옮겨지고 종료된다. (만일, ReplicaSet 없이 Single Pod가 붙어 있다면 강제 drain을 시켜야 드레인이 가능하다. --force) kubectl drain node-1 추가, 아래 명령어는 기존 POD는 그대..
InitContainers apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app.kubernetes.io/name: MyApp spec: containers: - name: myapp-container image: busybox:1.28 command: ['sh', '-c', 'echo The app is running! && sleep 3600'] initContainers: - name: init-myservice image: busybox:1.28 command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace..
1. Multi Container Pods Log Agent와 Server가 같이 Pair로 업로드 되는 경우가 필요 할 것이다. 함께 생성되고 함께 파괴가 된다는 생각으로 바라보는것이 좋을 것 같다. Volume Sharing 등의 설정을 하지 않아도 되니 편하다. Pod의 spec.containers 아래에 배열 형태로 나누어서 container 1,2...로 나누어서 배포하면된다. apiVersion: v1 kind: Pod metadata: name: cpu-demo-2 namespace: cpu-example spec: containers: - name: cpu-demo-ctr-2 image: vish/stress - name: test image: nginx
1. Secret 암호화를 사용하는 범위 ConfigMap 활용하여 MySQL 또는 java 파일 구성 시 Docker의 환경 설정을 지정 할 수 있겠다. 예시로 PW, DB_HOST 등의 설정을 구성 할 수 있다. 그러나 아래와 같이 직접적으로 쓸거면 필요가 없다. apiVersion: v1 kind: ConfigMap metadata: name: app-config data: DB_HOST: mysql 자 아래 처럼 사용해보자 First, Create Secret DB_host: mysql DB_User: root DB_Password: passwd 명령 버전 k create secret generic --from-literal== --from-literal 옵션 자체가 key-value 쌍을 저장하..
설명 어짜피 두개만 선택하는 경우의 수이고 이것을 모두 비교하면서 진행하는 백 트레킹 방식을 진행하기에는 100000C2 50억이므로 불가능 그래서 투포인터 방식을 사용해서 진행하는데 이때, 오름 차순으로 정렬 후 선택하게 되면 결국 앞에서 나가는 것은 무조건 음수에서 양수로 나아가는 방식이고 이를 토대로 start, end 조건을 걸어서 풀면 된다. 코드 package two_pointer; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.StringTokeniz..