Kubernetes 생성 명령어

KubernetesBeginner
지금 연습하기

소개

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

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

  1. Minikube 클러스터를 시작하고 확인합니다.
  2. kubectl create를 사용하여 다양한 Kubernetes 리소스를 생성하고 확인합니다.
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 98%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

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 에서 애플리케이션을 효과적으로 관리하고 배포할 수 있습니다. 이해도를 높이기 위해 이 단계를 연습하십시오!