전체 글

제가 미처 확인하지 못한 부분이 있다면 알려주시면 감사하겠습니다.
가상머신에서 로컬 클러스터를 사용했다. Service 파드는 클러스터 내에서 유동적이기 때문에 새로 생길 때마다 접속 정보가 변경된다. 이에 내/외부에서 파드 접속을 안정적으로 할 수 있게 도와주는 것이 쿠버네티스에서 서비스의 역할이다. 파드가 생성될 때 부여되는 IP를 가지고 연결한다. NodePort yaml에 NodePort type 선언하기 [root@m-k8s ~]# cat _Book_k8sInfra/ch3/3.3.1/nodeport.yaml apiVersion: v1 kind: Service metadata: name: np-svc spec: selector: app: np-pods ports: - name: http protocol: TCP port: 80 targetPort: 80 node..
Node 쿠버네티스 스케줄러에서 파드를 할당받고 처리하는 역할 쿠버네티스는 모든 노드에 파드를 균등하게 배포하려고 하므로 사용하고 싶지 않은 노드가 있을 때는 사용자가 직접 설정해주어야 한다. 노드에 SchedulingDisabled옵션을 주어 노드가 추가 파드를 할당받지 않도록 할 수 있다. cordon과 drain cordon: 지정한 노드에서 실행 중인 파드는 건드리지 않고 추가적인 파드를 할당받지 않는다. drain: 지정한 노드에 새로 생성되는 파드를 할당하지 않을 뿐 아니라 노드에 이미 실행 중인 파드도 다른 노드로 이동시킨다. cordon 지정한 노드에서 실행 중인 파드는 건드리지 않고 추가적인 파드를 할당받지 않는다. [root@m-k8s ~]# kubectl get pod -o=custo..
파드 자체에 문제가 생기거나, 파드 내부에서 동작 중인 컨테이너에 문제가 생길 수 있는데, 두 가지 상황에 대해 자동 복구가 가능하다. 컨테이너 자동 복구 파드에서 동작 중인 컨테이너에 문제 발생 시, 파드가 컨테이너를 자동으로 재시작하거나 교체하여 항상 정상 작동을 유지할 수 있도록 노력한다. self-healing이라고도 한다. [root@m-k8s ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES echo-hname-7894b67f-8mb7s 1/1 Running 0 101m 172.16.132.1 w3-k8s echo-hname-7894b67f-kflct 1/1 Runni..
pod 생성 방식 정리 run 쉽게 파드 생성 가능 단일 파드 1개 생성 yaml 파일을 사용한 파드 생성 불가능 create 파드만 생성할 수는 없고 파드를 관리하는 deployment를 생성할 수 있음 yaml 파일을 사용한 오브젝트 생성 가능 apply yaml 파일을 사용한 오브젝트 생성 가능 YAML 문법으로 object spec 파일을 작성하여 원하는 스펙과 상태를 저장한다. # echo-hname.yaml apiVersion: apps/v1 # API 버전 kind: Deployment # 오브젝트 종류 metadata: name: echo-hname labels: app: nginx spec: replicas: 3 # 몇 개의 파드를 생성할지 결정 selector: matchLabels: ..
kubernetes에서 object란 spec과 status 등의 값을 포함한 파드, 디플로이먼트 등을 부르는 단위이다. Pod 쿠버네티스에서 실행되는 최소 단위 독립적인 공간과 사용 가능한 IP를 가짐 하나의 파드는 1개 이상의 컨테이너를 가지지만 보통 파드 1개당 1개의 컨테이너를 적용 run으로 파드를 생성하면 단일 파드 1개만 생성되고, create deployment로 파드를 생성하면 deployment라는 그룹 내에서 파드가 생성되고 deployment에 의해 파드가 관리된다. [root@m-k8s ~]# kubectl run nginx-pod --image=nginx pod/nginx-pod created [root@m-k8s ~]# kubectl get pod NAME READY STATU..
kubernetes에서 object란 spec과 status 등의 값을 포함한 파드, 디플로이먼트 등을 부르는 단위이다. Deployment 파드에 기반을 두고 있으며, 레플리카셋 오브젝트를 합친 상태 API 서버와 컨트롤러 매니저는 단순히 파드가 생성되는 것을 감시하는 것이 아니라 디플로이먼트처럼 레플리카셋을 포함하는 오브젝트의 생성 감시 [root@m-k8s ~]# kubectl create deployment dpy-hname --image=sysnet4admin/echo-hname deployment.apps/dpy-hname created [root@m-k8s ~]# kubectl get pod NAME READY STATUS RESTARTS AGE dpy-hname-59778b9bb-7kcz4..
[kubernetes] kubectl 동작 방식 확인 [kubernetes] kubelet 동작 방식 확인 [kubernetes] kube-proxy 동작 방식 확인 kube-proxy 파드의 통신을 담당한다. 이를 증명하기 위해 파드의 통신에 문제를 발생시켜 본다. 가상머신에서 br_netfilter 모듈을 사용해 네트워크를 연결시킨 로컬 클러스터를 사용중이다. [root@m-k8s ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-pod 1/1 Running 0 5s 172.16.132.2 w3-k8s [root@m-k8s ~]# curl 172.16.132.2 We..
[kubernetes] kubectl 동작 방식 확인 [kubernetes] kubelet 동작 방식 확인 [kubernetes] kube-proxy 동작 방식 확인 kubelet kubelet은 쿠버네티스에서 파드의 생성과 상태 관리 및 복구를 담당한다. kubelet에 문제가 생기면 파드가 정상적으로 관리되지 않는다. [root@m-k8s ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-pod 1/1 Running 0 16s 172.16.132.4 w3-k8s 마스터 노드에서 pod를 생성한다. pod는 현재 w3-k8s 노드에서 동작 중이다. [root@w3-k..
1. kubectl을 통해 API 서버에 파드 생성 요청 2. 업데이트가 있을 때마다 내용을 API 서버를 통해 etcd에 기록함 3. API 서버에 파드 생성이 요청된 것을 컨트롤러 매니저가 인지하면 컨트롤러 매니저가 파드를 생성하고 상태를 API 서버에 전달, 어떤 워커 노드에 파드를 적용할지는 결정되지 않은 채로 파드만 생성 4. API 서버에 파드가 생성됐다는 정보를 스케줄러가 인지, 스케줄러는 생성된 파드를 어떤 워커 노드에 적용할지 조건을 고려해 결정, 해당 워커 노드에 파드를 띄우도록 요청 5. API 서버에 전달된 정보대로 지정한 워커 노드에 파드가 속해 있는지 스케줄러가 kubelet으로 확인 6. kubelet에서 컨테이너 런타임으로 파드 생성 요청 7. 파드 생성 8. 파드가 사용 가..
[kubernetes] kubectl 동작 방식 확인 [kubernetes] kubelet 동작 방식 확인 [kubernetes] kube-proxy 동작 방식 확인 kubectl 쿠버네티스 클러스터에 명령을 내리는 역할 다른 구성 요소들과 다르게 바로 실행되는 명령 형태인 바이너리로 배포되기 때문에 마스터 노드에 있을 필요는 없음 [vagrant@w3-k8s ~]$ kubectl get nodes The connection to the server localhost:8080 was refused - did you specify the right host or port? 클러스터의 정보가 저장되지 않은 워커 노드에서 클러스터의 정보를 가져오려고 시도할 경우 실패한다. kubectl이 어떤 노드에 있더라도..
su-mmer
Summary Of Summer