Cohe

쿠버네티스 기초: 설정, 명령어, 그리고 오브젝트 생성 가이드 본문

배포 배우기

쿠버네티스 기초: 설정, 명령어, 그리고 오브젝트 생성 가이드

코헤0121 2024. 8. 13. 16:52
728x90

어제것 잘 되었는지 알아보는 명령어들

  • vagrant ssh m-k8s : ssh로 들어감
    • 이거 안되면 vagrant up 해보세요
  • sudo kubectl get nodes
  • sudo kubectl get pods --all-namespaces

⇒ 나는 완전히 꼬여서 다시 지웠음


Docker Desktop 에서 미니쿠베를 다운 받는다

  • 저기 빨간 네모가 저 초록색이 되어야 한다
    • 여기 들어가는거 어디냐고 자꾸 묻는데.. docker settings로 들어가면 바로 있음.. 상단 우측의 setting 아이콘이 있다
  • 쿠바네티스 기능을 다 가져올 수 있다
  • 위의 확인 명령어를 cmd에서 다시 해보자
    • kubectl get nodes
    • kubectl get pods --all-namespaces


xshell에서 작업 → 나는 cmd에서 작업 (이후 모든 작업을 cmd에서 하기 때문에 따로 적지 않음)

  1. kubectl create -f C:\HashiCorp\_Book_k8sInfra-main\ch3\3.1.6\nginx-pod.yaml
    • 파드?를 만든다??
  2. get pod
    • 파드를 get을 통해 있는지 확인해본다..
  • docker image 를 통해 nginx 가 있음을 볼 수 있다.
  • kubectl delete pod nginx-pod : 삭제
  • kubectl run nginx-pod --image=nginx 이걸로도 만들 수 있다
    • 이건 파드 1개만 설정 가능
  • create를 사용하는 이유?
    • deployment 는 파드들을 관리해주는 상위의 설정값들인데, run은 안만들어준다
    • 때문에 run으로 했다면 파드들을 관리해주는 상위의 deployment 만들어줘야한다. (책 109page)
    • kubectl create deployment dpy-nginx --image=nginx : 이를 통해 만들 수 있다

⇒ 이렇게 나오면 잘된 것이다.


레플리카셋으로 파드 수 관리하기

  • kubectl scale deployment dpy-nginx --replicas=3 : 파드 3개를 만들거다
    • deploy로 만들어서 파드를 집어넣을 수 있다
  • kubectl create deployment dpy-nginx2 --replicas=3 --image=nginx : nginx로 만드는 deployment를 여러개를 만들 수 있다
  • nginx의 파드들은 아래 빨간 네모들
  • 다 지운다
    • kubectl delete deployment dpy-nginx
    • kubectl delete deployment dpy-nginx2
  • 그 pod들은 다 오브젝트들이다~!

Spec을 사용해서 오브젝트를 만들어보자

3.2.4/echo-hname.yaml 파일을 확인하자

apiVersion: apps/v1    # API 버전
kind: Deployment       # 오브젝트 종류
metadata:   
  name: echo-hname     # deployment 이름
  labels:              
    app: nginx         
spec:                  
  replicas: 3          # 몇 개의 피드를 생성할 결정
  selector:
    matchLabels:
      app: nginx
  template:            # 탬풀랏 지정 labels를 통해서 템플릿을 불러올 수 있음
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: echo-hname
        image: sysnet4admin/echo-hname
  • kubectl api-versions : 갖고 있는 api들의 버전의 확인이 가능하다.
  • kubectl create -f C:\HashiCorp\_Book_k8sInfra-main\ch3\3.2.4\echo-hname.yaml : deplyment object를 만든다
    • 나는 경로까지 야무지게 썼다 ⇒ 잘 됨!!!

pod를 만들자!

C:\HashiCorp\_Book_k8sInfra-main\ch3\3.2.4\nginx-pod.yaml : 여기에 있어용~

apiVersion: v1                   # api 버전
kind: Pod                        # 오브젝트 종류
metadata:                        # 메타데이터 
  name: nginx-pod                # 오브젝트 이름
spec:
  containers:
  - name: container-name
    image: nginx
  • kubectl apply : ⇒ 내가 yaml 파일을 바꾸고 나서 이를 적용하고 싶을 때 쓰는 명령어

  • kubectl create deployment output —image=nignx -o yaml > output.yaml : 해당 명령어는 yaml 파일이 어려운 친구들을 위해 자동으로 만들어주는 명령어다
    • json 방식도 가능한데, 이유는 api이기 때문이다
    • json 객체 타입으로 전환되어서 보인다.
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: "2024-08-13T06:44:09Z"
  generation: 1
  labels:
    app: output
  name: output
  namespace: default
  resourceVersion: "25682"
  uid: 7e752eea-8a46-4241-aa5c-e734d46c04b2
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: output
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: output
    spec:
      containers:
      - image: nignx
        imagePullPolicy: Always
        name: nignx
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
status: {}
  • 이렇게 만들어진다~!

  1. kubectl exec 명령어 사용:
    • -는 pod와 실행할 명령어를 구분하기 위해 사용합니다.
    • 이 구분자를 사용하지 않아도 되지만, 사용하지 않는 방식은 deprecated(권장되지 않음) 되었습니다.
    • kubectl exec -it nginx-pod -- /bin/bash
  2. 배시 명령어 예시:
    • 이와 같은 방식으로 컨테이너 내에서 복잡한 배시 명령어를 실행할 수 있습니다.
    • i=1; while true; do sleep 1; echo $((i++)) `curl --silent 10.1.0.166 | grep title` ; done
  3. 쿠버네티스의 특징:
    • 리소스 삭제는 가능하지만 복잡한 편
    • 쿠버네티스의 주요 장점 중 하나는 사용자가 원하는 환경을 일관성 있게 유지할 수 있다

 

'배포 배우기' 카테고리의 다른 글

쿠버네티스 설치 방법  (0) 2024.08.13
Docker 2  (0) 2024.08.11
Docker  (1) 2024.08.08
CI/CD 배포  (0) 2024.08.05
리눅스 쉘 명령어2  (0) 2024.07.30