주:

OCI VCN-Native Pods Networking CNI 플러그인을 사용하여 Oracle Cloud Infrastructure Container Engine for Kubernetes에 네트워킹 서비스 제공

소개

기본적으로 OKE(Oracle Cloud Infrastructure Container Engine for Kubernetes)는 OCI(Oracle Cloud Infrastructure) VCN-Native Container Network Interface(CNI) 플러그인을 사용하여 컨테이너화된 애플리케이션에 네트워크 또는 보안 기능을 제공합니다. 이 자습서에서는 CNI 플러그인이 사용되는지 확인하고 이 기본 CNI 플러그인(OCI VCN-Native CNI 플러그인)을 사용하여 OCI 로드 밸런서 서비스를 구성하고 컨테이너 내에서 실행되는 애플리케이션에 연결하는 방법을 보여줍니다.

이미지

OCI VCN-Native Pods Networking CNI 플러그인을 사용하면 Pod 또는 컨테이너가 VCN의 전용 서브넷에서 IP 주소를 얻을 수 있다는 이점이 있습니다. 즉, Kubernetes 포드는 VM(인스턴스)이나 베어메탈 노드 또는 기타 워크로드와 동일한 네트워크에 있습니다.

목표

작업 1: OKE를 사용하여 Kubernetes 클러스터 배치

선택할 수 있는 여러 OKE 배치 모델에 대한 자세한 내용은 Example Network Resource Configurations을 참조하십시오.

OKE 배치 모델의 예는 다음과 같습니다.

예제 3 배포 모델을 선택합니다. 자세한 내용은 세 개의 작업자 노드로 Oracle Cloud Infrastructure Container Engine for Kubernetes 설정을 참조하십시오.

작업 2: 설치된 CNI 플러그인 확인

OKE를 사용하는 Kubernetes 클러스터가 완전히 배치되어 있고 이 클러스터에 액세스할 수 있는 경우 다음 명령을 실행할 수 있습니다.

  1. 다음 명령을 실행합니다.

    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ **kubectl get all -n kube-system** 
    NAME                                      READY   STATUS    RESTARTS     AGE
    pod/coredns-64ffdf5cf7-lvrhq              1/1     Running   0            2d
    pod/coredns-64ffdf5cf7-rmxt8              1/1     Running   0            2d
    pod/coredns-64ffdf5cf7-vq76p              1/1     Running   0            2d
    pod/csi-oci-node-ghff6                    1/1     Running   0            2d
    pod/csi-oci-node-jrjpr                    1/1     Running   0            2d
    pod/csi-oci-node-r68qz                    1/1     Running   1 (2d ago)   2d
    pod/kube-dns-autoscaler-5bb955d5c-r2j2q   1/1     Running   0            2d
    pod/kube-proxy-5cznp                      1/1     Running   0            2d
    pod/kube-proxy-fddrd                      1/1     Running   0            2d
    pod/kube-proxy-sb769                      1/1     Running   0            2d
    pod/proxymux-client-7s7f9                 1/1     Running   0            2d
    pod/proxymux-client-lngrm                 1/1     Running   0            2d
    pod/proxymux-client-qxlf2                 1/1     Running   0            2d
    **pod/vcn-native-ip-cni-hkfjz               1/1     Running   0            2d
    pod/vcn-native-ip-cni-pdv4c               1/1     Running   0            2d
    pod/vcn-native-ip-cni-qfvk8               1/1     Running   0            2d**
    
    NAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
    service/kube-dns   ClusterIP   10.96.5.5    <none>        53/UDP,53/TCP,9153/TCP   2d
    
    NAME                                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                                 AGE
    daemonset.apps/csi-oci-node               3         3         3       3            3           <none>                                        2d
    daemonset.apps/kube-proxy                 3         3         3       3            3           beta.kubernetes.io/os=linux                   2d
    daemonset.apps/node-termination-handler   0         0         0       0            0           oci.oraclecloud.com/oke-is-preemptible=true   2d
    daemonset.apps/nvidia-gpu-device-plugin   0         0         0       0            0           <none>                                        2d
    daemonset.apps/proxymux-client            3         3         3       3            3           node.info.ds_proxymux_client=true             2d
    **daemonset.apps/vcn-native-ip-cni          3         3         3       3            3           <none>                                        2d**
    
    NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/coredns               3/3     3            3           2d
    deployment.apps/kube-dns-autoscaler   1/1     1            1           2d
    
    NAME                                            DESIRED   CURRENT   READY   AGE
    replicaset.apps/coredns-64ffdf5cf7              3         3         3       2d
    replicaset.apps/kube-dns-autoscaler-5bb955d5c   1         1         1       2d
    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ 
    
  2. pod 섹션의 출력에서 이름은 vcn-native입니다.

  3. daemonset 섹션의 출력에서 이름이 vcn-native인 것을 확인할 수 있습니다.

