본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Fly Kubernetes 퀵스타트

원문 보기 위키 갱신

이번 문서에서는 Fly Kubernetes(FKS)로 쿠버네티스 클러스터를 만들고 연결하는 빠른 시작 방법을 안내해 드릴게요. fly ext k8s create로 클러스터를 만들고, 반환된 kubeconfig를 이용해 kubectl로 API 서버에 연결하는 과정을 단계별로 살펴볼 수 있어요.

출처: 문서

본문

Fly Kubernetes는 비공개 베타(closed beta) 상태이며, 중요한 프로덕션 사용에는 권장되지 않아요. 문제를 보고하거나 피드백을 주려면 [beta@fly.io](mailto:beta@fly.io)로 이메일을 보내주세요.

쿠버네티스 클러스터를 만들려면, 다음을 실행하세요:

fly ext k8s create

이렇게 하면 프로비저닝 프로세스가 시작돼요. 클러스터 이름, 조직, 클러스터를 만들 리전을 묻는 메시지가 표시돼요.

클러스터가 프로비저닝되면 kubectl로 클러스터의 쿠버네티스 API 서버에 연결하는 데 사용할 수 있는 kubeconfig가 반환돼요.

예를 들어:

apiVersion: v1
clusters:
  - name: fks-flyio-fksdemo
    cluster:
      certificate-authority-data: ...
      server: https://fks-flyio-fksdemo.flycast:6443
      extensions:
      ...
      ...
contexts:
  - context:
      cluster: fks-flyio-fksdemo
      user: default
    name: default
current-context: default
kind: Config
preferences: {}
users:
  - name: default
    user:
    ...
    ...

출력 내용을 kubeconfig라는 파일에 저장하고, 파일을 가리키는 환경 변수 KUBECONFIG를 만들 거예요:

export KUBECONFIG=/path/to/kubeconfig/file

클러스터는 조직의 프라이빗 WireGuard 네트워크를 통해 접근할 수 있어요. 클러스터에 연결하려면 WireGuard 구성이 필요해요.

Fly.io IPv6 프라이빗 네트워크에 영구 WireGuard 연결을 설정하려면 프라이빗 네트워크 VPN 지침을 따르세요.

거기서부터 표준 YAML 구성을 사용해 쿠버네티스를 구동할 수 있어요. 쿠버네티스 공식 문서의 간단한 배포 예제예요:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

이렇게 하면 nginx 파드 3개가 있는 ReplicaSet이 만들어져요. kubectl로 적용할 수 있어요:

```bash cmd kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml ```
deployment.apps/nginx-deployment created

배포를 확인할 수 있어요:

```bash cmd kubectl get deployments ```
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           7s

배포의 모든 파드 로그를 볼 수 있어요:

```bash cmd kubectl logs -l app=nginx ```
Pulling container image registry-1.docker.io/library/nginx:1.14.2
Pulling container image registry-1.docker.io/library/nginx:1.14.2
Pulling container image registry-1.docker.io/library/nginx:1.14.2
Successfully prepared image registry-1.docker.io/library/nginx:1.14.2 (1.597714717s)
Successfully prepared image registry-1.docker.io/library/nginx:1.14.2 (1.493016957s)
Successfully prepared image registry-1.docker.io/library/nginx:1.14.2 (1.604003393s)
Configuring firecracker
Configuring firecracker
Configuring firecracker
...

지원하지 않는 것

  • 다중 컨테이너 파드(곧 출시 예정)
  • 네트워크 정책(Network policies)
  • 수평 파드 오토스케일링(Horizontal pod autoscaling)
  • Gateway API
  • 데몬셋(Daemon sets)
  • EmptyDir 볼륨
  • 대화형 파드(kubectl run --interactive --tty)

컨테이너 스펙에서 다음 필드는 지원하지 않아요:

  • workingDir
  • ports
  • livenessProbe
  • readinessProbe
  • startupProbe
  • resizePolicy
  • stdin
  • stdinOnce
  • tty
  • EnvVarSource.fieldRef
  • EnvVarSource.resourceFieldRef
  • volumeDevices
  • lifecycle
  • terminationMessagePath
  • terminationMessagePolicy
  • imagePullPolicy
  • securityContext

기타 주의사항

현재 단일 파드에서 로그를 가져오지는 못해요. 단일 파드에서 로그를 가져오려 하면 네임스페이스의 모든 파드 로그를 가져오게 돼요.

관련 주제

더 알아보기 (Learn more)