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로 적용할 수 있어요:
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)
컨테이너 스펙에서 다음 필드는 지원하지 않아요:
workingDirportslivenessProbereadinessProbestartupProberesizePolicystdinstdinOncettyEnvVarSource.fieldRefEnvVarSource.resourceFieldRefvolumeDeviceslifecycleterminationMessagePathterminationMessagePolicyimagePullPolicysecurityContext
기타 주의사항
현재 단일 파드에서 로그를 가져오지는 못해요. 단일 파드에서 로그를 가져오려 하면 네임스페이스의 모든 파드 로그를 가져오게 돼요.