Ridimensiona un cluster Kubernetes in un ambiente nativo Oracle Cloud

Introduzione

Questa esercitazione descrive come ridimensionare un cluster Kubernetes esistente in Oracle Cloud Native Environment Release 1.4.

Puoi eseguire lo scale-up di un cluster Kubernetes aggiungendo i nodi e lo scale-down rimuovendo i nodi. I nodi possono essere il piano di controllo o i nodi di lavoro.

Oracle consiglia di non ridimensionare il cluster contemporaneamente. È necessario eseguire lo scale up e quindi lo scale down in due comandi separati. Per evitare scenari di frazionamento, scalare i nodi del piano di controllo del cluster Kubernetes in numeri dispari. Ad esempio, i nodi piano di controllo 3, 5 o 7 garantiscono l'affidabilità del cluster.

Questa esercitazione presuppone che esista un cluster Kubernetes ad alta disponibilità in esecuzione in Oracle Cloud Native Environment. Questa esercitazione si basa sull'esercitazione per distribuire un ambiente nativo Oracle Cloud ad alta disponibilità all'indirizzo Distribuire un ambiente nativo Oracle Cloud ad alta disponibilità.

Obiettivi

Questa esercitazione descrive i passi necessari per configurare e aggiungere due nuovi nodi del piano di controllo e un nodo di lavoro al cluster. L'esercitazione mostra quindi come eseguire lo scale down del cluster rimuovendo i nodi dal cluster.

In questa esercitazione, i certificati CA privati X.509 vengono utilizzati per proteggere la comunicazione tra i nodi. Esistono altri metodi per gestire e distribuire i certificati, ad esempio utilizzando HashiCorp Vault Secret Manager o utilizzando i propri certificati, firmati da un'autorità di certificazione (CA, Certificate Authority). Questi altri metodi non sono inclusi in questa esercitazione.

Prerequisiti

Oltre al requisito di un cluster Kubernetes ad alta disponibilità in esecuzione in Oracle Cloud Native Environment, sono necessari diversi altri host. È necessario:

Impostazione dei nuovi nodi Kubernetes

Nei nuovi nodi del piano di controllo e nel nuovo nodo di lavoro, assicurarsi che i prerequisiti di sistema elencati nella sezione Prerequisites di questa esercitazione siano soddisfatti.

In questa esercitazione, i sistemi denominati control4.example.com e control5.example.com sono i nuovi nodi del piano di controllo e un sistema denominato worker3.example.com è il nuovo nodo di lavoro. Installare e abilitare l'agente piattaforma sia sui nuovi nodi del piano di controllo che sul nuovo nodo di lavoro.

Se si utilizza Oracle Linux 7, effettuare le operazioni riportate di seguito.

sudo yum install olcne-agent olcne-utils
sudo systemctl enable olcne-agent.service

Se si utilizza Oracle Linux 8, effettuare le operazioni riportate di seguito.

sudo dnf install olcne-agent olcne-utils
sudo systemctl enable olcne-agent.service

Se si utilizza un server proxy, configurarlo con CRI-O. In ogni nodo Kubernetes creare una directory di configurazione di sistema CRI-O. Creare un file denominato proxy.conf nella directory e aggiungere le informazioni sul server proxy.

sudo mkdir /etc/systemd/system/crio.service.d
sudo vi /etc/systemd/system/crio.service.d/proxy.conf

Sostituire i valori proxy appropriati per quelli presenti nell'ambiente utilizzando il file di esempio proxy.conf:

[Service]
Environment="HTTP_PROXY=proxy.example.com:80"
Environment="HTTPS_PROXY=proxy.example.com:80"
Environment="NO_PROXY=.example.com,192.0.2.*"

Se il servizio docker è in esecuzione o se il servizio containerd è in esecuzione, arrestarlo e disabilitarlo.

sudo systemctl disable --now docker.service
sudo systemctl disable --now containerd.service

Impostare i certificati CA privati X.509

Impostare i certificati CA privati X.509 per i nuovi nodi del piano di controllo e il nodo di lavoro. Utilizzare lo script /etc/olcne/gen-certs-helper.sh per generare una CA privata e i certificati per i nodi. Eseguire lo script dalla directory /etc/olcne sul nodo operatore. Utilizzare l'opzione --byo-ca-cert per specificare la posizione del certificato CA esistente e l'opzione --byo-ca-key per specificare la posizione della chiave CA esistente. Utilizzare l'opzione --nodes e fornire il nome FQDN del nuovo piano di controllo e dei nodi di lavoro.

cd /etc/olcne
sudo ./gen-certs-helper.sh \
--cert-dir /etc/olcne/configs/certificates/ \
--byo-ca-cert /etc/olcne/configs/certificates/production/ca.cert \
--byo-ca-key /etc/olcne/configs/certificates/production/ca.key \
--nodes control4.example.com,control5.example.com,worker3.example.com

Trasferisci certificati

