Esposizione di applicazioni containerizzate
Per esporre una distribuzione delle applicazioni in modo che le applicazioni dei nodi di lavoro possano essere raggiunte dall'esterno di Compute Cloud@Customer, effettuare le operazioni riportate di seguito.
-
Creare un load balancer esterno.
-
Aggiornare le regole di entrata e uscita in base alle esigenze per supportare i requisiti delle porte delle applicazioni containerizzate. Ad esempio, se un'applicazione utilizza la porta TCP 3000, è necessario aggiungere una regola di entrata con la porta 3000.
Creare un load balancer esterno
Un load balancer esterno è un servizio di tipo LoadBalancer. Il servizio fornisce il bilanciamento del carico per un'applicazione con più istanze in esecuzione.
Se si utilizzano le opzioni --service-lb-defined-tags
o --service-lb-flexible-tags
per specificare le tag da applicare ai load balancer esterni, assicurarsi che il gruppo dinamico applicabile includa il criterio seguente. Vedere Creare un gruppo dinamico e criteri cluster.
allow dynamic-group dynamic-group-name to use tag-namespaces in compartment compartment-name
Assicurarsi che il parametro della forma del load balancer abbia uno dei valori riportati di seguito.
-
400Mbps
-
flexible
: richiede di fornire anche annotazioniflex-min
eflex-max
.
Potrebbe essere necessario modificare il file di distribuzione dell'applicazione per modificare il valore della forma del load balancer. Per ulteriori informazioni ed esempi su come impostare questi valori, vedere Specifica delle forme alternative del load balancer e Specifica delle forme flessibili del load balancer.
Per creare un load balancer del servizio in un cluster privato (un cluster con una subnet del load balancer del worker privato), utilizzare l'annotazione seguente nel modello del load balancer esterno:
service.beta.kubernetes.io/oci-load-balancer-internal: "true"
Utilizzare il comando riportato di seguito per creare il load balancer esterno.
# kubectl create -f expose_lb
Di seguito è riportato il contenuto del file expose_lb
.
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-shape: "400Mbps"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
Il comando seguente mostra ulteriori informazioni su questo load balancer esterno. L'indirizzo IP in entrata LoadBalancer è l'indirizzo IP utilizzato per raggiungere le applicazioni nodo dall'esterno di Compute Cloud@Customer. Nella console di Compute Cloud@Customer, l'indirizzo IP di entrata LoadBalancer viene visualizzato sotto l'intestazione "Indirizzo IP" nella parte inferiore della prima colonna della pagina dei dettagli del load balancer, seguita dall'etichetta "(Pubblico)."
# kubectl describe svc my-nginx-svc
Name: my-nginx-svc
Namespace: default
Labels: app=nginx
Annotations: oci.oraclecloud.com/load-balancer-type: lb
service.beta.kubernetes.io/oci-load-balancer-shape: 400Mbps
Selector: app=nginx
Type: LoadBalancer
IP Family Policy: SingleStack
IP Families: IPv4
IP: IP_address
IPs: IP_address
LoadBalancer Ingress: Load_Balancer_IP_address
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 32145/TCP
Endpoints: IP_address:port, IP_address+1:port, IP_address+2:port
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
----
Normal EnsuringLoadBalancer 7m48s service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 6m40s service-controller Ensured load balancer
Per una descrizione dei criteri di traffico, vedere Conservazione dell'IP di origine client.
Utilizzare il comando riportato di seguito per elencare gli indirizzi IP e le porte per il load balancer esterno.
# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP IP_address <none> 443/TCP 6h17m
my-nginx-svc LoadBalancer IP_address
Load_Balancer_IP_address 80:32145/TCP 5h5m
Operazioni successive: