【发布时间】:2020-09-29 22:09:17
【问题描述】:
我设置了一个在 K8s 中注入 istio 的 postgreSQL,我想使用 psql(或 postgreSQL 客户端)从其他网络访问它,所以我试图设置 istio-ingressgateway 来访问它,并设置相关的网关和virtualservice 来路由流量,但会出现一些错误,如下所示。请帮忙看看问题。
"psql: 服务器意外关闭连接 这可能意味着服务器异常终止 在处理请求之前或期间。 "
yaml 文件如下
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config
labels:
app: postgres
data:
POSTGRES_DB: usermgt
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin2020
EOF
cat <<EOF | kubectl apply -f -
kind: PersistentVolume
apiVersion: v1
metadata:
name: postgres-pv-volume
labels:
type: local
app: postgres
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/mnt/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: postgres-pv-claim
labels:
app: postgres
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
EOF
cat <<EOF | istioctl kube-inject -f - | kubectl apply -f -
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:10.4
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
envFrom:
- configMapRef:
name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: postgres-pv-claim
---
apiVersion: v1
kind: Service
metadata:
name: postgres
labels:
app: postgres
spec:
ports:
- port: 5432
selector:
app: postgres
EOF
cat <<EOF | kubectl apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: postgres-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 5432
name: pgsql
protocol: TCP
hosts:
- "*"
EOF
cat <<EOF | kubectl apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: psql-vs
spec:
hosts:
- "*"
gateways:
- postgres-gateway
tcp:
- match:
- port: 5432
route:
- destination:
host: postgres.default
port:
number: 5432
EOF
【问题讨论】:
-
你的 istio 版本是多少?您是否尝试将
sidecar.istio.io/inject: "false"注释添加到您的部署中并尝试它是否在没有 istio 的情况下工作?基于此github issue 考虑,postgres 与 istio 结合可能存在一些问题。
标签: postgresql kubernetes istio