Nota:

Ejecute Kubernetes en Oracle Linux

Introducción

Kubernetes es griego para piloto o helmsman, es decir, la persona que sigue órdenes y dirige un barco hacia su objetivo final (en lugar de ser el Capitán que da órdenes). Para ello, Kubernetes es una plataforma de código abierto y ampliable para desplegar, gestionar y ampliar aplicaciones en contenedores. Para ello, utiliza varias herramientas de línea de comandos. En este laboratorio se utiliza uno de los denominados kubectl junto con los archivos YAML para definir los atributos necesarios para la organización que despliega la aplicación y comprender cómo configurar y mantener la aplicación una vez que haya terminado de desplegarla.

Todos los despliegues en un cluster de Kubernetes se representan como objetos. Estos objetos desplegados utilizan archivos YAML basados en texto para proporcionar detalles del estado necesario de cualquier aplicación desplegada en el cluster. Estos archivos YAML pueden describir lo siguiente:

Este tercer punto, aunque importante, es complicado sin entender los conceptos básicos. Por lo tanto, nos mantendremos al tanto de ahora y trataremos ese tema en futuros tutoriales.

Este tutorial funciona con Kubernetes que se ejecuta en un entorno compacto de Oracle Cloud Native Environment en Oracle Linux. La intención no es ser una "tienda única" para todo lo necesario para administrar un despliegue de producción. En su lugar, presenta las habilidades necesarias para desplegar una aplicación de ejemplo de trabajo.

Objetivos

Requisitos

Un sistema Oracle Linux 8 o posterior con la siguiente configuración:

Configuración del entorno de prácticas

Nota: Al utilizar el entorno de prácticas gratuitas, consulte Aspectos básicos de las prácticas de Oracle Linux para obtener información sobre la conexión y otras instrucciones de uso.

Información: el entorno de laboratorio gratuito despliega Oracle Cloud Native Environment en el nodo proporcionado, listo para crear entornos. Este despliegue tarda aproximadamente entre 8 y 10 minutos en completarse después del inicio. Por lo tanto, es posible que desee alejarse mientras se ejecuta y, a continuación, volver a completar el laboratorio.

  1. Si aún no está conectado, abra un terminal y conéctese mediante ssh al sistema ocne-node01.

    ssh oracle@<ip_address_of_ol_node>
    
  2. Confirme que el entorno está listo.

    kubectl get pods -A
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get pods -A
    NAMESPACE                      NAME                                             READY   STATUS    RESTARTS   AGE
    externalip-validation-system   externalip-validation-webhook-7988bff847-8ws2v   1/1     Running   0          3m18s
    kube-system                    coredns-7cbc77dbc7-qxqth                         1/1     Running   0          3m18s
    kube-system                    coredns-7cbc77dbc7-r9bgj                         1/1     Running   0          3m18s
    kube-system                    etcd-ocne-node01                                 1/1     Running   0          3m37s
    kube-system                    kube-apiserver-ocne-node01                       1/1     Running   0          3m37s
    kube-system                    kube-controller-manager-ocne-node01              1/1     Running   0          3m37s
    kube-system                    kube-flannel-ds-vcwzn                            1/1     Running   0          3m18s
    kube-system                    kube-proxy-7lx59                                 1/1     Running   0          3m18s
    kube-system                    kube-scheduler-ocne-node01                       1/1     Running   0          3m37s
    kubernetes-dashboard           kubernetes-dashboard-5d5d4947b5-7pffh            1/1     Running   0          3m18s
    

Creación de un Despliegue en un Pod y Detalles de Solicitud

En Kubernetes, el despliegue es un término técnico que hace referencia a un archivo que controla el comportamiento y las características de un pod. Los administradores utilizan los despliegues para indicar a la aplicación qué hacer, y Kubernetes realiza la tarea para alcanzar ese estado.

