Nota:

Inizia a utilizzare i cluster Kubernetes basati su Arm in Oracle Cloud Infrastructure

Questa esercitazione spiega come creare cluster Kubernetes basati su braccio che utilizzano la piattaforma di calcolo Ampere A1 in Oracle Cloud Infrastructure(OCI). Inoltre, distribuisci il contenitore Web più diffuso, Apache Tomcat nel cluster kubernetes. Utilizzando i metodi descritti in questa esercitazione, è possibile creare distribuzioni di applicazioni portatili tra i cluster kubernetes basati su Arm e i cluster basati su x86(Intel e AMD).

Introduzione

Obiettivi

In questa esercitazione:

Cos'è la piattaforma di calcolo Ampere A1

La piattaforma di calcolo Ampere A1 basata sulle CPU Ampere Altra rappresenta un cambiamento generazionale per le aziende e gli sviluppatori di applicazioni che stanno creando carichi di lavoro scalabili dai dispositivi perimetrali ai data center cloud. La progettazione esclusiva di questa piattaforma garantisce prestazioni coerenti e prevedibili, in quanto non vi sono conflitti di risorse all'interno di una memoria di computazione e offre maggiore isolamento e sicurezza. Questa nuova classe di forme di computazione su Oracle Cloud Infrastructure offre una piattaforma ineguagliabile che unisce la potenza delle CPU Altra alla sicurezza, alla scalabilità e all'ecosistema dei servizi su OCI.

Presentazione dell'architettura braccio nell'ambiente

Quando si introduce l'architettura Arm al processo di sviluppo delle applicazioni, nella maggior parte dei casi i flussi di lavoro di sviluppo rimangono gli stessi. Gli strumenti e il processo attualmente in uso continueranno a essere trasferiti senza problemi e la configurazione della workstation di sviluppo rimarrà invariata. L'eccezione generale è rappresentata dalle applicazioni di sistema di basso livello destinate a funzioni CPU specifiche mediante strumenti altamente specializzati. Nella maggior parte dei casi, per supportare l'architettura Arm, è possibile che si verifichino lievi modifiche ai passi di costruzione o di packaging nel flusso di lavoro. Iniziare analizzando il flusso di lavoro esistente per identificare se si dispone di passi di build o di packaging specifici della piattaforma.

Creare un cluster Kubernetes basato su Arm

Container Engine for Kubernetes è facile da usare e, insieme a OCI Cloud Shell, puoi avere il controllo completo senza dover impostare un ambiente locale. Per iniziare, crea un nuovo cluster Kubernetes nell'infrastruttura OCI.

  1. Nel menu di navigazione della console di Oracle Cloud andare a Servizi per gli sviluppatori e fare clic su Cluster Kubernetes.

  2. Fare clic su Crea cluster. È possibile utilizzare l'opzione Creazione rapida per utilizzare i valori predefiniti o l'opzione Creazione personalizzata per specificare le impostazioni avanzate. In quest'area viene utilizzata la creazione rapida in quanto le impostazioni predefinite scelte sono un ottimo inizio.

    Descrizione dell'illustrazione creazione cluster

  3. Nella pagina Crea cluster, scegliere alcune opzioni di configurazione di base, ad esempio la versione di Kubernetes che si desidera eseguire e il numero e la forma dei nodi per il cluster. Per questa esercitazione, scegliere la forma Ampere A1 per i nodi.

    Nota Scegliere la forma VM.Standard.A1.Flex per i nodi come mostrato.

    Descrizione dell'illustrazione creazione del workflow

    È anche possibile specificare un nome e un compartimento per il cluster. Il tipo di visibilità indica se i nodi nel cluster sono raggiungibili da Internet, ad esempio tramite SSH. È più comune mantenerli su una rete privata e utilizzare host bastion o jump sulla rete pubblica per fornire percorsi di accesso. Qui scegliamo l'impostazione predefinita per mantenere i nodi privati.

  4. Fare clic su Crea cluster. Il workflow avvia la creazione di tutte le risorse necessarie e del cluster stesso.

    Dopo aver creato le risorse di supporto, viene visualizzata la pagina dei dettagli del cluster. Il cluster viene creato e attivato nel giro di pochi minuti.

  5. Dopo che lo stato del cluster è Attivo, fare clic sul pulsante Accedi al cluster per visualizzare le modalità di accesso al cluster.

  6. Scegliere l'opzione Cloud Shell. Cloud Shell è un ambiente di terminale online completo di funzionalità integrato nella console. Cloud Shell dispone di tutti gli strumenti necessari per interagire con il cluster Kubernetes ed è la soluzione più rapida per iniziare senza configurare un ambiente di sviluppo locale.

    Descrizione dell'accesso alla figura nel cloudshell

    È possibile avviare Cloud Shell direttamente dalla pagina. Tenere presente che l'accesso a Cloud Shell è sempre disponibile nella parte superiore della console per un accesso rapido.

    La pagina include anche un comando da eseguire all'interno di Cloud Shell. Questo comando utilizza l'interfaccia CLI OCI per creare il file kubeconfig. I client Kubernetes come kubectl possono utilizzare un file di configurazione che facilita l'accesso al cluster. Tale file è generalmente denominato file kubeconfig. In genere, questo file di configurazione si trova in ~/.kube. Un singolo file di configurazione può contenere la configurazione dell'accesso per più cluster.

    Nota L'interfaccia CLI OCI è già installata e configurata per l'utente nell'ambiente Cloud Shell.

  7. Avviare Cloud Shell, quindi copiare il comando e incollarlo in Cloud Shell per eseguirlo. Il client della riga di comando standard per Kubernetes è kubectl ed è preinstallato nell'ambiente Cloud Shell.

    Ora, controlliamo se possiamo interagire con il cluster e vedere i nodi del cluster.

  8. Copiare il comando seguente in Cloud Shell ed eseguirlo.

    kubectl get nodes -o wide
    

    L'output dovrebbe essere simile all'esempio riportato di seguito, a seconda del numero di nodi nel cluster. La versione del kernel mostra che stiamo eseguendo Oracle Linux per l'architettura aarch64 (Arm a 64 bit).

    NAME          STATUS                     ROLES   AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                  KERNEL-VERSION                      CONTAINER-RUNTIME
    10.0.10.229   Ready                      node    3d7h   v1.19.7   10.0.10.229   <none>        Oracle Linux Server 7.9   5.4.17-2102.200.13.el7uek.aarch64   docker://19.3.11
    10.0.10.29    Ready                      node    3d7h   v1.19.7   10.0.10.29    <none>        Oracle Linux Server 7.9   5.4.17-2102.200.13.el7uek.aarch64   docker://19.3.11
    10.0.10.87    Ready                      node    3d7h   v1.19.7   10.0.10.87    <none>        Oracle Linux Server 7.9   5.4.17-2102.200.13.el7uek.aarch64   docker://19.3.11
    

    Ora che hai un cluster Kubernetes completamente funzionante e hai configurato gli strumenti per interagire con esso, puoi distribuire qualsiasi carico di lavoro kubernetes su di esso.

