[Jenkins] Kubernetis 명령어

seopppio·2024년 12월 22일

Jenkins

목록 보기
17/25


쿠버네티스 싱글노드(마스터이자, 워커)를 운영해보자. 이를 간단히 미니큐브라한다

kubectl get nodes

Kubectl로 nginx웹서버 다운받아, 컨테이너 방식으로 기동

kubectl run sample-nginx --image=nginx --port=80

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


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

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


지울 수도 있음

deployment

deployment는 가지고 있는 pod를 여러개 형태로 스케일링, 스케줄링할 때 사용할 수 있는 개념

pod 상위 개념으로 deployment로 감싸서 배포한다면 스케일링/스케줄 작업이 편하다



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

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


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

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

  • pod == container는 아니다. Ready에 나와있는게, 파드 내부 컨테이너 개수와, 몇개가 정상적으로 작동되고 있는건지 알려주는것

    디플로이먼트를 보면, 2개의 파드가 있고 2개가 실행 중 이다.

Kubectl 명령어를 스크립트로 짜서 진행

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 파이프라인을 통해, 결과물인 웹어플리케이션을 파드형태로 지원하주는 쿠버네티스에서 실행을 배포해보고 싶은 것

exec, 파드 내부로 터널링 진입해서 사용

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


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

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

expose, 사용하는 디플로이먼트 외부 노출


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

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

dockerhub에 있는 이미지 다운 받아서, 쿠버네티스로 기동

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
      


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

0개의 댓글