이미지

OCI VCN-Native Pods Networking CNI 플러그인이 현재 이 배치된 OKE 배치에 사용 중임을 보여줍니다.

작업 3: 샘플 응용 프로그램 배치

이 샘플 애플리케이션을 OCI VCN-Native Pods Networking CNI 플러그인과 함께 사용하고 다음 작업에서 OCI 로드 밸런서 서비스 유형을 사용으로 설정합니다.

  1. 다음 명령을 실행하여 OKE 내에 샘플 Nginx 응용 프로그램을 배치합니다.

    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl apply -f https://k8s.io/examples/application/deployment.yaml 
    deployment.apps/nginx-deployment created
    
  2. 다음 명령을 실행하여 배치된 샘플 Nginx 응용 프로그램의 세부 정보를 확인합니다.

    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl describe deployment nginx-deployment
    Name:                   nginx-deployment
    Namespace:              default
    CreationTimestamp:      Fri, 08 Mar 2024 07:57:02 +0000
    Labels:                 <none>
    Annotations:            deployment.kubernetes.io/revision: 1
    Selector:               app=nginx
    Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
    StrategyType:           RollingUpdate
    MinReadySeconds:        0
    RollingUpdateStrategy:  25% max unavailable, 25% max surge
    Pod Template:
      Labels:  app=nginx
      Containers:
       nginx:
        Image:        nginx:1.14.2
        Port:         80/TCP
        Host Port:    0/TCP
        Environment:  <none>
        Mounts:       <none>
      Volumes:        <none>
    Conditions:
      Type           Status  Reason
      ----           ------  ------
      Available      True    MinimumReplicasAvailable
      Progressing    True    NewReplicaSetAvailable
    OldReplicaSets:  <none>
    NewReplicaSet:   nginx-deployment-86dcfdf4c6 (2/2 replicas created)
    Events:
      Type    Reason             Age   From                   Message
      ----    ------             ----  ----                   -------
      Normal  ScalingReplicaSet  14s   deployment-controller  Scaled up replica set nginx-deployment-86dcfdf4c6 to 2
    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
    
  3. 응용 프로그램은 두 개의 포드를 사용하여 배치됩니다.

이미지

  1. 다음 명령을 실행하여 배치된 포드를 자세히 살펴봅니다.

    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods
    NAME                                READY   STATUS    RESTARTS   AGE
    nginx-deployment-86dcfdf4c6-fdxgz   1/1     Running   0          3m46s
    nginx-deployment-86dcfdf4c6-fqrkh   1/1     Running   0          3m46s
    iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ 
    
  2. Nginx 응용 프로그램에는 두 개의 인스턴스, 포드 또는 복제본이 있고 상태가 RUNNING으로 설정되어 있습니다.

이미지

배포에 대한 시각적 표현은 다음 다이어그램에서 확인할 수 있습니다. 워커 노드 내에 배치된 두 포드에 초점을 맞춥니다.

이미지

OCI VCN-Native Pods Networking CNI 플러그인을 사용하면 Pod 또는 컨테이너가 VCN의 전용 서브넷에서 IP 주소를 얻을 수 있다는 이점이 있습니다. 즉, Kubernetes 포드는 VM(인스턴스)이나 베어메탈 노드 또는 기타 워크로드와 동일한 네트워크에 있습니다.

작업 4: 로드 밸런서 유형의 Kubernetes 서비스 구성

샘플 애플리케이션은 OKE 내부에서 실행되고 있습니다. 이제 로드 밸런서 유형의 네트워크 서비스를 애플리케이션에 연결하여 네트워크 또는 인터넷에 애플리케이션을 노출해야 합니다.

로드 밸런서 배포의 시각적 표현은 다음 다이어그램에서 확인할 수 있습니다. 로드 밸런서에 집중합니다.

이미지

작업 5: 로드 밸런서 유형의 샘플 애플리케이션 및 Kubernetes 서비스 제거

샘플 애플리케이션을 배치하고 로드 밸런서 유형의 새 Kubernetes 네트워크 서비스를 생성했습니다. 이제 애플리케이션과 서비스를 정리할 때입니다.

더 이상 배치된 로드 밸런서가 없습니다.

이미지

로드 밸런서 삭제에 대한 시각적 표현은 다음 다이어그램에서 확인할 수 있습니다. 로드 밸런서가 더 이상 배치되지 않는 부분에 초점을 맞춥니다.

이미지

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.