목록쿠버네틱스 (11)
코딩과로그
미니큐브 실행 $ minikube start 실행이 되면 미니큐브(마스터노드)가 kubectl 명령의 대상이 된다. 미니큐브는 내 호스트 내 가상 클러스터이다.이미지를 설정하여 deployment 만들기 # kubectl create deployment {deployment-name} --image={image-name} $ kubectl create deployment first-dep --image=sororiri/simple-node-appdeployment의 Pod를 3개로 만들기 $ kubectl scale deployment/{deployment-name} --replicas=3 $ kubectl scale deployment/{deployment-name} --replicas=3결과값 dep..

kubectl 명령어 자동완성 kubectl을 설치했지만 kubectl 로 명령을 칠 때에 자동완성이 되지 않아 답답한 일이 정말 많다. 예를 들어, kubectl get deployment 를 치려고 하면 kubectl get deplo 까지만 치고 Tab 을 눌러서 자동완성을 시키고 싶을 때에 아래처럼 스크립트에 코드를 넣어주면 Tab을 눌러 자동완성을 할 수 있다. Zsh 기준으로 kubectl 가 설치한 뒤, ~/.zsh.sh 내에 source

볼륨 차이점 쿠버네틱스 많은 드라이버와 타입을 지원함 볼륨이 반드시 지속되는 것이 아님 포드가 제거되면 같이 제거되기 때문 다른 포드의 볼륨을 참조할 수 있음 컨테이너가 삭제되거나 재시작되도 볼륨은 살아있음 포드에서 저장하는 거기 때문 도커 별도 드라이버나 타입 지원이 없음 수동으로 지워주지 않는 한 지속됨 호스트에 기록되는 거기 때문임 컨테이너가 제거되거나 재시작되도 살아있음
imagePullPolicy Deployment의 imagePullPolicy 기본값은 IfNotPresent 이다. 만약 Always 로 세팅되어있지 않으면 이미지를 변경해도 변경한 이미지의 태그와 이미지명이 변경되지 않았다면 새로운 이미지로 변경되지 않는다. ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#container-v1-core # Deployment apiVersion: apps/v1 kind: Deployment ... spec: ... spec: containers: - name: second-node image: academind/kub-first-app:2 # 이렇게 설정하면 같은 태그값이라도 이미지..
특정 라벨을 가진 객체를 삭제하고 싶을 때 아래 Config와 같은 Service 와 Deployment가 있다고 한다면 어떻게 삭제할까? ... kind: Service metadata: name: backend labels: groups: example ... --- ... kind: Deployment metadata: name: app labels: groups: example ... 아래의 명령어를 통해서 삭제가 가능하다. $ kubectl delete deployments,services -l group=example

명령형 터미널에 명령어를 하나하나 실행하는 것이다 $ kubectl create deployment ... 도커에서의 docker run 과 대응되는 형태이다. 선언형 명령할 내용들의 리스트를 미리 config 파일에 정의해놓고 한번에 적용시키는 것이다. $ kubectl apply -f config.yaml config 파일을 변경하고 다시 적용하면, 쿠버네틱스가 변경점을 찾아서 변경점에 대해서 변경한다. 도커 컴포즈과 대응되는 형태이다. ref: https://www.udemy.com/course/docker-kubernetes-the-practical-guide/learn/lecture/22627645#questions
만약 잘못된 이미지로 변경했을 때에 어떻게 해야될까? # 없는 이미지로 변경 시도 (sororiri/simple-node-app:4 이라는 이미지는 존재하지 않음) # kubectl set image deployment/{dep_id} {container_id}={image_id} $ kubectl set image deployment/first-dep simple-node-app=sororiri/simple-node-app:4 deployment.apps/first-dep image updated # 포드의 상태(ImagePullBackOff)를 보니 Pull 에 실패한 것을 확인할 수 있다. $ kubectl get pods NAME READY STATUS RESTARTS AGE first-dep-6..

Pod는 기본적으로 내부 IP를 갖는다. 포드끼리 통신하려면 서로의 IP 주소를 알아야될 것이다. 근데 Pods는 변경되는 게 일상이다보니 IP 로 특정 노드를 지정하는 것은 꽤나 어려운 일이다. 서비스 객체(Service Object)는 공유 IP를 포드와 그룹으로 묶는다. 서비스 객체는 포드를 클러스터 외부와 통신할 수 있게 한다. 디폴트는 외부 통신이 불가하다. 수정이 필요하다. # 서비스를 생성하여 deployment에 의해서 만들어진 포드를 외부와 통신할 수 있게 해준다. # ClusterIP로 설정하면 내부에서만 사용이 가능하다. 정적인 IP를 생성하는 거라 의미는 있지만 지금 중요한 것은 아니다. # LoadBalancer 는 고유한 IP를 만들고 이름처럼 포드들에 트래픽을 균등히 분배한다...