Distribuzioni perfette per i cluster Kubernetes

Ora puoi distribuire i carichi di lavoro in container nel cluster kubernetes basato su Arm. Le immagini dei container vengono create per architetture specifiche. Gli strumenti per i container come Docker o Buildah offrono i metodi per gestire queste immagini e distribuirle in modo trasparente. In questo esempio verrà distribuito Apache Tomcat, il popolare contenitore Web Java nel cluster kubernetes. Il runtime del docker recupererà l'immagine arm64v8 durante l'esecuzione su Arm e l'immagine amd64 durante l'esecuzione sulle architetture x86. Questo ci consente di creare file manifesti di distribuzione di kubernetes portatili, purché si creino le immagini dell'applicazione per entrambe le architetture.

Iniziare creando un file manifesto di distribuzione neutro dall'architettura. Il file manifesto non deve fare riferimento ad alcun contenitore specifico dell'architettura, in quanto il runtime del contenitore è in grado di rilevare l'architettura corretta e ottenere l'immagine appropriata. Per creare il file manifesto, eseguire il comando indicato di seguito. Crea un nuovo file denominato tomcat.yaml.

cat <<EOF > tomcat.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat
  labels:
    app: tomcat
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
        - name: tomcat
          image: tomcat:9
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: app-volume
              mountPath: /usr/local/tomcat/webapps/
      volumes:
        - name: app-volume
          configMap:
            name: app-bundle
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat
  labels:
    app: tomcat
spec:
  ports:
  - port: 80
    name: http
    targetPort: 8080
  selector:
    app: tomcat
  type: LoadBalancer
EOF

Questo file manifesto contiene gli oggetti e le azioni seguenti:

  1. Scaricare l'applicazione di esempio per Apache Tomcat e crearla come ConfigMap.

    wget https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war
    kubectl create configmap app-bundle --from-file sample.war
    

    Nota Questo metodo di attivazione di un'applicazione mediante ConfigMap è disponibile solo per comodità e non deve essere utilizzato nelle applicazioni di produzione.

  2. Distribuire il file manifesto. In questo modo vengono creati gli oggetti kubernetes, inclusi la distribuzione e il servizio. Quando si crea la distribuzione, il runtime docker ne rileva l'esecuzione sull'architettura a braccio teh e sceglie automaticamente la variante Arm del contenitore Apache Tomcat. L'applicazione Java distribuita nel contenitore è neutrale della piattaforma, pertanto lo stesso file .war può essere distribuito in tutte le architetture.

    kubectl apply -f tomcat.yaml
    
  3. Controllare lo stato della distribuzione

    kubectl get deploy,svc
    

    L'output dovrebbe essere simile a quello riportato di seguito

    NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/tomcat   2/2     2            2           9s
    
    NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)        AGE
    service/kubernetes   ClusterIP      10.96.0.1       <none>            443/TCP        3d9h
    service/tomcat       LoadBalancer   10.96.120.212   <pending>   80:32547/TCP         9s
    

    Ciò dimostra che Tomcat è stato distribuito correttamente sul nostro cluster kubernetes basato su Armature e serve un'applicazione Web Java. Il file manifesto di distribuzione utilizzato non è collegato all'architettura e può essere utilizzato sia per x86 che per i cluster basati su braccio.

  4. Facoltativamente, è possibile ottenere dettagli dettagliati a livello di nodo eseguendo

    kubectl get nodes -o wide
    kubectl describe node <node_name>
    

    Vengono visualizzate informazioni dettagliate sul nodo, inclusa l'architettura e i pod pianificati su tale nodo.

    Quando l'indirizzo IP esterno per LoadBalancer è disponibile (l'operazione potrebbe richiedere alcuni minuti) è possibile visitare la distribuzione puntando il browser Web su http://<your_loadbalancer_ip_address>/sample

Passi successivi

Esplora altri carichi di lavoro che puoi distribuire sul tuo cluster kubernetes basato su braccio visitando il repository dell'hub del docker delle immagini arm64v8 ufficiali qui

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di apprendimento gratuito sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare il sito Oracle Help Center.