
ubuntu22.04먼저 모든 스왑을 꺼주어야 함방화벽 제거만약 다음과 같은 오류가 뜬다면 재부팅 하고 다시시도(여기부터 마스터노드에서만)
Pod 생성하기 kubectl run 명령(CLI)으로 생성 $ kubectl run webserver --image=nginx:1.14 pod yaml을 이용해 생성 yaml파일 생성 $ kubectl run nginx-pod --image=nginx:1.14 --port 80 --dry-run -o yaml > pod-ngin...

웹 서버 실행 명령 $ kubectl run …Pending(파드를 어떤 노드에 생성하면 좋을지 계산)컨테이너(파드) 생성동작중인 파드 정보 보기kubectl get podskubectl get pods -o widekubectl describe pod webserv

pod가 계속 실행할 수 있음을 보장pod의 spec에 정의httpGet probe: 지정한 ip주소, port, path에 HTTP GET 요청을 보내, 해당 컨테이너가 응답하는지를 확인한다. 반환코드가 200이 아닌 값이 나오면 오류, 컨테이너를 다시 시작한다.tc

앱 컨테이너 실행 전에 미리 동작 시킬 컨테이너본 container가 실행되기 전에 사전 작업이 필요할 경우 사용초기화 컨테이너가 모두 실행된 후에 앱 컨테이너를 실행파드의 인프라 구성하는 pause 컨테이너가 파드 구성시에 같이 생성됨
노드의 kubelet 데몬에 의해 실행되는 파드API 서버 없이 특정 노드에 있는 kubelet 데몬에 의해 직접 관리/etc/kubernetes/manifests/ 디렉토리에 k8s yaml 파일을 저장 시 적용static pod 디렉토리 구성…staticPodPat

Resource Requests파드를 실행하기 위한 최소 리소스 양을 요청Resource Limits \- 파드가 사용할 수 있는 최대 리소스 양을 제한 \- Memory limit을 초과해서 사용되는 파드는 종료되며 다시 스케줄링 된다.cpu :1000m

pod 내의 컨테이너가 실행될 때 필요로 하는 변수컨테이너 제작 시 미리 정의NGINX Dckerfile의 예ENV NGINX_VERSION 1.19.2ENV NJS_VERSION 0.4.3pod 실행 시 미리 정의된 컨테이너 환경 변수를 변경할 수 있다.cidecar

livenessProbe를 사용한 self-healing Podinit containerinfra container(pause) 이해하기static pod 만들기Pod에 resource 할당하기환경변수를 이용해 컨테이너에 데이터 전달하기Pod 구성 패턴의 종류컨테이너화

Pod의 개수를 보장요구하는 pod의 개수를 보장하며 파드 집합의 실행을 항상 안정적으로 유지하는 것을 목표요구하는 pod의 개수가 부족하면 template를 이용해 pod를 추가요구하는 pod 수 보다 많으면 최근에 생성된 pod를 삭제기본 구성selectorrepl

ReplicationController 와 같은 역할을 하는 컨트롤러ReplicationController 보다 풍부한 selector selector: matchLabels: component: redis matchExpressions:

ReplicaSet을 컨트롤해서 Pod수를 조절Rolling Update & Rolling BackRolling Updatekubectl set image deployment <deploy_name> <container_name> = <new_versi

전체 노드에서 pod가 한 개씩 실행되도록 보장로그 수입기, 모니터링 에이전트와 같은 프로그램 실행 시 적용

pod의 상태를 유지해주는 컨트롤러pod 이름pod의 볼륨(스토리지)

kubernetes는 pod를 running 중인 상태로 유지Batch 처리하는 pod는 작업이 완료되면 종료됨Batch 처리에 적합한 컨트롤러로 pod의 성공적인 완료를 보장비정상 종료 시 다시 실행정상 종료 시 완료

job 컨트롤러로 실행할 application pod를 주기적으로 반복해서 실행linux의 cronjob의 스케줄링 기능을 job controller에 추가한 api다음과 같은 반복해서 실행하는 job을 운영해야 할 때 사용 \- Data backup \-

동일한 서비스를 제공하는 pod 그룹의 단일 진입점을 제공Untitled4가지 type 지원ClusterIP(default)Pod 그룹의 단일 진입점(Virtual IP) 생성 NodePortClusterIP가 생성된 후모든 Worker Node에 외부에서 접속가능

selector의 label가 동일한 파드들의 그룹으로 묶어단일 진입점(Virtual_IP)을 생성클러스터 내부에서만 사용 가능type 생략 시 default 값으로 10.96.0.0/12 범위에서 할당됨모든 노드를 대상으로 외부 접속 가능한 포트를 예약Default

ClusterIP가 없는 서비스로 단일 진입점이 필요 없을 때 사용Service와 연결된 Pod의 endpoint로 DNS 레코드가 생성됨Pod의 DNS 주소: pod-ip-addr.namespace.pod.cluster.local단일 진입점을 만들어주긴 하지만 pod

HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출기능Service에 외부 URL을 제공트래픽을 로드밸런싱SSL 인증서 처리Virtual hosting을 지정

ingress 설치 : https://kubernetes.github.io/ingress-nginx/deploy/

Node를 포함하여 pod, deployment 등 모든 리소스에 할당리소스의 특성을 분류하고, Selector를 이용해서 선택Key-value 한쌍으로 적용

worker node 의 특성을 label로 설정kubectl label nodes <노드 이름> <레이블 키≥<레이블 값>노드를 선택해서 파드를 배치할 수 있다.

Label과 동일하게 key-value를 통해 리소스의 특성을 기록kubernetes에게 특정 정보 전달할 용도로 사용예를 들어 Deployment의 rolling update 정보 기록annotations:kubernetes.io/change-cause: versio

포드를 배포(업데이트)하는 방법블루 그린 업데이트카나리 업데이트롤링 업데이트Canary 배포기존 버전을 유지한 채로일부 버전만 신규 버전으로 올려서신규 버전에 버그나 이상은 없는지 확인

ConfigMap: 컨테이너 구성 정보를 한곳에 모아서 관리 metadata:name:genid-boy —>이 부분 사진에서 보다 두 칸 더 띄워야 됨

ConfigMap: 컨테이너 구성 정보를 한곳에 모아서 관리Secret: 컨테이너가 사용하는 password, auth token, ssh key와 같은 중요한 정보를 저장하고 민감한 구성 정보를 base64로 인코딩해서 한 곳에 모아서 관리민감하지 않은 일반 설정 파