You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
在 istio 中,[外部名称服务](https://kubernetes.io/docs/concepts/services-networking/service/#externalname)和 DNS 解析类型的[ServiceEntry](https://istio.io/latest/docs/reference/config/networking/service-entry/#ServiceEntry-Resolution)被广泛使用。对于这两种配置,istiod 将生成关联的 DNS 类型集群。
38
+
�� istio �У�[�ⲿ���Ʒ���](https://kubernetes.io/docs/concepts/services-networking/service/#externalname)�� DNS �������͵�[ServiceEntry](https://istio.io/latest/docs/reference/config/networking/service-entry/#ServiceEntry-Resolution)���㷺ʹ�á��������������ã�istiod �����ɹ����� DNS ���ͼ�Ⱥ��
-���� istiod ��֧�ֹ������� DNS ������Kmesh �ڹ�������ģʽ��Ҳ��֧������
128
128
129
-
### 提案
129
+
### �
130
130
131
131
<!--
132
-
在这里,我们将详细介绍提案的实际内容。这应该有足够的细节,以便审阅者可以准确地理解您提出的内容,但不应包括 API 设计或实现之类的内容。什么是期望的结果,我们如何衡量成功?下面的“设计细节”部分用于真正的细节。
132
+
��������ǽ���ϸ�������ʵ�����ݡ���Ӧ�����㹻��ϸ�ڣ��Ա������߿���ȷ���������������ݣ�����Ӧ���� API ��ƻ�ʵ��֮������ݡ�ʲô�������Ľ����������κ����ɹ�������ġ����ϸ�ڡ���������������ϸ�ڡ�
133
133
-->
134
134
135
-
我们应该实现一个新的组件来执行 DNS 解析,称为`dns resolver`(DNS 解析器)。它应该主要做:
135
+
����Ӧ��ʵ��һ���µ������ִ�� DNS ��������Ϊ`dns resolver`��DNS ������������Ӧ����Ҫ����
136
136
137
-
- DNS 解析 DNS 类型集群中的端点
137
+
- DNS ���� DNS ���ͼ�Ⱥ�еĶ˵�
138
138
139
-
-将结果记录在 DNS 名称表中
139
+
-�������¼�� DNS ���Ʊ���
140
140
141
-
-定期刷新 DNS 名称表,遵循`dnsRefreshRate`或 DNS ttl。
141
+
-����ˢ�� DNS ���Ʊ����ѭ`dnsRefreshRate`�� DNS ttl��
142
142
143
-
我们还应该提供一种方法,让 ebpf 集群管理器程序访问 DNS 名称表。
143
+
���ǻ�Ӧ���ṩһ�ַ������� ebpf ��Ⱥ������������� DNS ���Ʊ��
144
144
145
-
### 设计细节
145
+
### ���ϸ��
146
146
147
147
<!--
148
-
本节应包含足够的信息,以便可以理解您的更改的具体细节。这可能包括 API 规范(尽管并非总是必需的)甚至代码片段。如果对如何实施您的提案有任何歧义,请在此处进行讨论。
148
+
����Ӧ�����㹻����Ϣ���Ա����������ĸ��ĵľ���ϸ�ڡ�����ܰ��� API �淶�����ܲ������DZ���ģ���������Ƭ�Ρ���������ʵʩ��������κ����壬���ڴ˴��������ۡ�
149
149
-->
150
150
151
-
理论上,我们可以考虑在内核或用户空间中实现 DNS 解析器。考虑到复杂性,我建议我们在 Kmesh 守护程序中执行此操作。
151
+
�����ϣ����ǿ��Կ������ں˻��û��ռ���ʵ�� DNS �����������ǵ������ԣ��ҽ��������� Kmesh �ػ�������ִ�д˲�����
-重要的是但未在图中描述,`DNS Resolver`应通过遵循`dnsRefreshRate`和 ttl(以较短者为准)定期刷新 DNS 地址。
163
+
-��Ҫ���ǵ�δ��ͼ��������`DNS Resolver`Ӧͨ����ѭ`dnsRefreshRate`�� ttl���Խ϶���Ϊ������ˢ�� DNS ��ַ��
164
164
165
-
至于 DNS 解析,package `github.com/miekg/dns`提供了很好的库,可用于执行 DNS 解析或 DNS 服务。虽然这里不支持 DNS 服务,但我们应该选择一个确实具有这种功能的包,以便将来可以扩展它。建议使用此包的另一个原因是,coredns 也使用了它,因此它在生产中被广泛使用。
165
+
���� DNS ������package `github.com/miekg/dns`�ṩ�˺ܺõĿ⣬������ִ�� DNS ������ DNS ������Ȼ���ﲻ֧�� DNS ��������Ӧ��ѡ��һ��ȷʵ�������ֹ��ܵİ����Ա㽫��������չ��������ʹ�ô˰�����һ��ԭ���ǣ�coredns Ҳʹ��������������������б��㷺ʹ�á�
166
166
167
-
我们应该确保没有 DNS 名称可以泄漏。集群在服务删除后被删除是很常见的。现在在 Kmesh 中,我们使用 Stow xDS,每次收到 CDS 响应时,它都会包含网格中的所有集群。ads 控制器解析它们,响应,然后将它们存储在用户空间缓存和 bpf 映射中。我们可以让 ads 控制器也执行`Stow`通知。更清楚地说,当 ads 控制器解析所有集群时,它应该将所有需要解析的 DNS 域名发送到`DNS Resolver`。
由于通知是通过 golang 通道进行的,因此效率很高,`Stow`应该可以正常工作。在`DNS Resolver`中,它应该创建一个 map 来记录它需要解析的所有 DNS 域名。因此,每次通知它都应该能够区分新添加、已删除和未更改的 DNS 域名。
169
+
����֪ͨ��ͨ�� golang ͨ�����еģ����Ч�ʺܸߣ�`Stow`Ӧ�ÿ���������������`DNS Resolver`�У���Ӧ�ô���һ�� map ����¼����Ҫ���������� DNS ��������ˣ�ÿ��֪ͨ����Ӧ���ܹ���������ӡ���ɾ����δ���ĵ� DNS ������
170
170
171
-
对于新添加的域名,它应该立即解析它们并将结果写入 DNS 名称表,最后将它们推送到刷新队列中。对于已删除的域名,它应该从本地缓存和定期刷新队列中删除它们。对于未更改的域名,它可以什么都不做。
171
+
��������ӵ���������Ӧ�������������Dz������д�� DNS ���Ʊ������������͵�ˢ�¶����С�������ɾ������������Ӧ�ôӱ��ػ���Ͷ���ˢ�¶�����ɾ�����ǡ�����δ���ĵ�������������ʲô��������
0 commit comments