将 Guestbook 应用程序部署到 TKG 集群并浏览 Kubernetes。

部署 Guestbook 应用程序是探索 Kubernetes 的一种实用方法。该应用程序使用 Deployment 和 ReplicaSet 对象在默认命名空间中部署 Pod 并使用服务公开这些容器。已保留 Guestbook 数据,即使应用程序关闭时,数据也不会丢失。本教程使用动态持久卷声明 (PVC) 请求持久存储资源,而无需了解底层存储的详细信息。用于 PVC 的存储从 vSphere 命名空间 的存储配额进行分配。默认情况下,容器是临时和无状态容器。对于有状态工作负载,一种常用的方法是创建持久卷声明 (PVC)。可以使用 PVC 挂载持久卷和访问存储。请求会动态地置备持久卷对象和匹配的虚拟磁盘。此声明将绑定到持久卷。删除此声明时,也将删除相应的持久卷对象和已置备的虚拟磁盘。

前提条件

查看以下主题:

过程

  1. 登录到 TKG 集群。
  2. 创建 Guestbook 命名空间。
    kubectl create namespace guestbook
    验证:
    kubectl get ns
  3. 使用默认特权 PSP 创建基于角色的访问控制。
    kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
    注: 如果需要更严格的安全性,请对 Guestbook 命名空间应用 RoleBinding。
  4. 验证存储类或创建一个存储类。
    要验证现有存储类,请执行以下命令:
    kubectl describe namespace
    或者,如果您具有 vSphere 管理员权限:
    kubectl get storageclass
  5. 创建引用存储类的动态持久卷声明 (PVC) YAML 文件。
    使用以下 YAML 文件。使用存储类的名称更新每个文件。
  6. 将 Guestbook PVC 应用于集群。
    kubectl apply -f redis-leader-pvc.yaml -n guestbook
    kubectl apply -f redis-follower-pvc.yaml -n guestbook
  7. 验证 PVC 的状态。
    kubectl get pvc,pv -n guestbook
    PVC 和持久卷 (PV) 将列出,并可供使用。
    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. 创建 Guestbook YAML 文件。
  9. 在 Guestbook 命名空间中部署 Guestbook 应用程序。
    kubectl apply -f . --namespace guestbook
  10. 验证 Guestbook 资源的创建。
    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. 使用 service/guestbook-frontend 负载均衡器的 External-IP 地址访问 Guestbook 网页,在此示例中为 10.19.15.99
    会看到 Guestbook Web 界面,且可以在 Guestbook 数据库中输入值。如果重新启动应用程序,将保留数据。