我没有在kubernetes上部署postgres(单节点,官方图像),并允许服务通过ClusterIP服务访问postgres。
配置相当简单 - 命名空间,部署,服务:
apiVersion: v1
kind: Namespace
metadata:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
namespace: database
name: postgres
spec:
replicas: 1
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:11.1
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
apiVersion: v1
kind: Service
metadata:
name: pg
namespace: database
labels:
app: postgres
spec:
selector:
app: postgres
ports:
kubectl --kubeconfig $k8sconf -n database exec -it $(kubectl --kubeconfig $k8sconf -n database get pods -o jsonpath='{.items[*].metadata.name}') -- psql -U admin postgresdb -c "t"
Tuples only is on.
但是一旦我尝试通过服务访问postgres,命令就会失败:
kubectl --kubeconfig $k8sconf -n database exec -it $(kubectl --kubeconfig $k8sconf -n database get pods -o jsonpath='{.items[*].metadata.name}') -- psql -h pg -U admin postgresdb -c "t"
psql: could not connect to server: Connection timed out
Is the server running on host "pg" (10.245.102.15) and accepting
TCP/IP connections on port 5432?
这是在DigitalOcean单节点集群(1.12.3)上测试的。
Postgres *在正确的端口上监听,pg_hba.conf默认情况下看起来像这样:
...
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host all all all md5
重现看看这个要点
执行via(请使用新的群集并通读):
export k8sconf=/path/to/your/k8s/confic/file
kubectl --kubeconfig $k8sconf apply -f https://gist.githubusercontent.com/sontags/c364751e7f0d8ba1a02a9805efc68db6/raw/01b1808348541d743d6a861402cfba224bee8971/database.yaml
kubectl --kubeconfig $k8sconf -n database exec -it $(kubectl --kubeconfig $k8sconf -n database get pods -o jsonpath='{.items[*].metadata.name}') -- /bin/bash /reproducer/runtest.sh
为什么服务不允许连接或其他测试执行?
没有访问您的群集很难说。这在我的AWS集群上运行良好。有些事情要看:
kube-proxy是否在所有节点上运行?
您的网络覆盖/ CNI是否在所有节点上运行?
只有pg pod才会发生这种情况吗?其他pods怎么样?
DNS似乎很好,因为pg正在解决10.245.102.15
您的节点是否允许从Linux端进行IP转发?
您的数字海洋防火墙规则是否允许来自端口上任何来源的流量5432?请注意,PodCidr和K8s服务IP范围与hostCidr(您的droplets)不同。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。