将 Guestbook 应用程序部署到 TKG 集群并浏览 Kubernetes。
部署 Guestbook 应用程序是探索 Kubernetes 的一种实用方法。该应用程序使用 Deployment 和 ReplicaSet 对象在默认命名空间中部署 Pod 并使用服务公开这些容器。已保留 Guestbook 数据,即使应用程序关闭时,数据也不会丢失。本教程使用动态持久卷声明 (PVC) 请求持久存储资源,而无需了解底层存储的详细信息。用于 PVC 的存储从 vSphere 命名空间 的存储配额进行分配。默认情况下,容器是临时和无状态容器。对于有状态工作负载,一种常用的方法是创建持久卷声明 (PVC)。可以使用 PVC 挂载持久卷和访问存储。请求会动态地置备持久卷对象和匹配的虚拟磁盘。此声明将绑定到持久卷。删除此声明时,也将删除相应的持久卷对象和已置备的虚拟磁盘。
前提条件
查看以下主题:
- Kubernetes 文档中的 Guestbook 应用程序教程
- 置备 TKG 集群。
- 连接到 TKG 集群。
过程
- 登录到 TKG 集群。
- 创建 Guestbook 命名空间。
kubectl create namespace guestbook
验证:kubectl get ns
- 使用默认特权 PSP 创建基于角色的访问控制。
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
注: 如果需要更严格的安全性,请对 Guestbook 命名空间应用 RoleBinding。 - 验证存储类或创建一个存储类。
要验证现有存储类,请执行以下命令:
kubectl describe namespace
或者,如果您具有 vSphere 管理员权限:kubectl get storageclass
- 创建引用存储类的动态持久卷声明 (PVC) YAML 文件。
使用以下 YAML 文件。使用存储类的名称更新每个文件。
- 将 Guestbook PVC 应用于集群。
kubectl apply -f redis-leader-pvc.yaml -n guestbook
kubectl apply -f redis-follower-pvc.yaml -n guestbook
- 验证 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
- 创建 Guestbook YAML 文件。
使用以下 YAML 文件:
- 在 Guestbook 命名空间中部署 Guestbook 应用程序。
kubectl apply -f . --namespace guestbook
- 验证 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
- 使用
service/guestbook-frontend
负载均衡器的External-IP
地址访问 Guestbook 网页,在此示例中为10.19.15.99
。会看到 Guestbook Web 界面,且可以在 Guestbook 数据库中输入值。如果重新启动应用程序,将保留数据。