웹사이트 검색

Kubernetes에서 서비스를 생성하는 방법


이 페이지에서

  1. 전제 조건
  2. 우리가 할 일\n
  3. 서비스 만들기
  4. 결론

서비스는 포드에 대한 추상화 계층입니다. Pod의 논리적 집합을 정의합니다. Pod에 액세스할 수 있는 단일 IP 주소와 DNS 이름을 제공합니다. 포드를 노출하는 데 사용됩니다.

Kubernetes에는 3가지 유형의 서비스가 있습니다.

  1. ClusterIP:
    Kubernetes 클러스터 내에서 서비스를 노출합니다. 이 서비스는 클러스터 내에서만 연결할 수 있습니다. 클러스터 외부에서 액세스할 수 없습니다.\n
  2. NodePort:
    배포된 노드의 정적 포트에서 서비스를 노출합니다. 이 서비스는 NodeIP:Nodeport를 사용하여 클러스터 외부에서 액세스할 수 있습니다.\n
  3. 로드 밸런서:
    클라우드 제공업체 로드 밸런서를 사용하여 서비스를 외부에 노출합니다. 이는 클라우드 제공업체에 공개 IP를 생성합니다.\n
  4. ExternalName:
    CNAME 레코드를 반환하여 서비스를 externalName 필드의 콘텐츠에 매핑합니다.\n


Kubernetes Service에 대해 자세히 알아보려면 여기를 클릭하세요.

이 기사에서는 NodePort 유형의 Serice를 작성하는 단계를 볼 것입니다.

전제 조건

  1. 최소 1개의 작업자 노드가 있는 Kubernetes 클러스터.
    Kubernetes 클러스터 생성 방법을 알아보려면 여기를 클릭하십시오. 이 안내서는 AWS Ubuntu EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n

우리가 할 일

  1. 서비스 만들기

서비스 만들기

먼저 서비스가 들어오는 모든 요청을 리디렉션할 다음 정의를 사용하여 배포를 생성합니다.

새 파일을 만들고 다음 콘텐츠를 추가하면 Nginx용 배포가 생성됩니다.

vim my-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nginx
  replicas: 3 
  template: 
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

배포를 생성하려면 다음 명령을 실행합니다.

kubectl create -f my-deployment.yml

이렇게 하면 3개의 복제본이 있는 Nginx용 배포가 생성됩니다.

다음 명령을 사용하여 배포, 복제 세트 및 포드의 세부 정보를 얻을 수 있습니다.

kubectl get deployment | grep nginx
kubectl get replicaset | grep nginx
kubectl get pod | grep nginx

위 스크린샷에서 Nginx의 복제본 3개가 생성된 것을 볼 수 있습니다.

이제 다음 콘텐츠를 사용하여 서비스 정의를 만듭니다.

vim my-service.yml
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  labels:
    app: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:    
app: nginx type: NodePort

위의 서비스 정의는 네임스페이스 기본값을 사용하여 NodePort 유형의 서비스를 생성하고 요청을 레이블 nginx와 일치하는 포드(즉, 이전 배포 생성 단계를 사용하여 생성한 포드)로 리디렉션합니다.

다음 명령을 실행하여 서비스를 생성합니다.

kubectl create -f my-service.yml

서비스 세부 정보를 가져오고 서비스를 사용할 수 있는 NodePort를 확인합니다.

kubectl get service | grep nginx
kubectl describe service nginx

위의 스크린샷에서 포트 30747에서 서비스를 사용할 수 있음을 알 수 있습니다. 포트는 사용 가능한 범위에서 임의로 할당되므로 다를 수 있습니다.

이제 NodeIp:NodePort에서 이 서비스를 통해 nginx 애플리케이션에 액세스할 수 있습니다.

106.210.138.189:30747입니다.

결론

이 기사에서는 3개의 복제본이 있는 Nginx용 배포를 만들고 NodePort 유형의 서비스를 만들었습니다. 배포를 사용하여 생성된 Nginx 애플리케이션이 NodeIP:Port에서 액세스되는 방법을 살펴보았습니다.