DNS-Proxy einrichten
DNS-Proxy ist eine Funktion, die folgende Funktionen bietet:
- DNS-Einträge von 
Servicesin einer Multi-Cluster-Einrichtung in Clustern weitergeben - DNS-Einträge für 
ServiceEntrywerden ausgefüllt. 
Kubernetes bietet nur für Services im lokalen Cluster eine DNS-Auflösung.
Wenn Sie die Namensauflösung für Services in einem Remote-Cluster bereitstellen oder einen nur intern verwendeten Hostnamen mit ServiceEntry verwenden möchten, ohne einen zusätzlichen nur intern verwendeten DNS-Server zu haben, können Sie DNS-Namen in solchen Fällen mit einem DNS-Proxy auflösen.
DNS-Proxy konfigurieren
Clusterweite Konfiguration
Wenn Sie den DNS-Proxy im Cluster konfigurieren möchten, fügen Sie dem ConfigMap für MeshConfig ISTIO_META_DNS_CAPTURE-Proxymetadaten hinzu. Der Name der ConfigMap hat das Format istio-<revision_name>. Details zur Überarbeitung finden Sie in der Übersicht über die Überarbeitung.
apiVersion: v1
data:
  mesh: |-
    ...
    defaultConfig:
      proxyMetadata:
        ISTIO_META_DNS_CAPTURE: "true"        
    ...
kind: ConfigMap
metadata:
  name: istio-<revision_name>
  namespace: istio-system
Proxyspezifische Konfiguration
Wenn Sie einen DNS-Proxy für einen Proxy konfigurieren möchten, fügen Sie die Anmerkung ISTIO_META_DNS_CAPTURE für Proxy-Metadaten so hinzu:
kind: Deployment
metadata:
  name: app1
  namespace: ns1
spec:
...
  template:
    metadata:
      annotations:
        proxy.istio.io/config: |
          proxyMetadata:
            ISTIO_META_DNS_CAPTURE: "true"
...
Wird überprüft
Namensauflösung für Service in Clustern
Nach der Multi-Cluster-Einrichtung sollten Sie Service nur in einem der Cluster bereitstellen, um die clusterübergreifende Namensauflösung zu überprüfen.
Im folgenden Beispiel Service ns1/svc1 finden Sie ClusterIP in Service.
$ kubectl get -n ns1 svc1
kind: Service
metadata:
  name: svc1
  namespace: ns1
spec:
...
  ClusterIP: 210.200.1.1
...
Wenn du dann curl vom anderen Cluster zum Service verwendest, sollte die ClusterIP so angezeigt werden:
curl -sS -v svc1.ns1.svc.cluster.local
*   Trying 210.200.1.1:80...
Namensauflösung für ServiceEntry
Fügen Sie eine ServiceEntry mit einem Hostnamen hinzu, der nicht in Ihrem DNS registriert ist.
Zur Überprüfung der Namensauflösung enthält das folgende Beispiel die explizite Adresse 192.168.123.123.
$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: test-service-entry
spec:
  addresses:
  - "192.168.123.123"
  hosts:
  - not-existing-hostname.internal
  ports:
  - name: http
    number: 80
    protocol: HTTP
EOF
Versuchen Sie dann, die DNS-Auflösung in einem Pod auszuführen, in dem der DNS-Proxy aktiviert ist. Wenn Sie beispielsweise einen curl im Pod ausführen, sollte die IP-Adresse so angezeigt werden:
curl -sS -v not-existing-hostname.internal
*   Trying 192.168.123.123:80...