

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di Flink Native Kubernetes
<a name="jobruns-flink-native-kubernetes"></a>

I rilasci 6.13.0 e successivi di Amazon EMR supportano Flink Native Kubernetes come strumento di riga di comando che puoi utilizzare per inviare ed eseguire applicazioni Flink in un cluster Amazon EMR su EKS.

**Topics**
+ [Configurazione di Flink Native Kubernetes per Amazon EMR su EKS](jobruns-flink-native-kubernetes-setup.md)
+ [Nozioni di base su Flink Native Kubernetes per Amazon EMR su EKS](jobruns-flink-native-kubernetes-getting-started.md)
+ [Requisiti di sicurezza degli account JobManager di servizio Flink per Native Kubernetes](jobruns-flink-native-kubernetes-security-requirements.md)

# Configurazione di Flink Native Kubernetes per Amazon EMR su EKS
<a name="jobruns-flink-native-kubernetes-setup"></a>

Completa le seguenti attività per definire la configurazione prima di poter eseguire un'applicazione con la CLI di Flink in Amazon EMR su EKS. Se hai già effettuato la registrazione ad Amazon Web Services (AWS) e hai utilizzato Amazon EKS, ti manca poco per cominciare a utilizzare Amazon EMR su EKS. Se hai già completato uno dei prerequisiti, puoi saltarli e passare a quello successivo.
+ **[Installa o aggiorna alla versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)**: se hai già installato il AWS CLI, conferma di disporre della versione più recente.
+ **[Inizia a usare Amazon EKS — eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html)** — Segui i passaggi per creare un nuovo cluster Kubernetes con nodi in Amazon EKS.
+ **[Seleziona un URI dell'immagine di base Amazon EMR](docker-custom-images-tag.md) (rilascio 6.13.0 o successivo)**: il comando Flink Kubernetes è supportato con i rilasci 6.13.0 e successivi di Amazon EMR.
+ Verifica che l'account del JobManager servizio disponga delle autorizzazioni appropriate per creare e guardare i pod. TaskManager Per ulteriori informazioni, consulta [Requisiti di sicurezza degli account di JobManager servizio Flink per](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/jobruns-flink-native-kubernetes-security-requirements.html) Native Kubernetes.
+ Configura il tuo [profilo di credenziali AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) locale.
+ [Crea o aggiorna un file kubeconfig per un cluster Amazon EKS ](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html)su cui desideri eseguire le applicazioni Flink.

# Nozioni di base su Flink Native Kubernetes per Amazon EMR su EKS
<a name="jobruns-flink-native-kubernetes-getting-started"></a>

Questi passaggi mostrano come configurare, configurare un account di servizio ed eseguire un'applicazione Flink. Flink Native Kubernetes viene utilizzato per distribuire Flink su un cluster Kubernetes in esecuzione.

## Configura ed esegui un'applicazione Flink
<a name="jobruns-flink-native-kubernetes-getting-started-run-application"></a>

Amazon EMR 6.13.0 e versioni successive supportano Flink Native Kubernetes per l'esecuzione di applicazioni Flink su un cluster Amazon EKS. Per eseguire un'applicazione Flink, completa questa procedura:

1. Prima di poter eseguire un'applicazione Flink con il comando Flink Native Kubernetes, completa le fasi indicate in [Configurazione di Flink Native Kubernetes per Amazon EMR su EKS](jobruns-flink-native-kubernetes-setup.md).

1. [Scarica e installa Flink](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/try-flink/local_installation).

1. Imposta i valori delle seguenti variabili di ambiente.

   ```
   #Export the FLINK_HOME environment variable to your local installation of Flink
   export FLINK_HOME=/usr/local/bin/flink #Will vary depending on your installation
   export NAMESPACE=flink
   export CLUSTER_ID=flink-application-cluster
   export IMAGE=<123456789012.dkr.ecr.sample-Regione AWS-.amazonaws.com/flink/emr-6.13.0-flink:latest>
   export FLINK_SERVICE_ACCOUNT=emr-containers-sa-flink
   export FLINK_CLUSTER_ROLE_BINDING=emr-containers-crb-flink
   ```

1. Crea un account di servizio per gestire le risorse Kubernetes.

   ```
   kubectl create serviceaccount $FLINK_SERVICE_ACCOUNT -n $NAMESPACE
   kubectl create clusterrolebinding $FLINK_CLUSTER_ROLE_BINDING --clusterrole=edit --serviceaccount=$NAMESPACE:$FLINK_SERVICE_ACCOUNT
   ```

1. Esegui il comando della CLI `run-application`.

   ```
   $FLINK_HOME/bin/flink run-application \
       --target kubernetes-application \
       -Dkubernetes.namespace=$NAMESPACE \
       -Dkubernetes.cluster-id=$CLUSTER_ID \
       -Dkubernetes.container.image.ref=$IMAGE \
       -Dkubernetes.service-account=$FLINK_SERVICE_ACCOUNT \
       local:///opt/flink/examples/streaming/Iteration.jar
   2022-12-29 21:13:06,947 INFO  org.apache.flink.kubernetes.utils.KubernetesUtils            [] - Kubernetes deployment requires a fixed port. Configuration blob.server.port will be set to 6124
   2022-12-29 21:13:06,948 INFO  org.apache.flink.kubernetes.utils.KubernetesUtils            [] - Kubernetes deployment requires a fixed port. Configuration taskmanager.rpc.port will be set to 6122
   2022-12-29 21:13:07,861 WARN  org.apache.flink.kubernetes.KubernetesClusterDescriptor      [] - Please note that Flink client operations(e.g. cancel, list, stop, savepoint, etc.) won't work from outside the Kubernetes cluster since 'kubernetes.rest-service.exposed.type' has been set to ClusterIP.
   2022-12-29 21:13:07,868 INFO  org.apache.flink.kubernetes.KubernetesClusterDescriptor      [] - Create flink application cluster flink-application-cluster successfully, JobManager Web Interface: http://flink-application-cluster-rest.flink:8081
   ```

1. Esamina le risorse Kubernetes create.

   ```
   kubectl get all -n <namespace>
   NAME READY STATUS RESTARTS AGE
   pod/flink-application-cluster-546687cb47-w2p2z 1/1 Running 0 3m37s
   pod/flink-application-cluster-taskmanager-1-1 1/1 Running 0 3m24s
   
   NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
   service/flink-application-cluster ClusterIP None <none> 6123/TCP,6124/TCP 3m38s
   service/flink-application-cluster-rest ClusterIP 10.100.132.158 <none> 8081/TCP 3m38s
   
   NAME READY UP-TO-DATE AVAILABLE AGE
   deployment.apps/flink-application-cluster 1/1 1 1 3m38s
   
   NAME DESIRED CURRENT READY AGE
   replicaset.apps/flink-application-cluster-546687cb47 1 1 1 3m38s
   ```

1. Esegui l'inoltro della porta a 8081.

   ```
   kubectl port-forward service/flink-application-cluster-rest 8081 -n <namespace>
   Forwarding from 127.0.0.1:8081 -> 8081
   ```

1. Accedi localmente all'interfaccia utente Flink.  
![\[Accedi all'interfaccia utente Flink.\]](http://docs.aws.amazon.com/it_it/emr/latest/EMR-on-EKS-DevelopmentGuide/images/jobruns-flink-native-kubernetes-ui.png)

1. Elimina l'applicazione Flink.

   ```
   kubectl delete deployment.apps/flink-application-cluster -n <namespace>
   deployment.apps "flink-application-cluster" deleted
   ```

Per ulteriori informazioni sull'invio di applicazioni a Flink, consulta [Native Kubernetes](https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/resource-providers/native_kubernetes/) nella documentazione di Apache Flink.

# Requisiti di sicurezza degli account JobManager di servizio Flink per Native Kubernetes
<a name="jobruns-flink-native-kubernetes-security-requirements"></a>

Il JobManager pod Flink utilizza un account di servizio Kubernetes per accedere al server API Kubernetes per creare e guardare i pod. TaskManager L'account del JobManager servizio deve disporre delle autorizzazioni appropriate per i create/delete TaskManager pod e consentire al responsabile ConfigMaps di to watch di TaskManager recuperare l'indirizzo del e nel cluster. JobManager ResourceManager 

Per questo account di servizio vigono le regole elencate di seguito.

```
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - "*"
- apiGroups:
  - ""
  resources:
  - services
  verbs:
  - "*"
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - "*"
- apiGroups:
  - "apps"
  resources:
  - deployments
  verbs:
  - "*"
```