
쿠버네티스 싱글노드(마스터이자, 워커)를 운영해보자. 이를 간단히 미니큐브라한다
kubectl get nodes
kubectl run sample-nginx --image=nginx --port=80

컨테이너 엔진 작동 중이어야하고, 쿠버네티스 관리 단위가 pod다


pod에 대한 정보 모두 확인 가능

pod 생성 관련 이벤트 볼 수 있음

지울 수도 있음
deployment는 가지고 있는 pod를 여러개 형태로 스케일링, 스케줄링할 때 사용할 수 있는 개념
pod 상위 개념으로 deployment로 감싸서 배포한다면 스케일링/스케줄 작업이 편하다



위에는 그냥 파드로 실행, 아래는 랜덤한 이름으로 생긴 파드 하나가 디플로이먼트에 묶여서 실행 중인 것

디플로이먼트에 있는 파드를 삭제했다

또 파드가 있다. 새롭게 만들어진 파드이다. 디플로이먼트에서 파드를 실행하면, 디플로이먼트에서 유지하고자 하는 최소한의 파드를 유지한다. 즉, 디플로이먼트에서 제시한 파드 개수를 유지하려는 속성을 가지고 있다

디플로이먼트가 최소한으로 유지돼야하는 파드를 2개로 변경했기 때문에, 디플로이먼트가 자동으로 하나를 더 추가시켰다

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
4가지 파트
apiVersion : kind에 따라 다르지만, 일반적으로 많이 사용하는 pod, service, deployment는 apps-v1이 사용됨
kind : 만들고자하는 쿠버네티스 오브젝트
metadata : 작성하고 있는 스크립트의 이름,레이블링 가능(자유롭게 키,벨류 형태로 정의)
spec : kind에 필요한 option 정의
우리가 가지고 있는 CI/CD 파이프라인을 통해, 결과물인 웹어플리케이션을 파드형태로 지원하주는 쿠버네티스에서 실행을 배포해보고 싶은 것

kubectl exec -it nginx-deployment-XXXX-XXXX -- /bin/bash

ngnix는 우분투 계열이라 apt-get으로 다운받는다


엔지닉스 웹서버로 설치한 내용 확인 가능.
호스트 PC에서 사용하고자하면, 서비스 형태로 오픈시켜줘야 사용 가능

NodePort타입, 각각의 노드에 포딩을 걸어 놓은 상태에서 쓸수 있게끔 만들어 놓음

앞에는 포드가 갖고 있는 포트, 뒤는 포워딩된 포트(윈도우,맥OS에서 사용가능한 포트)

deployment yml파일
apiVersion: apps/v1
kind: Deployment
metadata:
name: cicd-deployment
spec:
selector:
matchLabels:
app: cicd-devops-project
replicas: 2
template:
metadata:
labels:
app: cicd-devops-project
spec:
containers:
- name: cicd-devops-project
image: seopioo/cicd-project-ansible
imagePullPolicy: Always
ports:
- containerPort: 8080
service yml파일 -> 위에서 기동한 디플로이먼트 접근하기 위해
apiVersion: v1
kind: Service
metadata:
name: cicd-service
labels:
app: cicd-devops-project
spec:
selector:
app: cicd-devops-project
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 32000


쿠버네티스에서 만든 이미지가 서비스 되는 것