Kubernetes 생성 명령어

KubernetesBeginner
지금 연습하기

소개

kubectl create 명령어는 Kubernetes 리소스를 생성하는 데 필수적인 도구입니다. YAML 또는 JSON 파일을 사용하여 네임스페이스, 배포 (Deployment), 서비스, 시크릿 (Secrets), ConfigMap 과 같은 리소스를 정의합니다. 이 랩에서는 이러한 리소스를 단계별로 생성하고 Kubernetes 에서의 역할을 이해하는 방법을 배우게 됩니다.

이 랩을 완료하면 다음을 수행할 수 있습니다.

  1. Minikube 클러스터를 시작하고 확인합니다.
  2. kubectl create를 사용하여 다양한 Kubernetes 리소스를 생성하고 확인합니다.

Minikube 시작 및 클러스터 확인

Kubernetes 를 사용하기 전에 실행 중인 클러스터가 필요합니다. Minikube 는 가벼운 로컬 Kubernetes 클러스터를 제공합니다.

  1. 프로젝트 디렉토리로 이동:

    터미널을 열고 기본 작업 디렉토리로 이동합니다.

    cd /home/labex/project
    
  2. Minikube 시작:

    Minikube 를 시작하여 클러스터를 초기화합니다.

    minikube start
    
    • Minikube 는 단일 노드 Kubernetes 클러스터를 생성합니다. 이 단계는 몇 분 정도 걸릴 수 있습니다.
  3. Minikube 상태 확인:

    Minikube 가 성공적으로 시작되었는지 확인합니다.

    minikube status
    

    apiserverkubelet과 같은 구성 요소가 Running으로 표시되는지 확인합니다.

  4. Kubernetes 구성 확인:

    kubectl이 Minikube 클러스터에 연결되어 있는지 확인합니다.

    kubectl cluster-info
    

    API 서버 및 기타 구성 요소에 대한 세부 정보를 표시합니다.

Minikube 가 시작에 실패하면 minikube delete를 사용하여 재설정하고 다시 시도하십시오.

kubectl create 명령어 탐색

kubectl create 명령어는 Kubernetes 리소스를 생성하기 위한 여러 하위 명령어를 제공합니다. 네임스페이스, 배포 (Deployment), 서비스, 시크릿 (Secrets), ConfigMap 과 같은 리소스 생성을 관리하는 데 도움이 됩니다.

사용 가능한 kubectl create 하위 명령어를 보려면 다음 명령을 실행하십시오.

kubectl create -h

다음과 같은 출력을 볼 수 있습니다.

Create a resource from a file or from stdin.

JSON and YAML formats are accepted.

Examples:
  ## Create a pod using the data in pod.json
  kubectl create -f ./pod.json

  ## Create a pod based on the JSON passed into stdin
  cat pod.json | kubectl create -f -

  ## Edit the data in registry.yaml in JSON then create the resource using the edited data
  kubectl create -f registry.yaml --edit -o json

Available Commands:
  clusterrole           Create a cluster role
  clusterrolebinding    Create a cluster role binding for a particular cluster role
  configmap             Create a config map from a local file, directory or literal value
  cronjob               Create a cron job with the specified name
  deployment            Create a deployment with the specified name
  ingress               Create an ingress with the specified name
  job                   Create a job with the specified name
  namespace             Create a namespace with the specified name
  poddisruptionbudget   Create a pod disruption budget with the specified name
  priorityclass         Create a priority class with the specified name
  quota                 Create a quota with the specified name
  role                  Create a role with single rule
  rolebinding           Create a role binding for a particular role or cluster role
  secret                Create a secret using specified subcommand
  service               Create a service using a specified subcommand
  serviceaccount        Create a service account with the specified name
  token                 Request a service account token

사용 가능한 하위 명령어와 해당 설명을 검토하여 kubectl create를 사용하는 방법을 이해하십시오.

네임스페이스 (Namespace) 생성

네임스페이스를 사용하면 Kubernetes 에서 리소스를 구성하고 격리할 수 있습니다.

  1. 네임스페이스 정의 파일 생성:

    namespace.yaml이라는 새 파일을 엽니다.

    nano namespace.yaml
    
  2. 네임스페이스 정의:

    다음 내용을 추가합니다.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: mynamespace
    

    Ctrl+X, Y, Enter를 눌러 파일을 저장합니다.

  3. 네임스페이스 적용:

    네임스페이스를 생성합니다.

    kubectl create -f namespace.yaml
    
  4. 네임스페이스 확인:

    네임스페이스 목록을 확인합니다.

    kubectl get namespaces
    

    출력에 mynamespace가 나타나는지 확인합니다.

