我想部署一个前端pod,连接到后端pod(内有mysql),并将数据存储到持久卷中。
检查 指南 关于部署wordpress和用持久量连接mysql。
连接前台pod和后台pod。
为您的部署创建一个服务,并将您的应用程序指向该服务名称将前端连接到后端的关键是后端服务。服务创建了一个持久的IP地址和DNS名称条目,以便后端微服务始终可以被访问。一个服务使用 选择器 来找到它路由流量的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名连接到后端工人花苞。DNS名称是"app-api-mysql-svc。",这是对 name
字段在前面的Service配置文件中。
apiVersion: v1
kind: Service
metadata:
name: frontend
spec:
selector:
app: app-api-mysql
ports:
- protocol: "TCP"
port: 80
targetPort: 80
type: LoadBalancer
与后台类似,前端也有Service。Service的配置有 type: LoadBalancer
这意味着该服务使用云提供商的默认负载均衡器。
您也可以 代理 所有的后台调用都要通过你的前端服务器来完成
如果你正在通过前端的服务器端路由(或愿意路由)所有的微服务后台调用,如果你的前端和后台都部署在同一个k8s集群的同一个命名空间,那么你可以使用KubeDNS插件(如果它还没有在你的k8s集群中使用,你可以与k8s管理员检查)来解析后台服务名到它的IP。从你的前端 服务器你的后端服务总是可以通过它的名字进行解析。
由于你的k8s集群中有kubeDNS,而且前端和后端服务都在同一个k8s集群和同一个命名空间,我们可以利用k8s内置的服务发现机制。后台服务和前台服务可以通过名字来发现对方,也就是说,你可以简单的使用k8s内置的服务发现机制。这意味着,你可以简单地使用DNS名称 "backend "从你的前端服务到达你的后端服务。 豆荚. 所以,只要把所有的后端请求通过前端的nginx代理到上游的后端服务即可。在前端的nginx中 豆荚后台服务的IP将可解析为域名 "backend"。这样你也可以省去CORS的麻烦。这个设置是可移植的,也就是说,无论你是在开发阶段还是在生产阶段部署,"backend "这个名字都会被解析到相应的后台。
更多信息你可以在这里找到。backend-frontend, 前台-后台-连接.
将持久性加密卷连接到 pod
MySQL需要一个PersistentVolume来存储数据。其PersistentVolumeClaims将在部署步骤中创建。
许多集群环境都安装了一个默认的StorageClass。当PersistentVolumeClaim中没有指定StorageClass时,将使用群集的默认StorageClass来代替。
当一个 持久性卷索赔 创立,一个 PersistentVolume 是动态配置的,基于 存储类 配置。
这里你可以找到详细的指南,如何配置MySQL pod与Persisten Volume。pv-mysql-wordpress.