我在我的centos机器上运行kubernetes集群。 我不想为mysql创建一个pod。 MySQL安装在同一网络中的另一台机器上(机器不在kubernates专用网络中)。
如何从kubernetes集群中运行的pod中访问mysql服务?
我尝试使用以下配置的服务和终点。但是,没有运气。
apiVersion: v1
kind: Service
metadata:
name: database
spec:
ports:
- port: 13080
targetPort: 13080
protocol: TCP
---
kind: Deployment
apiVersion: v1
metadata:
name: database
subsets:
- addresses:
- ip: XX.XX.XX.XX
ports:
- port: 13080
---
kind: ReplicationController
metadata:
name: test
spec:
replicas: 1
selector:
app: test
template:
metadata:
name: test
labels:
app: test
spec:
containers:
- name: my_pods
image: my_pods
env:
- name: DATABASE_HOST
value: database
- name: DATABASE_PORT
value: "13080"
- name: DATABASE_USER
value: "SAAS"
- name: DATABASE_PASSWORD
value: "SAAS"
- name: DATABASE_NAME
value: "SAASDB"
ports:
- containerPort: 8080
imagePullSecrets:
- name: my-secret
---
apiVersion: v1
kind: Service
metadata:
name: test-service
labels:
name: test-service
spec:
type: NodePort
ports:
- port: 11544
targetPort: 8080
nodePort: 30600
selector:
name: test
答案 0 :(得分:2)
您不需要为群集外的内容提供服务。根据您使用的网络模型,docker容器(即kubernetes pod)应该能够通过Docker设置的桥接器正常连接到MySQL容器。检查主机是否在端口3306上具有连接,并且确实如此,只需输入DNS名称(您的kube-dns pod应该将任何基于非kubernetes的请求转发给它所安排的主机的主机resolv.conf)
答案 1 :(得分:-1)
请试试这个:
kubectl delete svc database
kubectl create service nodeport database --tcp=13080:13080
然后使用下面的cmd来获得正确的IP和端口
kubectl get svc database