Los ejemplos utilizan una imagen que contiene un pequeño servidor web de nginx que hace un eco de la IP de origen de las solicitudes que recibe a través de una cabecera HTTP.

  1. Cree un despliegue de echoserver.

    kubectl create deployment test --image=k8s.gcr.io/echoserver:1.4
    
  2. Mostrar todos los pods del cluster.

    kubectl get pods
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get pods
    NAME                    READY   STATUS    RESTARTS   AGE
    test-6c486b6d76-467p7   1/1     Running   0          53s
    

    Nota: El nombre de pod contiene un valor de sufijo que varía cada vez que se despliega el pod.

  3. Utilice JSONPath para asignar el nombre de pod a una variable.

    TESTPOD=$(kubectl get pods -o jsonpath='{ $.items[*].metadata.name }')
    
  4. Pruebe la asignación de la variable.

    El comando kubectl get pods también permite transferir un nombre de pod como parámetro para mostrar solo la información de ese pod.

    kubectl get pods $TESTPOD
    
  5. Solicite información seleccionada sobre el Pod.

    kubectl get pod $TESTPOD --output custom-columns=NAME:metadata.name,NODE_IP:status.hostIP,POD_IP:status.podIP
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get pod $TESTPOD --output custom-columns=NAME:metadata.name,NODE_IP:status.hostIP,POD_IP:status.podIP
    NAME                    NODE_IP      POD_IP
    test-6c486b6d76-467p7   10.0.0.140   10.244.0.7
    
  6. Obtenga los detalles del pod.

    kubectl describe pod $TESTPOD
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl describe pod test-6c486b6d76-467p7
    Name:         test-6c486b6d76-467p7
    Namespace:    default
    Priority:     0
    Node:         ocne-node01/10.0.0.140
    Start Time:   Tue, 28 Jun 2022 19:21:27 +0000
    Labels:       app=test
                  pod-template-hash=6c486b6d76
    Annotations:  <none>
    Status:       Running
    IP:           10.244.0.7
    IPs:
      IP:           10.244.0.7
    Controlled By:  ReplicaSet/test-6c486b6d76
    Containers:
      echoserver:
        Container ID:   cri-o://5b7866a27722ec0998cd9fe74945fb82b4dd9ed4c5c80671d9e8aa239c7008a4
        Image:          k8s.gcr.io/echoserver:1.4
        Image ID:       k8s.gcr.io/echoserver@sha256:5d99aa1120524c801bc8c1a7077e8f5ec122ba16b6dda1a5d3826057f67b9bcb
        Port:           <none>
        Host Port:      <none>
        State:          Running
          Started:      Tue, 28 Jun 2022 19:21:30 +0000
        Ready:          True
        Restart Count:  0
        Environment:    <none>
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-d67ph (ro)
    Conditions:
      Type              Status
      Initialized       True 
      Ready             True 
      ContainersReady   True 
      PodScheduled      True 
    Volumes:
      kube-api-access-d67ph:
        Type:                    Projected (a volume that contains injected data from multiple sources)
        TokenExpirationSeconds:  3607
        ConfigMapName:           kube-root-ca.crt
        ConfigMapOptional:       <nil>
        DownwardAPI:             true
    QoS Class:                   BestEffort
    Node-Selectors:              <none>
    Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
    Events:
      Type    Reason     Age   From               Message
      ----    ------     ----  ----               -------
      Normal  Scheduled  21m   default-scheduler  Successfully assigned default/test-6c486b6d76-467p7 to ocne-node01
      Normal  Pulling    21m   kubelet            Pulling image "k8s.gcr.io/echoserver:1.4"
      Normal  Pulled     21m   kubelet            Successfully pulled image "k8s.gcr.io/echoserver:1.4" in 3.102843235s
      Normal  Created    21m   kubelet            Created container echoserver
      Normal  Started    21m   kubelet            Started container echoserver
    

Creación de un despliegue con un archivo YAML

Los manifiestos de despliegue de Kubernetes definen cómo desplegar una aplicación en el cluster de Kubernetes y proporcionan acceso a otras funcionalidades de Kubernetes como la reparación automática, la escalabilidad, el control de versiones y las actualizaciones sucesivas. En este laboratorio no se abordará esta funcionalidad más compleja proporcionada en Kubernetes. En su lugar, ilustra cómo utilizar un archivo de manifiesto muy básico para desplegar una aplicación.

