1
我有一個使用postgres數據庫的rails項目。我想用Kubernetes構建一個數據庫服務器,rails服務器將連接到這個數據庫。Kubernetes:服務端口自動轉發
例如,這裏是我用下面的命令定義postgres.yml
apiVersion: v1
kind: Service
metadata:
name: postgres
spec:
selector:
app: postgres
ports:
- name: "5432"
port: 5432
targetPort: 5432
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- env:
- name: POSTGRES_DB
value: hades_dev
- name: POSTGRES_PASSWORD
value: "1234"
name: postgres
image: postgres:latest
ports:
- containerPort: 5432
resources: {}
stdin: true
tty: true
volumeMounts:
- mountPath: /var/lib/postgresql/data/
name: database-hades-volume
restartPolicy: Always
volumes:
- name: database-hades-volume
persistentVolumeClaim:
claimName: database-hades-volume
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: database-hades-volume
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
我運行此:kubectl run -f postgres.yml
。
但是,當我嘗試運行rails服務器。我總能在以下情況例外:
PG::Error
invalid encoding name: utf8
我嘗試轉發端口,導軌服務器成功連接到數據庫服務器:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
postgres-3681891707-8ch4l 1/1 Running 0 1m
然後運行以下命令:
kubectl port-forward postgres-3681891707-8ch4l 5432:5432
我覺得這解決方案不好。我如何在我的postgres.yml
中定義,所以我不需要像上面那樣手動進行端口轉發。
感謝
我已經將我的服務NodePort但問題還是一樣。 –
試試這個: kubectl公佈服務postgres --port = 80 --type = LoadBalancer,然後運行kubectl獲取服務並查看該服務所在的端口號 –
您的意思是轉換類型爲LoadBalancer?我試過了,看到發佈端口是32395.然後我再次嘗試使用nodePort = 32395的NodePort。但問題仍然存在。謝謝。 –