배포 (Deployment) 생성

배포는 파드 (Pod) 의 원하는 상태를 관리하고 유지합니다.

  1. 배포 정의 파일 생성:

    deployment.yaml이라는 파일을 엽니다.

    nano deployment.yaml
    
  2. 배포 정의:

    Nginx 컨테이너의 세 개의 레플리카 (replica) 를 배포하기 위해 다음 내용을 추가합니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mydeployment
      namespace: mynamespace
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: myapp
      template:
        metadata:
          labels:
            app: myapp
        spec:
          containers:
            - name: nginx-container
              image: nginx
    

    파일을 저장합니다.

  3. 배포 적용:

    배포를 생성합니다.

    kubectl create -f deployment.yaml
    
  4. 배포 확인:

    배포 및 해당 파드를 확인합니다.

    kubectl get deployments -n mynamespace
    kubectl get pods -n mynamespace
    

    세 개의 파드가 실행 중인지 확인합니다.

서비스 (Service) 생성

서비스는 파드 집합에 대한 안정적인 네트워크 접근을 제공합니다.

  1. 서비스 정의 파일 생성:

    service.yaml이라는 파일을 엽니다.

    nano service.yaml
    
  2. 서비스 정의:

    다음 내용을 추가합니다.

    apiVersion: v1
    kind: Service
    metadata:
      name: myservice
      namespace: mynamespace
    spec:
      selector:
        app: myapp
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
    

    파일을 저장합니다.

  3. 서비스 적용:

    서비스를 생성합니다.

    kubectl create -f service.yaml
    
  4. 서비스 확인:

    서비스 목록을 확인합니다.

    kubectl get services -n mynamespace
    

    myservice가 목록에 있는지 확인합니다.

시크릿 (Secret) 생성

시크릿은 비밀번호 또는 API 키와 같은 민감한 정보를 안전하게 저장합니다.

  1. 시크릿 정의 파일 생성:

    secret.yaml이라는 파일을 엽니다.

    nano secret.yaml
    
  2. 시크릿 정의:

    Base64 로 인코딩된 값을 사용하여 다음 내용을 추가합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
      namespace: mynamespace
    type: Opaque
    data:
      username: dXNlcm5hbWU= ## Base64 for "username"
      password: cGFzc3dvcmQ= ## Base64 for "password"
    

    파일을 저장합니다.

  3. 시크릿 적용:

    시크릿을 생성합니다.

    kubectl create -f secret.yaml
    
  4. 시크릿 확인:

    시크릿 목록을 확인합니다.

    kubectl get secrets -n mynamespace
    

    mysecret가 출력에 나타나는지 확인합니다.

ConfigMap 생성

ConfigMap 은 구성 데이터를 키 - 값 쌍으로 저장합니다.

  1. ConfigMap 정의 파일 생성:

    configmap.yaml이라는 파일을 엽니다.

    nano configmap.yaml
    
  2. ConfigMap 정의:

    다음 내용을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: myconfigmap
      namespace: mynamespace
    data:
      database.host: "example.com"
      database.port: "5432"
    

    파일을 저장합니다.

  3. ConfigMap 적용:

    ConfigMap 을 생성합니다.

    kubectl create -f configmap.yaml
    
  4. ConfigMap 확인:

    ConfigMap 목록을 확인합니다.

    kubectl get configmaps -n mynamespace
    

    myconfigmap이 출력에 나타나는지 확인합니다.

요약

이 랩에서는 다음을 배웠습니다.

  1. Minikube 클러스터를 시작하고 확인합니다.
  2. 네임스페이스 (namespace), 배포 (deployment), 서비스 (service), 시크릿 (secret), ConfigMap 과 같은 Kubernetes 리소스를 생성합니다.
  3. 이러한 리소스의 상태를 확인합니다.

이러한 단계를 숙달함으로써 Kubernetes 에서 애플리케이션을 효과적으로 관리하고 배포할 수 있습니다. 이해도를 높이기 위해 이 단계를 연습하십시오!