반응형

전체 글 116

5-2. livenessProbe를 이용해 Self-healing Pod 만들기

livenessProbe는 파드의 건강검진과 같다고 생각할 수 있다. Pod가 계속해서 실행할 수 있음을 보장해준다. kubelet은 livenessProbe를 사용해 컨테이너를 재시작해야할 때를 알 수 있다. livenessProbe를 Pod의 Spec에 정의해두면 이 내용을 기반으로 Container의 상태를 주기적으로 확인한다. 만약 Container 상태가 비정상적이라면, Container를 재시작한다. 이때 Container만 재시작하기 때문에 Pod의 IP Address는 그대로 유지된다. livenessProbe 매커니즘 ✅ httpGet probe (web 기반) 지정한 IP 주소, Port, Path에 HTTP Get 요청을 보내 응답을 확인한다. 만약 nginx webserver를 80..

Kubernetes 2022.02.06

4. kubernetes architecture

kubernetes cluster는 크게 두 종류의 서버로 구성한다. 1️⃣ master (control plane): 클러스터를 관리하는 서버 2️⃣ node: 실제 컨테이너를 실행시키는 서버 master는 보통 고가용성을 만족하고자 서버 3대 정도 구성해서 운영한다. 평소 실제 클러스터를 관리하는 리더 마스터는 1대고 나머지는 대기한다. 리더 마스터에 장애가 발생하면 자연스럽게 2대 중 1대가 리더 역할을 한다. master와 노드의 구성과 통신 구조 1️⃣ master 마스터를 보면 kubelet이 마스터에 있는 도커를 관리한다. 각 컴포넌트의 중심은 kube-apiserver이다. kube-apiserver를 거쳐 다른 컴포넌트가 서로 필요한 정보를 주고 받으며, etcd에는 kube-apiser..

Kubernetes 2022.02.06

Deployment를 이용해 Container 실행하기

쿠버네티스를 이용해 컨테이너를 실행하는 방법에는 두 가지가 있다. 1. kubectl run 명령어 사용하기 2. yaml 형식으로 template으로 컨테이너 실행하기 kubectl run 명령어 사용하기 --image: 컨테이너 이미지 --port: 컨테이너가 사용할 포트 지정 kubectl run --image --port= kubectl run nginx-app --image=nginx:1.14 --port=80 사용자가 kubernetes cluster에 container를 실행하라고 명령하면 지정된 container의 image가 docker hub와 같은 registry에서 가져와 cluster 안에서 실행하는 것이다. yaml 형식으로 template으로 컨테이너 실행하기 apiVersio..

Kubernetes 2022.02.05

kubeconfig에 대해서 알아보자

kubectl은 기본적으로 $Home/.kube/config 파일에서 클러스터, 인증, 컨텍스트 정보를 읽어들인다. 이러한 클러스터 구성 정보를 kubeconfig라고 한다. 기본적으로 kubectl은 $HOME/.kube 디렉터리에서 config라는 이름의 파일을 찾는다. KUBECONFIG 환경 변수를 설정하거나 --kubeconfig 플래그를 지정해서 다른 kubeconfig 파일을 사용할 수 있다. Kubectl Reference Docs kubernetes.io ✅ clusters : kubernetes api server 정보. 여러 클러스터들을 명시할 수 있다. ✅ users : kubernetes api에 접속하기 위한 사용자의 목록. ✅ context : user와 cluster의 관계를..

Kubernetes 2022.02.05

[ERROR] kubelet.service: Unit entered failed state.

[kubelet 상태 점검] $ systemctl status kubelet kubelet.service: Unit entered failed state. kubelet.service: Failed with result 'exit-code'. [kubelet log 출력] $ journalctl -a -f "Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"cgroupfs\" is different from docker cgroup driver: \"systemd\"" ⚠️ kubelet의 cgroup driver는 cgroupfs이고, docker의 cgroup driver는 syste..

Kubernetes 2022.02.04

Controller [2] - ReplicaSet

ReplicaSet는 Replication Controller의 발전형이다. Replication Controller는 Selector가 동호 기반이므로 labels를 선택할 때 같은지 다른지만 확인하지만, ReplicaSet은 in, notin, exists와 같은 연산자를 지원한다. selector: matchLabels: component: redis matchExpressions: - {key: tier, operator: In, values: [cache]} - {key: environment, operator: NotIn, values: [dev} matchExpressions 연산자 - In : key와 value를 지정하여 key, value가 일치하는 pod에만 연결 - NotIn : k..

Kubernetes 2022.01.29

Controller [1] - Replication Controller

Replication Controller는 쿠버네티스 초기부터 있었던 가장 기본적인 컨트롤러이다. 지정한 숫자만큼 파드가 항상 클러스터 안에서 실행되도록 관리한다. 만약 Pod의 개수가 부족하다면, Replication Controller가 yaml 파일의 template에 맞춰서 새로운 파드를 생성한다. 만약 Pod의 개수가 많다면, Replication Controller 가장 최근에 생성한 Pod를 삭제한다. 파드를 실행하던 노드에 장애가 발생해서 파드가 종료되었을 때, Replication Controller를 이용해서 실행한 파드라면 클러스터 안 다른 노드에 다시 파드를 실행시킨다. Replication Controller의 기본적인 yaml 형식 apiVersion: v1 kind: Repli..

Kubernetes 2022.01.29

5-1. kubernetes pod

1. pod 개념 및 사용하기 Pod는 Container를 표현하는 k8s API의 최소 단위이다. Pod에는 하나 또는 여러개의 컨테이너가 포함될 수 있다. Pod 하나 안에 있는 컨테이너들은 IP하나를 공유하며, Pod 안 컨테이너와 통신할 때는 컨테이너마다 다르게 설정한 포트를 사용한다. Pod 생성하기 pod를 생성하는 데에는 총 두 가지 방법이 있다. ✅ kubectl run 명령(CLI)로 생성 kubectl run 명령어 형태 kubectl run --image= pod 생성 확인 ✅ pod yaml을 이용해 생성 kubectl create -f yaml file 예시 // nginx-pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod ..

Kubernetes 2022.01.21
반응형