附註:

使用 OCI VCN 原生 Pod 網路 CNI Plugin 將網路服務提供給 Oracle Cloud Infrastructure Container Engine for Kubernetes

簡介

Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) 預設會使用 Oracle Cloud Infrastructure (OCI) VCN 原生容器網路介面 (CNI) 外掛程式,為容器化應用程式提供網路或安全功能。本教學課程將告訴您如何驗證使用的 CNI Plugin,以及如何使用此預設 CNI Plugin (OCI VCN 原生 CNI Plugin) 來設定 OCI 負載平衡器服務,並將其連附至容器內執行的應用程式。

圖像

使用 OCI VCN 原生 Pod 網路 CNI Plugin 的優點在於 Pod 或容器將會從 VCN 中的專用子網路取得 IP 位址。這表示您的 Kubernetes Pod 與您的 VM (執行處理) 或裸機節點或其他工作負載位於相同的網路中。

目標

作業 1:使用 OKE 部署 Kubernetes 叢集

如需我們可以選擇之不同 OKE 部署模型的詳細資訊,請參閱網路資源組態範例

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. 請注意,名稱在常駐程式集區段的輸出中為 vcn-native

圖像

這會顯示此部署的 OKE 部署目前使用 OCI VCN 原生 Pod 網路 CNI Plugin。

作業 3:建置範例應用程式

我們會將此範例應用程式與 OCI VCN 原生 Pod 網路 CNI Plugin 搭配使用,並在下一項作業中啟用 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. 請注意,應用程式是使用兩個 Pod 來部署。

圖像

  1. 執行下列命令,以更深入瞭解部署的 Pod。

    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 應用程式有兩個執行處理或 Pod 或複本,且狀態會設為 RUNNING

圖像

您可以在下列圖表中找到部署的視覺化表示法。聚焦在工作節點內部部署的兩個 Pod。

圖像

使用 OCI VCN 原生 Pod 網路 CNI Plugin 的優點在於 Pod 或容器將會從 VCN 中的專用子網路取得 IP 位址。這表示您的 Kubernetes Pod 與您的 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