我想使用持久性卷为前端部署一个pod并为后端部署一个pod

时间:2020-04-25 14:05:53

标签: kubernetes

我想部署一个连接到后端pod(具有mysql)的前端pod,并将数据存储到持久卷中。

2 个答案:

答案 0 :(得分:1)

请检查guide,以部署wordpress并使用持久卷连接到mysql。

答案 1 :(得分:1)

将前端Pod与后端Pod连接

为您的部署创建服务,并将您的应用指向该服务名称 将前端连接到后端的关键是后端服务。服务会创建一个永久的IP地址和DNS名称条目,以便始终可以访问后端微服务。服务使用selectors查找将流量路由到的Pod。

首先,将MySQL服务配置为ClusterIP服务。它是私有的,仅对其他服务可见。这可以通过删除带有选项type的行来完成。

apiVersion: v1
kind: Service
metadata:
   name: app-api-mysql-svc
spec:
   selector:
     app: app-api-mysql
   ports:
     - protocol: TCP
       port: 80
       targetPort: [the port exposed by the mysql pod]

现在有了后端,您可以创建连接到后端的前端。前端使用给后端服务指定的DNS名称连接到后端工作程序Pod。 DNS名称为“ app-api-mysql-svc ”,它是先前服务配置文件中name字段的值。

apiVersion: v1
kind: Service
metadata:
  name: frontend
spec:
  selector:
    app: app-api-mysql
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 80
  type: LoadBalancer

类似于后端,前端也有服务。该服务的配置具有type: LoadBalancer,这意味着该服务使用您的云提供商的默认负载均衡器。

您也可以通过前端服务器代理所有后端呼叫

如果要通过前端服务器端路由(或愿意路由)所有微服务/后端调用,并且要将前端和后端都部署在同一名称空间的同一k8s集群中,则可以使用KubeDNS附加组件(如果k8s群集中尚不可用,则可以与k8s管理员联系)将后端服务名称解析为其IP。在您的前端服务器中,您的后端服务将始终可以通过其名称进行解析。

由于您的k8s群集中有kubeDNS,并且前端和后端服务都位于相同的k8s群集和相同的名称空间中,因此我们可以利用k8s的内置服务发现机制。后端服务和前端服务可以通过名称相互发现。这意味着,您只需使用DNS名称“后端”即可从前端 pods 访问后端服务。因此,只需将所有后端请求通过您的前端nginx代理到您的上游后端服务即可。在前端nginx pods 中,域名“ backend”的域名可以解析为后端服务的IP。这也将使您避免CORS头痛。此设置是可移植的,这意味着无论您是在开发阶段还是阶段还是产品中部署,名称“后端”将始终解析为相应的后端。

您可以在这里找到更多信息:backend-frontendfrontend-backend-pod-connection

将持久卷连接到pod

MySQL需要PersistentVolume来存储数据。他们的PersistentVolumeClaims将在部署步骤中创建。

许多集群环境都安装了默认的StorageClass。在PersistentVolumeClaim中未指定StorageClass时,将使用群集的默认StorageClass。

创建 PersistentVolumeClaim 后,会根据 StorageClass 配置动态地设置 PersistentVolume

在这里,您可以找到详细的指南,了解如何使用持久卷pv-mysql-wordpress配置MySQL pod。