Un archivo de manifiesto de despliegue se escribe en JSON o en YAML. Aunque es posible utilizar JSON, YAML es mucho más popular debido a su flexibilidad, legibilidad y capacidad para incluir comentarios descriptivos para aclarar aspectos del despliegue final.

Al ejecutar un despliegue, se actualiza un pod mediante una serie de actualizaciones declarativas para alcanzar el estado deseado de la aplicación en ejecución.

Si bien todos los detalles de deployment.yaml son esenciales para que Kubernetes pueda promulgar la solicitud de despliegue, lo siguiente resalta algunas de las partes más importantes:

Consulte la documentación ascendente de Despliegues para obtener más información sobre estos otros campos.

  1. Cree el archivo de despliegue.

    cat << 'EOF' | tee mydeployment.yaml > /dev/null
    apiVersion: apps/v1
    kind: Deployment
    metadata:
     name: echo1
    spec:
     selector:
       matchLabels: 
         app: echo1
     template:
       metadata:
         labels:
           app: echo1
       spec:
         containers:
         - name: echoserver
           image: k8s.gcr.io/echoserver:1.4
    EOF
    
  2. Despliegue la aplicación en un Pod mediante el archivo de manifiesto Deployment.

    kubectl apply -f mydeployment.yaml
    

    Resultado de ejemplo:

    [[oracle@ocne-node01 ~]$ kubectl apply -f mydeployment.yaml
    deployment.apps/echo1 created
    
  3. Mostrar el pod gestionado por el despliegue.

    kubectl get pods -l app=echo1
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get pods -l app=echo1
    NAME                     READY   STATUS    RESTARTS   AGE
    echo1-7cbf6dfb96-4cgq7   1/1     Running   0          24s
    
    • La opción -l o --selector= proporciona un selector (consulta de etiqueta) para filtrar. Esta opción admite '=', '==' y '!='.(por ejemplo, -l key1=value1,key2=value2)

    Nota: Recuerde que el nombre de pod contiene un valor de sufijo que varía cada vez que se despliega el pod.

  4. Verifique que el despliegue se haya realizado correctamente.

    kubectl get deploy echo1
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get deploy echo1
    NAME    READY   UP-TO-DATE   AVAILABLE   AGE
    echo1   1/1     1            1           16m
    
    • La opción deploy es de mano corta para deployments. El comando kubectl permite utilizar una sintaxis abreviada para muchas de sus opciones. Para obtener más información, ejecute kubectl --help.
  5. Devolver información más detallada para un despliegue.

    kubectl describe deploy echo1
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl describe deploy echo1
    Name:                   echo1
    Namespace:              default
    CreationTimestamp:      Tue, 28 Jun 2022 20:20:40 +0000
    Labels:                 <none>
    Annotations:            deployment.kubernetes.io/revision: 1
    Selector:               app=echo1
    Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
    StrategyType:           RollingUpdate
    MinReadySeconds:        0
    RollingUpdateStrategy:  25% max unavailable, 25% max surge
    Pod Template:
      Labels:  app=echo1
      Containers:
       echoserver:
        Image:        k8s.gcr.io/echoserver:1.4
        Port:         <none>
        Host Port:    <none>
        Environment:  <none>
        Mounts:       <none>
      Volumes:        <none>
    Conditions:
      Type           Status  Reason
      ----           ------  ------
      Available      True    MinimumReplicasAvailable
      Progressing    True    NewReplicaSetAvailable
    OldReplicaSets:  <none>
    NewReplicaSet:   echo1-7cbf6dfb96 (1/1 replicas created)
    Events:
      Type    Reason             Age   From                   Message
      ----    ------             ----  ----                   -------
      Normal  ScalingReplicaSet  23m   deployment-controller  Scaled up replica set echo1-7cbf6dfb96 to 1
    

Utilizar el servicio ClusterIP

A pesar de desplegar correctamente el echo1 despliegue en un pod, no se utiliza mucho si los usuarios finales no pueden acceder a él internamente o en la red. Este acceso es donde un servicio resulta útil cuando expone un despliegue a la red.

El tipo de servicio de Kubernetes por defecto es ClusterIP. Sin embargo, no puede acceder a un servicio ClusterIP desde Internet, pero puede utilizar el proxy de Kubernetes. Consulte la documentación ascendente para obtener más información sobre los proxies.

En esta sección, se muestra echo1 y se crea comunicación entre servicios en el cluster mediante un pod de Oracle Linux que demuestra la comunicación entre los componentes front-end y backend de la aplicación.

  1. Obtenga una lista de nodos.

    kubectl get nodes
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get nodes
    NAME          STATUS   ROLES    AGE     VERSION
    ocne-node01   Ready    <none>   4h27m   v1.22.8+1.el8
    

    Los nodos son los sistemas físicos o las máquinas virtuales para desplegar pods.

  2. Consulte el modo kube-proxy.

    La ejecución de kube-proxy en el modo iptables hace que los paquetes enviados a un servicio ClusterIP nunca sean NAT'd de origen.

    curl -w "\n" http://localhost:10249/proxyMode
    
    • kube-proxy recibe en el puerto 10249 en el nodo donde se ejecuta.
  3. Cree el servicio ClusterIP.

    kubectl expose deployment echo1 --name=clusterip-service --port=80 --target-port=8080
    
  4. Obtener la dirección IP asignada al cluster.

    kubectl get svc clusterip-service
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get svc clusterip-service
    NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
    clusterip-service   ClusterIP   10.108.107.54   <none>        80/TCP    13s
    

    Tome nota de la dirección CLUSTER-IP en la salida.

  5. Cree un pod en el mismo cluster para acceder al servicio ClusterIP.

    kubectl run ol -it --image=oraclelinux:8 --restart=Never --rm
    

    Este comando creará un pod que ejecute un contenedor de Oracle Linux 8 en modo interactivo y presentará un símbolo del sistema.

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl run ol -it --image=oraclelinux:8 --restart=Never --rm
    If you don't see a command prompt, try pressing enter.
    [root@ol /]#
    
  6. Obtenga la dirección IP del contenedor de Oracle Linux.

    ip -br a
    

    Resultado de ejemplo:

    [root@ol /]# ip -br a
    lo               UNKNOWN        127.0.0.1/8 ::1/128 
    eth0@if12        UP             10.244.0.9/24 fe80::146f:2cff:fe73:b528/64
    
  7. Pruebe el servidor web nginx en echo1.

    curl -w "\n" <CLUSTER-IP_ADDRESS>
    

    Utilice la dirección CLUSTER-IP de la salida anterior.

    Resultado de ejemplo:

    [root@ol /]# curl -w "\n" 10.108.107.54
    CLIENT VALUES:
    client_address=10.244.0.9
    command=GET
    real path=/
    query=nil
    request_version=1.1
    request_uri=http://10.108.107.54:8080/
    
    SERVER VALUES:
    server_version=nginx: 1.10.0 - lua: 10001
    
    HEADERS RECEIVED:
    accept=*/*
    host=10.108.107.54
    user-agent=curl/7.61.1
    BODY:
    -no body in request-
    

    La salida muestra la solicitud de Oracle Linux y la gestiona el servicio ClusterIP mediante el despliegue echo1.

  8. Salga del contenedor.

    exit
    

    Resultado de ejemplo:

    [root@ol /]# exit
    exit
    pod "ol" deleted
    

Uso del servicio NodePort con un archivo YAML

Anteriormente, el despliegue echo1 se expuso mediante el comando kubectl expose y se accedió internamente mediante ClusterIP. Ahora, usaremos un servicio NodePort, que es un enfoque del desarrollador para que echo1 sea accesible externamente a través de la red.

El servicio NodePort abre un puerto específico en todos los nodos y reenvía cualquier tráfico a ese puerto al servicio.

Nota La práctica estándar no recomienda utilizar NodePort para sistemas de producción por varios motivos, principalmente los siguientes:

  1. Defina un archivo de servicio.

    cat << 'EOF' | tee myservice.yaml > /dev/null
    apiVersion: v1
    kind: Service
    metadata:
      name: echo1-nodeport
      namespace: default
    spec:
      ipFamilies:
      - IPv4
      ipFamilyPolicy: SingleStack
      ports:
      - nodePort: 32387
        port: 80
        protocol: TCP
        targetPort: 8080
      selector:
        app: echo1
      sessionAffinity: None
      type: NodePort
    status:
      loadBalancer: {}
    EOF
    
    • type: hace que el servicio esté disponible para las solicitudes de red de clientes externos. Los valores válidos son: nodePort, LooadBalancer.
    • nodePort: puerto externo utilizado para acceder al servicio.
    • puerto: número de puerto expuesto en el cluster.
    • targetPort: puerto en el que recibe el contenedor.
  2. Cree el servicio.

    kubectl apply -f myservice.yaml
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl apply -f myservice.yaml 
    service/echo1 created
    

    Nota: Es común tener las definiciones de despliegue y servicio en el mismo archivo YAML para simplificar la gestión de una aplicación. El uso de archivos independientes en estos pasos es solo para fines de formación. Al combinarlos en un único archivo, utilice la sintaxis --- YAML para separarlos.

  3. Muestre cómo Kubernetes almacena el servicio recién creado.

    kubectl get service echo1-nodeport -o yaml
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get service echo1-nodeport -o yaml
    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"echo1-nodeport","namespace":"default"},"spec":{"ipFamilies":["IPv4"],"ipFamilyPolicy":"SingleStack","ports":[{"nodePort":32387,"port":80,"protocol":"TCP","targetPort":8080}],"selector":{"app":"echo1"},"sessionAffinity":"None","type":"NodePort"},"status":{"loadBalancer":{}}}
      creationTimestamp: "2022-06-29T00:14:30Z"
      name: echo1-nodeport
      namespace: default
      resourceVersion: "6242"
      uid: 3171dda6-05b8-45b8-a0ba-457eab6e4f71
    spec:
      clusterIP: 10.100.17.53
      clusterIPs:
      - 10.100.17.53
      externalTrafficPolicy: Cluster
      internalTrafficPolicy: Cluster
      ipFamilies:
      - IPv4
      ipFamilyPolicy: SingleStack
      ports:
      - nodePort: 32387
        port: 80
        protocol: TCP
        targetPort: 8080
      selector:
        app: echo1
      sessionAffinity: None
      type: NodePort
    status:
      loadBalancer: {}
    
  4. Describir el servicio Pods.

    kubectl describe svc echo1-nodeport
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl describe svc echo1-nodeport
    Name:                     echo1-nodeport
    Namespace:                default
    Labels:                   <none>
    Annotations:              <none>
    Selector:                 app=echo1
    Type:                     NodePort
    IP Family Policy:         SingleStack
    IP Families:              IPv4
    IP:                       10.100.17.53
    IPs:                      10.100.17.53
    Port:                     <unset>  80/TCP
    TargetPort:               8080/TCP
    NodePort:                 <unset>  32387/TCP
    Endpoints:                10.244.0.7:8080
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:                   <none>
    
  5. Obtenga los puntos finales del objeto.

    Los puntos finales realizan un seguimiento de las direcciones IP de los pods a los que el servicio envía tráfico.

    kubectl get endpoints echo1-nodeport
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get endpoints echo1-nodeport
    NAME             ENDPOINTS         AGE
    echo1-nodeport   10.244.0.7:8080   8m39s
    
  6. Muestre los pods que ejecutan la aplicación.

    kubectl get pods --output=wide
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get pods -o wide
    NAME                     READY   STATUS    RESTARTS   AGE   IP           NODE          NOMINATED NODE   READINESS GATES
    echo1-7cbf6dfb96-mlds4   1/1     Running   0          80m   10.244.0.7   ocne-node01   <none>           <none>
    test-6c486b6d76-v4htj    1/1     Running   0          83m   10.244.0.6   ocne-node01   <none>           <none>
    

    La dirección IP de esta lista para echo1 debe coincidir con el valor mostrado en el paso anterior para los puntos finales, que es la dirección IP del pod que se ejecuta en el nodo especificado.

  7. Muestre los servicios.

    kubectl get svc -o wide
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ kubectl get svc -o wide
    NAME                TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE   SELECTOR
    clusterip-service   ClusterIP   10.107.31.75   <none>        80/TCP         78m   app=echo1
    echo1-nodeport      NodePort    10.100.17.53   <none>        80:32387/TCP   10m   app=echo1
    kubernetes          ClusterIP   10.96.0.1      <none>        443/TCP        88m   <none>
    

    Este comando utilizó la opción alternativa de -o wide, en lugar de --output=wide.

    Tome nota de NodePort, que se establece en 32387 para el servicio echo1-nodeport.

  8. Obtenga la dirección IP del nodo.

    El entorno de prácticas gratuitas se ejecuta en un único nodo ocne-node01.

    ip -br a
    

    En el entorno de prácticas libres, la dirección IP debe devolver la dirección IP privada de la instancia de 10.0.0.140 asignada a la interfaz ens3.

  9. Utilice JSONPath para asignar la variable NodePort.

    NODEPORT=$(kubectl get -o jsonpath="{.spec.ports[0].nodePort}" services echo1-nodeport)
    
  10. Utilice JSONPath para asignar la IP de nodo a una variable.

    NODES=$(kubectl get nodes -o jsonpath='{ $.items[*].status.addresses[?(@.type=="InternalIP")].address }')
    
  11. Cree una regla de firewall.

    Esta regla permite el tráfico en node:nodeport, donde node es la dirección IP del host del sistema o la máquina virtual en la que se ejecuta el pod.

    sudo firewall-cmd --permanent --add-port=$NODEPORT/tcp
    sudo firewall-cmd --reload
    

    Después de --reload, el daemon firewalld vuelve a cargar su configuración, que incluye iptables. Dado que kube-proxy depende de iptables, habrá un retraso en la respuesta de los servicios.

  12. Utilice la dirección del nodo y el puerto del nodo para verificar la aplicación.

    curl -s $NODES:$NODEPORT
    

    Resultado de ejemplo:

    [oracle@ocne-node01 ~]$ curl -s $NODES:NODEPORT
    CLIENT VALUES:
    client_address=10.244.0.1
    command=GET
    real path=/
    query=nil
    request_version=1.1
    request_uri=http://10.0.0.140:8080/
    
    SERVER VALUES:
    server_version=nginx: 1.10.0 - lua: 10001
    
    HEADERS RECEIVED:
    accept=*/*
    host=10.0.0.140:32387
    user-agent=curl/7.61.1
    BODY:
    

    La salida muestra la solicitud del enrutamiento del nodo local a través del servicio NodePort, a través de kube-proxy, y al Pod que ejecuta el despliegue echo1.

    Nota: Si la salida parece bloquearse, se debe a la recarga anterior del firewall. Escriba Ctrl-C y vuelva a intentarlo.

Eliminar despliegues y servicios

Una vez realizado un servicio o despliegue, elimínelos de Kubernetes.

  1. Eliminar servicios.

    kubectl delete svc clusterip-service echo1-nodeport
    
  2. Eliminar despliegues.

    kubectl delete deployments echo1
    kubectl delete deploy test
    

La eliminación de objetos se puede realizar de forma individual o en grupos. Consulte el Manual de referencia de Kubernetes para obtener más información.

Resumen

En este laboratorio se ofrece solo la más breve introducción a la funcionalidad que utiliza una organización en la nube como Kubernetes proporciona a cualquier organización que utiliza Kubernetes para gestionar sus despliegues de contenedor. Estos ejercicios proporcionan el primer paso sobre lo que probablemente será un largo recorrido hacia la flexibilidad que puede ofrecer Kubernetes.

Para obtener más información

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer y conviértase en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.