我如何暴露我的postgresSQL pod与LoadBalancer服务?



我在裸机服务器上设置了1个主节点和2个工作节点。我用3个副本集部署postgresql。这是我的部署文件。

apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
selector:
matchLabels:
app: postgres
replicas: 3
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:latest
imagePullPolicy: "IfNotPresent"
envFrom:
- configMapRef:
name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: postgres-pv-claim
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: postgres-pv-volume
labels:
type: local
app: postgres
spec:
storageClassName: standard
capacity:
storage: 15Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/mnt/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: postgres-pv-claim
labels:
app: postgres
spec:
storageClassName: standard
accessModes:
- ReadWriteMany
resources:
requests:
storage: 15Gi
---
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config
labels:
app: postgres
data:
POSTGRES_DB: postgresdb
POSTGRES_USER: postgres
POSTGRES_PASSWORD: root
---

我还遵循MetalLBhttps://metallb.universe.tf/installation/并设置第2层负载平衡器。它运行良好,我甚至可以使用这个服务暴露nginx pod。

如你所见

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>         443/TCP        4h28m
nginx        LoadBalancer   10.107.29.158   153.10.19.35   80:30703/TCP   162m

这些是我的跑步舱

NAME                        READY   STATUS    RESTARTS   AGE
nginx-76d6c9b8c-lrljz       1/1     Running   0          3h29m
postgres-7dff8d6d74-8mlnt   1/1     Running   0          136m
postgres-7dff8d6d74-9zxsk   1/1     Running   0          136m
postgres-7dff8d6d74-xzkkx   1/1     Running   0          136m

我面临什么问题?

当我试图暴露postgresSQL pod与负载均衡器我无法连接。服务器不可达。我试着像下面这样暴露

kubectl expose deploy postgres --port 30432 --type LoadBalancer

我也尝试为这个服务创建一个yaml文件,但仍然不成功。

kind: Service
apiVersion: v1
metadata:
name: postgres-svc
labels:
app: postgres
spec:
type: LoadBalancer
ports:
- port: 5432
targetPort: 30432
type: LoadBalancer
selector:
metallb-service: postgres

我期望什么?我想用这个负载平衡器服务将我的pod公开到外部网络,这样所有的新数据都应该在所有3个副本集中更新。你能帮我修理一下我的服务吗?yaml文件?我将非常感谢你的全部

您没有在postres容器中指定端口。

对于kubectl expose,您应该指定targetPort:

kubectl expose deploy postgres --port 30432 --target-port 5432 --type LoadBalancer

在您的YAML中,您必须切换端口:

kind: Service
apiVersion: v1
metadata:
name: postgres-svc
labels:
app: postgres
spec:
type: LoadBalancer
ports:
- port: 30432
targetPort: 5432
type: LoadBalancer
selector:
app: postgres

这里selector也是错误的。它必须与pod上的标签相匹配。

相关内容

  • 没有找到相关文章

最新更新