목록Study/K8S (72)
전공공부

1. ReplicaSet 정의 : Pod 하나가 Fail이 되어서 내려가도 다른 인스턴스가 실행 시켜서 Fail 상태에서 벗어 날 수 있게 하는 것 동작 : 실패 상태가 되면 새로 POD를 배포한다. 이는 고 가용성을 보장한다. 정리 : POD가 Fail이 되어도 새로 살려서 POD를 배포 할 수 있게 하여서 고 가용성을 보장하는 것 Load Balancing & Scaling Replication Controller, ReplicaSet Node를 넘어서 복제 할 수 있음을 보여준다. (Scale Up 지원이 가능) Replication Controller와 ReplicaSet과 다르다. 하지만, Replication Controller이 ReplicaSet의 사실상 이전 버전이므로 Replicatio..
1. Kube-Scheduler 정의 : 스케줄러는 어느 노드로 포드가 들어갈지 결정만 하는 역할, 실제 이를 수행하는 것은 kubelet이다. WHY DO YOU NEED SCHEDULER? 컨테이너를 수용 할 수 있는 알맞게 노드에 포드를 배치해야 한다. 리소스 요청이 다를 수 있으니 이를 감안해서 각 노드에 배치하게 된다. CPU 사용량이 10인 포드가 있다고 하면 우선 CPU가 맞지 않는 노드는 걷어낸다. 그러면 남은 것중에 가장 적합한 노드는 어떻게 알까? POD 배치하고 나서 CPU 사용량이 최적이 될 것이 배치를 받게된다. 사실 이런 흐름은 사람이 직접 설정 할 수 있는 곳이기에 추후 강의에서 논의될 사항이다. HOW DO I INSTALL KUBE SCHEDULER 설치하는 방법 wget ..
1. Contoller - Manager 정의 : Controller는 부서의 마스터 쉽 같은 존재 지속적인 상태 정보 감시 상황을 재조정 하기 위한 조치를 함 Monitoring 예시로 2가지 Controller를 보자. 1. Node Controller 노드 컨트롤러는 응용 프로그램이 적절한 처리를 하는지 5초마다 kube-apiserver를 통해서 각 pod, node를 감시한다. 그리고, 5초 마다 감시하지만 40초 이후에 그것이 정상이 아닌지 파악 할 수 있다. 그리고, POD의 Eviction 상태로 만드는 시간은 5m이다. 2. ReplicaSet Controller 레플리카 셋을 감시하고 해당 replica 갯수에 맞게 끔 검사함. 위와 같이 두가지의 경우 외에도 상당히 많은 컨트롤러가 설..
1. Kube-apiserver 정의 : 주요 관리 구성 요소중 하나임, kubectl으로 명령어 요청을 보내면 kube apiserver가 처음 요청을 받아서 ETCD CLUSTER로 접속하여 알맞은 값을 가져옴. 그리고, 직접 ETCD 저장소와 소통하는 유일한 컴포넌트 중 하나이다. 흐름 : 유저 체크 요청이 올바른지 체크 data 검색 및 조회 ETCD 데이터 업데이트 만일 POD가 Worker Node에 있지 않았다면 새 포드를 Scheduler에 등록하고 API 서버는 해당 정보를 적절한 Worker Node에 할당함 완료되면 kubelet에 해당 요청들을 api server를 이용해서 업데이트 됌 kube-apiserver.service ExecStart=/usr/local/bin/kube-a..

1. ETCD 역할 : key value 쌍으로 데이터를 저장하는 DataBase 데이터 : 노드, 포드, Config, Secret, 계정 정보, role, binding, others... 흐름 : Cluster 내부의 변화가 있으면 모두 ETCD 클러스터에 저장 되었을 때만 완료된 것으로 간주된다. 1. SETUP - MANUAL wget -q --show-progress --https-only --timestamping "https://github.com/coreos/etcd/releases/download/v3.5.3/etcd-v3.5.3-linux-amd64.tar.gz ETCD.SERVICE ExecStart=/usr/local/bin/etcd \ --name ${ETCD_NAME} \ --..

1. Pod에서 network 연결이 되지 않는 문제였다. 자세히 보니 문제점은 아래 이미지와 같았고 처리를 위해서 pod의 readinessProbe를 확인하였다. spec: containers: - image: kodekloud/nginx imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 9080 protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: / port: 8080 scheme: HTTP periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 readinessProbe는 container의 ready 상태를 먼저 알아보는..
1. ConfigMap 관련 문제 ConfigMap을 활용하여 command를 구성하고 volumeMount를 /opt/time으로 하여라 이전 문제에서 이미 pv 설정을 하고, configMap의 이름은 time-config로 구성하였다. 키는 TIME_FREQ, configMap 이름은 time-config이다. apiVersion: v1 kind: Pod metadata: name: time-check namespace: dvl1987 spec: volumes: - name: log-volume emptyDir: {} containers: - name: time-check image: busybox command: ["/bin/sh", "-c","while true; do date; sleep $T..

kube-apiservice 연결이 안될때 6443 포트 연결이 맞는지 체크 kubeconfig = /root/.kube/config, User = 'kubernetes-admin' Cluster: Server Port = '6443' 위와 같은 상황 일때, kubeconfig 위치의 파일 열어서 -> port 및 유저 체크하면 된다. api-server의 접근 고칠때 해당 사항 출력 후 아래 api.yaml 맡게 끔 수정하자 kubectl uncordon 해결 완료 scp 활용 - local to node pv to pvc 연결