如何在Kubernetes中使多个DNS指向一个服务
当我们使用如何在Kubernetes中使多个DNS指向一个服务,dns,kubernetes,docker-compose,Dns,Kubernetes,Docker Compose,当我们使用docker compose时,我们可以通过链接将多个别名映射到一个容器/服务。例如,bucket1.s3和bucket2.s3是容器s3的别名。现在,当我们转到kubernetes时,我正尝试做同样的事情,并使用服务发现链接容器 我现在能想到的是,每个桶有一个服务,每个服务将指向同一个吊舱。这似乎需要做很多工作。有没有办法将多个DNS映射到一个服务,因此bucket1.s3.namespace.svc.cluster.local和bucket2.s3.namespace.svc.cl
docker compose
时,我们可以通过链接将多个别名映射到一个容器/服务。例如,bucket1.s3
和bucket2.s3
是容器s3
的别名。现在,当我们转到kubernetes时,我正尝试做同样的事情,并使用服务发现链接容器
我现在能想到的是,每个桶有一个服务,每个服务将指向同一个吊舱。这似乎需要做很多工作。有没有办法将多个DNS映射到一个服务,因此bucket1.s3.namespace.svc.cluster.local
和bucket2.s3.namespace.svc.cluster.local
都可以解析为s3
服务?我相信您可能想要的是一个服务映射到两个部署,您可以使用bucket1和bucket2两个名称,并使用一个标签标记它们app:buckets
,然后使用包含该标签的选择器创建服务
apiVersion: apps/v1
kind: Deployment
metadata:
name: bucket1
labels:
app: buckets
spec:
replicas: 3
selector:
matchLabels:
app: buckets
template:
metadata:
labels:
app: buckets
spec:
containers:
- name: bucket-container
image: bucketimage
ports:
- containerPort: 80
但另一个问题是,你为什么想要这个?如果bucket1和bucket2包含不同的信息/数据
对于Kubernetes,通常情况下,如果数据相同,您将部署一个具有多个POD/副本的部署,以服务bucket1或bucket2中的数据。如果数据不同,为什么不使用两个具有不同DNS条目的部署呢
如果您使用的是K8s 1.11或更高版本,您也可以在kube系统
名称空间中,根据RFC 1034第3.6.2节的规定,获取您试图获取的DNS。您也不能在Kubernetes中硬编码IP,因为在创建/删除POD时,IP总是会发生变化。是的,bucket1和bucket2的数据不同。因此,在这种情况下,如果k8s版本为1.11或更高版本,正确的方法是调整coredns?如果您的版本如@Rico所述,为1.11或更高版本,则使用自定义DNS条目。
apiVersion: apps/v1
kind: Deployment
metadata:
name: bucket2
labels:
app: buckets
spec:
replicas: 3
selector:
matchLabels:
app: buckets
template:
metadata:
labels:
app: buckets
spec:
containers:
- name: bucket-container
image: bucketimage
ports:
- containerPort: 80
kind: Service
apiVersion: v1
metadata:
name: s3
spec:
selector:
app: buckets
ports:
- protocol: TCP
port: 80