vel*_*vel 6 dns azure kubernetes azure-aks
我们已经定义了内部负载均衡器。
apiVersion: v1
kind: Service
metadata:
name: ads-aks-test
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 9000
selector:
app: ads-aks-test
Run Code Online (Sandbox Code Playgroud)
它有自己的IP 和外部IP。我们希望从另一个虚拟网络中的虚拟机访问此服务。我们需要提前知道它的DNS 名称- 完全限定名称,因为我们正在从部署平台部署多个应用程序,并且我们希望根据其服务名称了解在成功部署后如何访问它,而不是等待 IP 地址待确定(手动或自动)。例如,这是我们的 APP1,之后我们会自动安装需要访问此服务的应用程序 APP2。因此,我们希望避免使用 IP 信息。
我们如何确定我们将从第二个应用程序访问它的服务“主机名”是什么?
我在文档中找到的唯一信息是:“如果您的服务使用动态或静态公共IP地址,您可以使用服务注释service.beta.kubernetes.io/azure-dns-label-name来设置面向公众的DNS 标签。” - 但这是我们不想要的公共负载均衡器!
小智 3
在 K8s 集群中设置外部 DNS 。这是Azure 私有 DNS的指南。这将允许您通过 Kubernetes 资源动态更新为服务选择的任何主机名的 DNS 记录。
示例配置如下所示(摘自Azure 私有 DNS指南)
apiVersion: apps/v1
kind: Deployment
metadata:
name: externaldns
spec:
selector:
matchLabels:
app: externaldns
strategy:
type: Recreate
template:
metadata:
labels:
app: externaldns
spec:
containers:
- name: externaldns
image: k8s.gcr.io/external-dns/external-dns:v0.7.3
args:
- --source=service
- --source=ingress
- --domain-filter=example.com
- --provider=azure-private-dns
- --azure-resource-group=externaldns
- --azure-subscription-id=<use the id of your subscription>
volumeMounts:
- name: azure-config-file
mountPath: /etc/kubernetes
readOnly: true
volumes:
- name: azure-config-file
secret:
secretName: azure-config-file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8381 次 |
| 最近记录: |