ノート:

OCI VCNネイティブ・ポッド・ネットワーキングCNIプラグインを使用したOracle Cloud Infrastructure Container Engine for Kubernetesへのネットワーキング・サービスの提供

イントロダクション

デフォルトでは、Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)は、Oracle Cloud Infrastructure (OCI) VCNネイティブ・コンテナ・ネットワーク・インタフェース(CNI)プラグインを使用して、コンテナ化されたアプリケーションにネットワークまたはセキュリティ機能を提供します。このチュートリアルでは、どのようなCNIプラグインが使用されているかを確認する方法と、このデフォルトのCNIプラグイン(OCI VCNネイティブCNIプラグイン)を使用してOCI Load Balancerサービスを構成し、コンテナ内で実行されているアプリケーションにアタッチする方法について説明します。

イメージ

OCI VCNネイティブ・ポッド・ネットワーキングCNIプラグインを使用する利点は、ポッドまたはコンテナがVCNのプライベート・サブネットからIPアドレスを取得することです。つまり、Kubernetesポッドは、VM(インスタンス)またはベアメタル・ノードまたは他のワークロードと同じネットワークに存在します。

目的

タスク1: OKEを使用したKubernetesクラスタのデプロイ

選択できる様々なOKEデプロイメント・モデルの詳細は、ネットワーク・リソース構成の例を参照してください。

OKEデプロイメント・モデルの例は、次のとおりです。

例3のデプロイメント・モデルを選択します。詳細は、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. ポッド・セクションの出力では、名前がvcn-nativeであることに注意してください。

  3. デーモンセット・セクションの出力では、名前がvcn-nativeであることに注意してください。

イメージ

これにより、OCI VCNネイティブ・ポッド・ネットワーキングCNIプラグインがこのデプロイされたOKEデプロイメントに現在使用されていることが示されます。

タスク3: サンプル・アプリケーションのデプロイ

このサンプル・アプリケーションをOCI VCNネイティブ・ポッド・ネットワーキングCNIプラグインとともに使用し、次のタスクでOCI Load Balancerサービス・タイプを有効にします。

  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. アプリケーションが2つのポッドを使用してデプロイされていることを確認します。

イメージ

  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アプリケーションのインスタンスまたはポッドまたはレプリカが2つあり、ステータスがRUNNINGに設定されていることを確認します。

イメージ

次の図に、デプロイメントの視覚的な表現を示します。ワーカー・ノード内のデプロイ済の2つのポッドにフォーカスします。

イメージ

OCI VCNネイティブ・ポッド・ネットワーキングCNIプラグインを使用する利点は、ポッドまたはコンテナがVCNのプライベート・サブネットからIPアドレスを取得することです。つまり、Kubernetesポッドは、VM(インスタンス)またはベアメタル・ノードまたは他のワークロードと同じネットワークに存在します。

タスク4: Load BalancerタイプのKubernetesサービスの構成

サンプル・アプリケーションはOKE内で実行されており、ロード・バランサ・タイプのネットワーク・サービスをアプリケーションにアタッチすることで、アプリケーションをネットワークまたはインターネットに公開する時期です。

ロード・バランサ・デプロイメントのビジュアル表現は、次の図を参照してください。ロード・バランサに注目します。

イメージ

タスク5: Load Balancerタイプのサンプル・アプリケーションとKubernetesサービスの削除

サンプル・アプリケーションをデプロイし、ロード・バランサ・タイプの新しいKubernetesネットワーク・サービスを作成しました。アプリケーションおよびサービスをクリーンアップする時期です。

ロード・バランサはデプロイされていないことに注意してください。

イメージ

ロード・バランサの削除を視覚的に表したものを次の図に示します。ロード・バランサがデプロイされなくなった部分に注目します。

イメージ

承認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。