Eseguire lo script per trasferire i file di certificato dal nodo operatore ai nuovi nodi. Assicurarsi che il nodo operatore disponga dell'accesso ssh senza password al nuovo piano di controllo e ai nodi di lavoro (non visualizzati in questa esercitazione), quindi eseguire il comando seguente dal nodo operatore per trasferire i certificati ai nuovi nodi.

bash -ex /etc/olcne/configs/certificates/olcne-tranfer-certs.sh

Configurare l'agente piattaforma per l'uso dei certificati

Configurare l'agente piattaforma in modo che utilizzi i certificati per i nuovi nodi del piano di controllo e il nuovo nodo di lavoro. In ogni nuovo nodo Kubernetes eseguire lo script /etc/olcne/bootstrap-olcne.sh come mostrato per configurare l'agente piattaforma in modo che utilizzi i certificati.

sudo /etc/olcne/bootstrap-olcne.sh \
--secret-manager-type file \
--olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
--olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
--olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
--olcne-component agent

Visualizza i nodi Kubernetes

In un nodo del piano di controllo utilizzare il comando riportato di seguito per visualizzare i nodi Kubernetes nel cluster. Si noti che sono presenti tre nodi piano di controllo e due nodi di lavoro.

kubectl get nodes

L'output deve essere simile al seguente:

NAME                   STATUS   ROLES    AGE   VERSION
control1.example.com   Ready    master   ...   ...
control2.example.com   Ready    master   ...   ...
control3.example.com   Ready    master   ...   ...
worker1.example.com    Ready    <none>   ...   ...
worker2.example.com    Ready    <none>   ...   ...

Aggiungi nodi piano di controllo al file di configurazione distribuzione

Nel nodo operatore, modificare il file di configurazione della distribuzione YAML per includere i nuovi nodi che si desidera aggiungere al cluster. Il nome file per il file di configurazione in questa esercitazione è myenvironment.yaml e include tre piani di controllo e due nodi di lavoro:

environments:
  - environment-name: myenvironment
    globals:
      api-server: 127.0.0.1:8091
      secret-manager-type: file
      olcne-ca-path: /etc/olcne/configs/certificates/production/ca.cert
      olcne-node-cert-path: /etc/olcne/configs/certificates/production/node.cert
      olcne-node-key-path:  /etc/olcne/configs/certificates/production/node.key
      update-config: true         
   modules:
     - module: kubernetes
       name: mycluster
       args:
         container-registry: container-registry.oracle.com/olcne
         virtual-ip: 192.0.2.137            
         master-nodes: 
           - control1.example.com:8090
           - control2.example.com:8090
           - control3.example.com:8090              
         worker-nodes: 
           - worker1.example.com:8090
           - worker2.example.com:8090           
         selinux: enforcing
         restrict-service-externalip: true            
         restrict-service-externalip-ca-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/ca.cert
         restrict-service-externalip-tls-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/node.cert
         restrict-service-externalip-tls-key: /etc/olcne/configs/certificates/restrict_external_ip/production/node.key

Aggiungere la porta di accesso FQDN e Platform Agent (8090) per tutti i nodi del piano di controllo da includere nel cluster alla sezione master-nodes. Il file di configurazione ora include i nuovi nodi del piano di controllo (control4.example.com e control5.example.com). I nodi del piano di controllo inclusi in questa opzione specificano tutti i nodi del piano di controllo che devono trovarsi nel cluster dopo l'aggiornamento.

...
         master-nodes: 
           - control1.example.com:8090
           - control2.example.com:8090
           - control3.example.com:8090
           - control4.example.com:8090
           - control5.example.com:8090              
         worker-nodes: 
           - worker1.example.com:8090
           - worker2.example.com:8090
...              

Scale up dei nodi del piano di controllo

Nel nodo operatore eseguire il comando olcnectl module update con l'opzione --config-file per specificare la posizione del file di configurazione. Il server API piattaforma convalida il file di configurazione con lo stato del cluster e riconosce la presenza di altri nodi da aggiungere al cluster. Rispondere a yes quando richiesto.

olcnectl module update --config-file myenvironment.yaml

Il completamento dell'aggiornamento può richiedere diversi minuti. L'aggiornamento è stato completato.

In un nodo del piano di controllo eseguire il comando seguente per confermare che i nuovi nodi del piano di controllo vengono aggiunti al cluster.

kubectl get nodes

L'output deve essere simile al seguente:

NAME                   STATUS   ROLES    AGE   VERSION
control1.example.com   Ready    master   ...   ...
control2.example.com   Ready    master   ...   ...
control3.example.com   Ready    master   ...   ...
control4.example.com   Ready    master   ...   ...
control5.example.com   Ready    master   ...   ...
worker1.example.com    Ready    <none>   ...   ...
worker2.example.com    Ready    <none>   ...   ...

È possibile visualizzare i nuovi nodi del piano di controllo denominati control4.example.com e control5.example.com ora inclusi nel cluster.

