Implemente la aplicación del libro de visitas en el clúster de TKG y explore Kubernetes.

La implementación de la aplicación del libro de visitas es un método útil para explorar Kubernetes. La aplicación utiliza los objetos Deployment y ReplicaSet para implementar pods en el espacio de nombres predeterminado, y expone estos pods mediante Services. Los datos del libro de visitas se guardan para no perderlos si la aplicación deja de funcionar. En este tutorial, se utiliza una notificación de volumen persistente (Persistent Volume Claim, PVC) dinámica para solicitar recursos de almacenamiento persistentes sin conocer los detalles del almacenamiento subyacente. El almacenamiento que se emplea para la PVC se asigna a partir de la cuota de almacenamiento del espacio de nombres de vSphere. De forma predeterminada, los contenedores son efímeros y no tienen estado. Para las cargas de trabajo con estado, un método habitual consiste en crear una notificación de volumen persistente (Persistent Volume Claim, PVC). Puede utilizar una PVC para montar los volúmenes persistentes y acceder al almacenamiento. La solicitud aprovisiona dinámicamente un objeto de volumen persistente y un disco virtual coincidente. La notificación está enlazada al volumen persistente. Cuando esta notificación se elimina, se eliminan también el objeto de volumen persistente y el disco virtual aprovisionado correspondientes.

Requisitos previos

Revise los siguientes temas:

Procedimiento

  1. Inicie sesión en el clúster de TKG.
  2. Cree el espacio de nombres del libro de visitas.
    kubectl create namespace guestbook
    Compruebe lo siguiente:
    kubectl get ns
  3. Cree un control de acceso basado en funciones mediante la instancia de PSP con privilegios predeterminada.
    kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
    Nota: Si se requiere más seguridad, aplique un objeto RoleBinding en el espacio de nombres del libro de visitas.
  4. Compruebe la clase de almacenamiento o cree una.
    Para comprobar una clase de almacenamiento existente:
    kubectl describe namespace
    O bien, si tiene permisos de administrador de vSphere:
    kubectl get storageclass
  5. Cree los archivos YAML de las notificaciones de volumen persistente dinámicas que hacen referencia a la clase de almacenamiento.
    Utilice los siguientes archivos YAML. Actualice cada uno con el nombre de la clase de almacenamiento.
  6. Aplique las PVC del libro de visitas al clúster.
    kubectl apply -f redis-leader-pvc.yaml -n guestbook
    kubectl apply -f redis-follower-pvc.yaml -n guestbook
  7. Compruebe el estado de las PVC.
    kubectl get pvc,pv -n guestbook
    Las PVC y los volúmenes persistentes (persistent volumes, PV) se enumeran y están disponibles para su uso.
    NAME                                       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS         AGE
    persistentvolumeclaim/redis-follower-pvc   Bound    pvc-37b72f35-3de2-4f84-be7d-50d5dd968f62   2Gi        RWO            tkgs-storage-class   66s
    persistentvolumeclaim/redis-leader-pvc     Bound    pvc-2ef51f31-dd4b-4fe2-bf4c-f0149cb4f3da   2Gi        RWO            tkgs-storage-class   66s
    
    NAME                                                CAPACITY   ACCESS MODES   RECLAIM POLICY STATUS   CLAIM                 STORAGECLASS         
    persistentvolume/pvc-2ef51f31-dd4b-4fe2-bf4c   2Gi  RWO            Delete           Bound    guestbook/redis-leader-pvc     tkgs-storage-class
    persistentvolume/pvc-37b72f35-3de2-4f84-be7d   2Gi  RWO            Delete           Bound    guestbook/redis-follower-pvc   tkgs-storage-class
  8. Cree los archivos YAML del libro de visitas.
  9. Implemente la aplicación del libro de visitas en su espacio de nombres.
    kubectl apply -f . --namespace guestbook
  10. Compruebe la creación de los recursos del libro de visitas.
    kubectl get all -n guestbook
    NAME                                                 READY   STATUS              RESTARTS   AGE
    pod/guestbook-frontend-deployment-56fc5b6b47-cd58r   1/1     Running             0          65s
    pod/guestbook-frontend-deployment-56fc5b6b47-fh6dp   1/1     Running             0          65s
    pod/guestbook-frontend-deployment-56fc5b6b47-hgd2b   1/1     Running             0          65s
    pod/redis-follower-deployment-6fc9cf5759-99fgw       1/1     Running             0          65s
    pod/redis-follower-deployment-6fc9cf5759-rhxf7       1/1     Running             0          65s
    pod/redis-leader-deployment-7d89bbdbcf-flt4q         1/1     Running             0          65s
    
    NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
    service/guestbook-frontend           LoadBalancer   10.10.89.59      10.19.15.99     80:31513/TCP   65s
    service/redis-follower               ClusterIP      10.111.163.189   <none>          6379/TCP       65s
    service/redis-leader                 ClusterIP      10.111.70.189    <none>          6379/TCP       65s
    
    NAME                                            READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/guestbook-frontend-deployment   3/3     3            3           65s
    deployment.apps/redis-follower-deployment       1/2     2            1           65s
    deployment.apps/redis-leader-deployment         1/1     1            1           65s
    
    NAME                                                       DESIRED   CURRENT   READY   AGE
    replicaset.apps/guestbook-frontend-deployment-56fc5b6b47   3         3         3       65s
    replicaset.apps/redis-follower-deployment-6fc9cf5759       2         2         1       65s
    replicaset.apps/redis-leader-deployment-7d89bbdbcf         1         1         1       65s
  11. Acceda a la página web del libro de visitas mediante la dirección External-IP del equilibrador de carga de service/guestbook-frontend que, en este ejemplo, es 10.19.15.99.
    Puede ver la interfaz web del libro de visitas y puede introducir valores en la base de datos de dicho libro. Si reinicia la aplicación, los datos se conservan.