kubernetes集群怎么访问外部的服务mysql,redis

kubernetes集群怎么访问外部的服务mysql,redis,第1张

k8s访问集群外独立的服务最好的方式是采用Endpoint方式(可以看作是将k8s集群之外的服务抽象为内部服务),以mysql服务为例:

创建mysql-endpoints.yaml

apiVersion: v1

kind: Endpoints

metadata:

name: mysql-test

namespace: default

subsets:

- addresses:- ip: 10.1.0.32ports:

- port: 3306多个端口的话可以在此处列出123456789101112

创建mysql-service.yaml

apiVersion: v1kind: Servicemetadata:

name: mysql-testspec:

ports:

- port: 3306同样多端口需要列出

最近新拉了一个K8s 1.17版本的集群,由于服务器资源有限,只有一个Master和一个Minion,就把Master设置为可分配业务Pod。

由于Master和Minion为同性质工作,后来重启K8s集群的时候,有一个CoreDNS被分配到了Minion主机上。

当时也没太留意,只是在启动一个服务的时候,发现只能访问外网的IP,不能通过域名方面,感觉好奇怪。

看了下/etc/resolv.conf里面的配置啥的也都正确,按理来说不应该出现问题。

由于用的是Centos7 *** 作系统,就把Firewalld给关闭了尝试下,就可以正常通过域名访问,由此可见还是Firewalld给拦截了。

考虑到Firewalld的拦截,很奇怪,因为我们的pod是访问外网,不是外面访问它,应该不是开放端口的问题,最后查看了下宿主机上的NAT路由转发,结果发现,Master上的处于开启状态,Minion上的处于关闭状态,怪不得无法访问外网的域名服务器进行域名的正常解析,开启后,一切正常。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9461150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存