Aggiungi nodi lavoratore al file di configurazione

Nel nodo operatore modificare il file di configurazione della distribuzione per includere i nuovi nodi da aggiungere al cluster.

Aggiungere la porta di accesso FQDN e Platform Agent (8090) per tutti i nodi di lavoro da includere nel cluster alla sezione worker-nodes. Il file di configurazione ora include il nuovo nodo lavoratore (worker3.example.com). I nodi di lavoro inclusi in questa opzione specificano tutti i nodi di lavoro che devono trovarsi nel cluster dopo l'aggiornamento.

...
         master-nodes: 
           - control1.example.com:8090
           - control2.example.com:8090
           - control3.example.com:8090
           - control4.example.com:8090
           - control5.example.com:8090              
         worker-nodes: 
           - worker1.example.com:8090
           - worker2.example.com:8090
           - worker3.example.com:8090
...              

Scale up dei nodi di lavoro

Nel nodo operatore eseguire il comando olcnectl module update con l'opzione --config-file per specificare la posizione del file di configurazione. Il server API piattaforma convalida il file di configurazione con lo stato del cluster e riconosce la presenza di altri nodi da aggiungere al cluster.

In questo esempio è inclusa l'opzione --force per ignorare il prompt di conferma.

Suggerimento: è inoltre possibile includere l'opzione force: true nella sezione del modulo Kubernetes del file di configurazione in modo da non dover utilizzare l'opzione --force per eliminare il prompt.

modules:
  - module: kubernetes
    name: mycluster
    force: true
olcnectl module update --config-file myenvironment.yaml --force

In un nodo del piano di controllo eseguire il comando riportato di seguito per confermare l'aggiunta del nuovo nodo del lavoratore al cluster.

kubectl get nodes

L'output deve essere simile al seguente:

NAME                   STATUS   ROLES    AGE   VERSION
control1.example.com   Ready    master   ...   ...
control2.example.com   Ready    master   ...   ...
control3.example.com   Ready    master   ...   ...
control4.example.com   Ready    master   ...   ...
control5.example.com   Ready    master   ...   ...
worker1.example.com    Ready    <none>   ...   ...
worker2.example.com    Ready    <none>   ...   ...
worker3.example.com    Ready    <none>   ...   ...

È possibile visualizzare il nuovo nodo lavoratore denominato worker3.example.com ora incluso nel cluster.

Ridimensionare i nodi del piano di controllo

Per rimuovere i nodi dal cluster, aggiornare nuovamente il file di configurazione con i nodi desiderati nel cluster, quindi eseguire il comando olcnectl module update.

Per ridimensionare il cluster fino ai tre nodi del piano di controllo originali, rimuovere i nodi del piano di controllo control4.example.com e control5.example.com dal file di configurazione:

...
         master-nodes: 
           - control1.example.com:8090
           - control2.example.com:8090
           - control3.example.com:8090              
         worker-nodes: 
           - worker1.example.com:8090
           - worker2.example.com:8090
           - worker3.example.com:8090
...              

Quindi eseguire il comando per aggiornare il cluster:

olcnectl module update --config-file myenvironment.yaml --force

I nodi del piano di controllo vengono rimossi dal cluster dal server API della piattaforma.

In un nodo del piano di controllo eseguire il comando seguente per confermare che nel cluster sono inclusi solo i nodi del piano di controllo iniziale e che control4.example.com e control5.example.com siano stati rimossi.

kubectl get nodes

L'output deve essere simile al seguente:

NAME                   STATUS   ROLES    AGE   VERSION
control1.example.com   Ready    master   ...   ...
control2.example.com   Ready    master   ...   ...
control3.example.com   Ready    master   ...   ...
worker1.example.com    Ready    <none>   ...   ...
worker2.example.com    Ready    <none>   ...   ...
worker3.example.com    Ready    <none>   ...   ...

Ridimensionare i nodi di lavoro

Per ridimensionare il cluster fino ai due nodi di lavoro originali, rimuovere il nodo di lavoro worker3.example.com dal file di configurazione:

...
         master-nodes: 
           - control1.example.com:8090
           - control2.example.com:8090
           - control3.example.com:8090              
         worker-nodes: 
           - worker1.example.com:8090
           - worker2.example.com:8090
...              

Quindi eseguire il comando per aggiornare il cluster:

olcnectl module update --config-file myenvironment.yaml --force

In un nodo del piano di controllo eseguire il comando seguente per confermare che nel cluster sono inclusi solo i nodi di lavoro iniziali e che il nodo worker3.example.com è stato rimosso.

kubectl get nodes

L'output deve essere simile al seguente:

NAME                   STATUS   ROLES    AGE   VERSION
control1.example.com   Ready    master   ...   ...
control2.example.com   Ready    master   ...   ...
control3.example.com   Ready    master   ...   ...
worker1.example.com    Ready    <none>   ...   ...
worker2.example.com    Ready    <none>   ...   ...

Per ulteriori informazioni

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.