我在kubernetes上有一个spring应用程序,它连接到mysql数据库。这是我的spring-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring
spec:
selector:
matchLabels:
app: spring
replicas: 1
template:
metadata:
labels:
app: spring
spec:
containers:
- name: spring
image: docker/spring
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8091
env:
- name: SPRING_DATASOURCE_URL
value: jdbc:mysql://172.17.0.7:3306/buddyto_mstr_local?useSSL=false&allowPublicKeyRetrieval=true
- name: SPRING_DATASOURCE_USERNAME
value: root
- name: SPRING_DATASOURCE_PASSWORD
value: root
---
apiVersion: v1
kind: Service
metadata:
name: spring
spec:
ports:
- protocol: "TCP"
port: 8091
targetPort: 8091
selector:
app: sample-service
type: NodePort
这个值:jdbc:mysql://172.17.0.7:3306/buddyto_mstr_local?useSSL=false&allowPublicKeyRetrieval=true
包含我运行kubectl get pods -o wide
后得到的mysql pods的IP地址
每次我删除mysql部署并创建一个新的,一个新的IP地址被分配给mysql部署,所以我必须在这里从172.17.0.7
更改为新的IP。
我想以一种方式设置它,这样我就不必每次都更改IP。我该怎么做呢?
Kubernetes为您的服务创建DNS条目,因此使用服务名称而不是使用IP。
请在这里阅读更多内容:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/