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:
-
3 sistemi Oracle Linux aggiuntivi da usare come:
-
2 nodi del piano di controllo Kubernetes
-
1 nodo di lavoro Kubernetes
-
-
I sistemi devono avere almeno uno dei seguenti elementi:
-
Oracle Linux 7 Update 5 (x86_64) ha installato ed eseguito Unbreakable Enterprise Kernel Release 6 (UEK R6)
-
Oracle Linux 8 Update 3 (x86_64) ha installato ed eseguito Unbreakable Enterprise Kernel Release 6 (UEK R6)
-
-
I sistemi devono disporre dei seguenti pacchetti installati:
oracle-olcne-release-el7
per Oracle Linux 7oracle-olcne-release-el8
per Oracle Linux 8
-
I sistemi hanno abilitato i seguenti repository yum.
Oracle Linux 7:
ol7_olcne14
ol7_kvm_utils
ol7_addons
ol7_latest
ol7_UEKR6
Oracle Linux 8:
ol8_olcne14
ol8_addons
ol8_baseos_latest
ol8_UEKR6
In alternativa, abilitare i canali Oracle Cloud Native Environment su ULN. Vedere Enabling Access to Oracle Cloud Native Environment Packages.
-
I nodi Oracle Linux 7 dispongono del servizio NTP (Network Time Protocol) in esecuzione sul piano di controllo e sui nodi di lavoro Kubernetes. Vedere Setting up a Network Time Service.
-
Lo swap è disabilitato nel piano di controllo e nei nodi di lavoro Kubernetes. Vedere Disabilitazione dello spazio di swap.
-
I sistemi sono configurati con le regole firewall necessarie. Vedere Impostazione delle regole del firewall
-
I sistemi dispongono del modulo kernel
br_netfilter
caricato nel piano di controllo Kubernetes e nei nodi di lavoro. Vedere br_netfilter Module.
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
- Documentazione su Oracle Cloud Native Environment
- Formazione su Oracle Cloud Native Environment
- Curriculum Oracle Linux
- Sottoscrizione al corso di formazione su Oracle Linux
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.
Scale a Kubernetes Cluster on Oracle Cloud Native Environment
F49700-04
February 2022
Copyright © 2020, Oracle and/or its affiliates.