이 자습서에서는 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터에 간단한 hello-world
애플리케이션을 배포하고 외부 IP 주소를 통해 노출한 다음 브라우저를 통해 온라인으로 액세스하는 방법을 안내합니다.
예시 애플리케이션을 배포하려면 다음이 필요합니다.
kubectl
, Carvel 도구를 실행하는 로컬 컴퓨터. 지침은 vSphere with Tanzu Supervisor와 함께 사용할 Tanzu CLI 및 기타 도구 설치 또는 독립형 관리 클러스터에 사용할 Tanzu CLI 및 기타 도구 설치를 참조하십시오.예시 구성 YAML 파일을 복사하고 워크로드 클러스터에 적용하여 hello-world
애플리케이션을 배포합니다.
참고VMware 다음과 같은 이유로 워크로드를 독립형 관리 클러스터 자체에 배포하지 않는 것이 좋습니다.
- 독립형 관리 클러스터와 워크로드 클러스터는 별개의 문제가 있습니다.
- 독립형 관리 클러스터는 워크로드 클러스터처럼 백업되지 않습니다. 복원력을 보장하기 위해 독립형 관리 클러스터 구성은 코드로 가장 잘 관리됩니다.
다음 구성을 사용하여 hello-world
애플리케이션에 YAML 파일을 생성합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: load-balancer-example
name: hello-world
spec:
replicas: 5
selector:
matchLabels:
app.kubernetes.io/name: load-balancer-example
template:
metadata:
labels:
app.kubernetes.io/name: load-balancer-example
spec:
containers:
- image: gcr.io/google-samples/node-hello:1.0
name: hello-world
ports:
- containerPort: 8080
워크로드 클러스터가 Windows 사용자 지정 시스템 이미지에서 자세히 설명된 대로 Windows 이미지를 사용하는 경우, 다음 spec.template.spec.tolerations
를 추가하고 위의 containers
와 같이 인라인으로 들여 씁니다.
tolerations:
- value: "windows"
key: os
operator: Equal
effect: "NoSchedule"
nodeSelector:
kubernetes.io/os: windows
이름을 load-balancer-example.yaml
로 하여 YAML 파일을 저장합니다.
다음을 실행하여 워크로드 클러스터의 컨텍스트로 kubectl
을 설정합니다.
kubectl config use-context CLUSTER-admin@CLUSTER
여기서 CLUSTER
는 워크로드 클러스터의 이름입니다.
워크로드 클러스터에 애플리케이션을 배포합니다.
kubectl apply -f load-balancer-example.yaml
출력은 다음과 비슷합니다.
deployment.apps/hello-world created
브라우저에서 애플리케이션에 액세스할 수 있도록 애플리케이션의 외부 IP 주소를 노출하는 서비스 개체를 생성합니다.
my-service
라는 서비스 개체를 생성합니다.
kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
출력은 다음과 비슷합니다.
service/my-service exposed
브라우저에서 외부 IP 주소를 사용하여 hello-world
애플리케이션에 액세스합니다.
그 다음 단계에서 사용할 다음 명령의 출력에서 LoadBalancer Ingress
및 TargetPort
값을 기록합니다.
kubectl describe services my-service
출력은 다음과 비슷합니다.
Name: my-service
Namespace: default
Labels: app.kubernetes.io/name=load-balancer-example
Annotations: <none>
Selector: app.kubernetes.io/name=load-balancer-example
Type: LoadBalancer
IP Families: <none>
IP: 100.67.254.91
IPs: 100.67.254.91
LoadBalancer Ingress: 10.186.21.200
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 32202/TCP
Endpoints: 100.96.1.15:8080,100.96.1.16:8080,100.96.1.17:8080 + 2 more...
Session Affinity: None
External Traffic Policy: Cluster
참고
LoadBalancer Ingress
가 표시되지 않는 경우 이 워크로드 클러스터에 로드 밸런서가 구성되어 있는지 확인합니다.
브라우저에서 https://IP:PORT
로 이동합니다. 여기서 IP
는 LoadBalancer Ingress
의 값이고, PORT
는 이전 단계에서 기록한 포트 번호 값 TargetPort
입니다. 예: https://10.186.21.200:8080
.
hello-world
애플리케이션에 다음이 표시됩니다.
Hello Kubernetes!
이제 애플리케이션이 배포되면 트래픽을 관리하고, 로그를 보고, Contour, Fluent Bit, Prometheus, Grafana와 같은 패키지로 해당 작업을 모니터링할 수 있습니다. 이러한 패키지를 설치하려면 Tanzu CLI를 사용하여 패키지 제거 및 관리를 참조하십시오.
Velero를 사용하여 워크로드를 백업 및 복원하거나 마이그레이션하려면 클러스터 워크로드 백업 및 복원을 참조하십시오.