Confronto dei nodi virtuali con i nodi gestiti
Scopri le differenze tra i nodi virtuali e i nodi gestiti che puoi creare utilizzando Kubernetes Engine (OKE).
Quando si crea un pool di nodi con Kubernetes Engine, è necessario specificare il tipo di nodi di lavoro da creare nel pool di nodi come uno o più dei seguenti:
- Nodi virtuali: i nodi virtuali sono completamente gestiti da Oracle. Vedere Nodi virtuali e pool di nodi virtuali.
- Nodi gestiti: i nodi gestiti vengono eseguiti su istanze di computazione (bare metal o virtual machine) nella tenancy e sono almeno parzialmente gestiti dall'utente. Vedere Nodi gestiti e pool di nodi gestiti.
È possibile creare solo nodi virtuali nei cluster avanzati. È possibile creare nodi gestiti sia nei cluster di base che nei cluster avanzati.
Tutti i riferimenti a 'nodi' e 'nodi di lavoro' nella documentazione di Kubernetes Engine fanno riferimento sia ai nodi virtuali che ai nodi gestiti, a meno che non sia esplicitamente indicato diversamente.
Nodi virtuali e pool di nodi virtuali
I nodi virtuali vengono eseguiti nella tenancy del motore Kubernetes. È possibile creare nodi virtuali creando un pool di nodi virtuali. I nodi virtuali e i pool di nodi virtuali sono completamente gestiti da Oracle.
I nodi virtuali offrono un'esperienza Kubernetes 'serverless', che ti consente di eseguire applicazioni containerizzate su larga scala senza il sovraccarico operativo derivante dall'upgrade dell'infrastruttura del piano dati e dalla gestione della capacità dei cluster.
È possibile creare solo nodi virtuali e pool di nodi nei cluster avanzati.
Funzioni notevoli supportate in modo diverso dai nodi virtuali
Alcune funzioni sono supportate in modo diverso quando si utilizzano i nodi virtuali anziché i nodi gestiti.
-
Allocazione risorse: l'allocazione delle risorse si trova a livello di pod anziché a livello di nodo di lavoro. Di conseguenza, è possibile specificare i requisiti delle risorse di CPU e memoria (come richieste e limiti) nella specifica pod, anziché per i nodi di lavoro in un pool di nodi. Vedere Risorse allocate ai pod con provisioning eseguito dai nodi virtuali.
- Bilanciamento del carico: il bilanciamento del carico è tra i pod, piuttosto che tra i nodi di lavoro (come nel caso dei nodi gestiti). Nei cluster con nodi virtuali, la gestione delle liste di sicurezza del load balancer non è mai abilitata e devi sempre configurare manualmente le regole di sicurezza. I load balancer distribuiscono il traffico tra gli indirizzi IP dei pod e una porta nodo assegnata. Quando ci si connette a pod in esecuzione su nodi virtuali, utilizzare la sintassi
<pod-ip>:<nodeport>
anziché<node-ip>:<nodeport>
. Se utilizzi subnet diverse per pod e nodi, configura l'ingresso delle porte dei nodi nella subnet pod. - Pod Networking: è supportata solo la rete di pod VCN nativa (il plugin CNI flannel non è supportato). Inoltre, il supporto è leggermente diverso quando si utilizzano nodi virtuali:
- A ogni nodo virtuale è collegata una sola VNIC.
- Gli indirizzi IP non vengono preallocati prima della creazione dei pod.
- Il plugin CNI di networking pod VCN nativo non viene mostrato come in esecuzione nello spazio di nomi kube-system.
- Poiché è supportato solo il networking pod nativo VCN, la tabella di instradamento della subnet pod deve disporre di regole di instradamento definite per un gateway NAT (non un gateway Internet) e un gateway di servizio.
- Ridimensionamento automatico: i nodi virtuali vengono ridimensionati automaticamente per supportare 500 pod. Poiché Oracle gestisce le risorse di base per i nodi virtuali, è più facile lavorare con Kubernetes Horizontal Pod Autoscaler. Non è necessario utilizzare l'Autoscaler del cluster Kubernetes (che in ogni caso non è ancora supportato con i nodi virtuali). Kubernetes Vertical Pod Autoscaler non è supportato con i nodi virtuali.
Funzioni e funzionalità Kubernetes notevoli non supportate quando si utilizzano i nodi virtuali
Alcune funzioni e funzionalità Kubernetes non sono supportate o non sono ancora disponibili quando si utilizzano nodi virtuali anziché nodi gestiti.
Funzioni Kubernetes non supportate | Informazioni aggiuntive |
---|---|
Flannel e altri plugin CNI di terze parti non sono supportati. | I nodi virtuali supportano solo il plugin CNI Networking pod VCN nativo OCI. |
I daemonset Kubernetes non sono supportati. |
Ad esempio, quanto segue non è supportato:
|
Le richieste di volume persistenti (PVC) non sono supportate. | Nessuna ulteriore informazione. |
I provider di rete che supportano le risorse NetworkPolicy insieme al plugin CNI utilizzato nel cluster (ad esempio Calico e Cilium) non sono supportati. | Nessuna ulteriore informazione. |
I criteri di rete (la risorsa NetworkPolicy Kubernetes) non sono supportati. | Nessuna ulteriore informazione. |
I prodotti mesh di servizio non sono supportati. | Prodotti come Oracle Cloud Infrastructure Service Mesh e Istio Service Mesh non sono supportati. |
Le sonde di tipo HTTP sono supportate. Sono supportate sonde HTTPS ed exec. Le sonde di avvio sono supportate. Le sonde gRPC non sono supportate. probe.terminationGracePeriodSeconds non è supportato. |
Sono supportati, ad esempio:
Tuttavia, quanto segue non è supportato:
|
Il comando Il comando Il comando |
Sono supportati, ad esempio:
Tuttavia, quanto segue non è supportato:
|
I contenitori effimeri non sono supportati. | Nessuna ulteriore informazione. |
Contenitori di inizializzazione non supportati. | Nessuna ulteriore informazione. |
Sono supportati i seguenti tipi di volume:
I seguenti tipi di volume non sono supportati:
|
Ad esempio, quanto segue non è supportato:
|
Nella specifica pod è attualmente possibile definire un massimo di 1 volume di tipo emptyDir. | Nessuna ulteriore informazione. |
I seguenti campi Pod non sono supportati:
|
Ad esempio, quanto segue non è supportato:
|
Sono supportati i seguenti contesti di sicurezza pod sono:
I seguenti contesti di sicurezza pod non sono supportati:
|
Ad esempio, quanto segue non è supportato:
|
Sono supportati i seguenti contesti di sicurezza del contenitore:
I seguenti contesti di sicurezza contenitore non sono supportati:
|
Ad esempio: Tuttavia, quanto segue non è supportato:
|
Container.Port
|
Ad esempio, quanto segue non è supportato:
|
Container
|
Si noti che Kubernetes aggiunge TerminationMessagePolicy e TerminationMessagePath per impostazione predefinita. |
L'intervallo di porte del contenitore (1, 65535) non può essere in conflitto con l'intervallo NodePort (30000-32767). | Ad esempio, quanto segue non è supportato:
|
Pod.Volumes.EmptyDirVolumeFonte:SizeLimit | Ad esempio, quanto segue non è supportato:
|
Pod.Volumes.EmptyDirVolumeSource:Medium - può essere solo "" o "Memory" | Ad esempio, quanto segue non è supportato:
|
Pod:Volumes - Mode deve essere specificato come 0644 per quanto segue:
|
Ad esempio, quanto segue non è supportato:
|
Pod:Volumi - se DefaultMode specificato per quanto segue, DefaultMode deve essere 0644:
|
Ad esempio, quanto segue non è supportato:
|
Resources.Requests non può essere diverso da Resources.Limits | Ad esempio, quanto segue non è supportato:
|
Volumi:DownwardAPI:ResourceFieldRef | Ad esempio, quanto segue non è supportato:
|
TerminationGracePeriodSeconds | Ad esempio, quanto segue non è supportato:
|
DeletionGracePeriodSeconds | Ad esempio, quanto segue non è supportato:
|
Esegui contenitore | Ad esempio, quanto segue non è supportato:
|
Comando port-forward di Kubectl | Utilizzare invece kubectl proxy (vedere Risoluzione dei problemi di pod e servizi sui nodi virtuali utilizzando il proxy kubectl anziché il port-forward kubectl). |
richieste UpdatePod con mutazioni a pod.spec.containers[].image | Nessuna ulteriore informazione. |
Propagazione a pod di aggiornamenti a configmap e segreti montati | Nessuna ulteriore informazione. |
Sono supportate le metriche a livello di contenitore riportate di seguito nell'endpoint delle metriche kubelet virtuale.
|
Nessuna ulteriore informazione. |
Container: Subcore ResourceRequirements | Nessuna ulteriore informazione. |
Contenitore stdin/stdinOnce, tty | Nessuna ulteriore informazione. |
Conserva gli indirizzi IP del client quando externalTrafficPolicy: locale | Nessuna ulteriore informazione. |
Tipi ImagePullSecret diversi da config e configJson | Nessuna ulteriore informazione. |
ProjectedVolumeSource:ServiceAccountTokenProiezione: ExpirationSeconds | Nessuna ulteriore informazione. |
Il comando kubectl attach per interagire con un processo già in esecuzione all'interno di un contenitore esistente. |
Nessuna ulteriore informazione. |
Funzioni e funzionalità notevoli di Kubernetes Engine (OKE) non supportate quando si utilizzano i nodi virtuali
Alcune funzioni e funzionalità di Kubernetes Engine non sono disponibili o non sono ancora disponibili quando si utilizzano nodi virtuali anziché nodi gestiti.
Funzioni del motore Kubernetes non supportate | Informazioni aggiuntive |
---|---|
Connessioni SSH ai nodi di lavoro (anche tramite un bastion) | Non disponibile. |
Uso di script cloud-init personalizzati | Non disponibile. |
Script Node Doctor | Non disponibile. |
Supporto per le versioni Kubernetes precedenti alla versione 1.25 | I nodi virtuali richiedono che il cluster esegua almeno Kubernetes versione 1.25. |
Cluster misti, contenenti sia nodi virtuali che nodi gestiti. | Non ancora disponibile. |
Scalabilità automatica del numero di nodi virtuali. | Non ancora disponibile. |
Assegnazioni capacità per eseguire il provisioning dei nodi virtuali. | Non ancora disponibile. |
Pod con forme Intel e GPU. | Non ancora disponibile. |
Distribuzioni comuni non supportate e supportate in modo diverso quando si utilizzano i nodi virtuali
Le seguenti distribuzioni comuni non sono supportate quando si utilizzano nodi virtuali anziché nodi gestiti o sono supportate in modo diverso:
Sviluppo | Note |
---|---|
kube-proxy nello spazio di nomi kube-system e l'add-on cluster kube-proxy | kube-proxy viene eseguito in pod pianificati su nodi virtuali, ma non viene distribuito nello spazio di nomi kube-system. |
Dashboard Kubernetes | Non supportato quando si utilizzano i nodi virtuali. |
Controller di ingresso Nginx | Distribuire in modo diverso quando si utilizzano i nodi virtuali (vedere Impostazione del controller di entrata di esempio). |
Autoscaler del cluster Kubernetes | Non supportato quando si utilizzano i nodi virtuali. |
Autoscaler pod verticale | Non supportato quando si utilizzano i nodi virtuali. |
Server metriche Kubernetes | Distribuisci in modo diverso quando utilizzi i nodi virtuali (vedere Distribuzione del server delle metriche Kubernetes in un cluster). |
Nodi gestiti e pool di nodi gestiti
I nodi gestiti vengono eseguiti sulle istanze di computazione (bare metal o virtual machine) nella tenancy. Per creare nodi gestiti, creare un pool di nodi gestiti. I nodi gestiti e i pool di nodi gestiti sono gestiti dall'utente.
Poiché sei responsabile della gestione dei nodi gestiti, hai la flessibilità di configurarli per soddisfare i tuoi requisiti specifici. Sei responsabile dell'upgrade di Kubernetes sui nodi gestiti e della gestione della capacità del cluster.
Quando si utilizzano i nodi gestiti, si paga per le istanze di computazione che eseguono le applicazioni.
È possibile creare nodi gestiti e pool di nodi sia nei cluster di base che nei cluster avanzati.
Per ulteriori informazioni, vedere Confronto dei nodi gestiti con i nodi virtuali