<p>I'm currently on OSX (Catalina) with Docker Desktop (19.03.5) running k8s (v.14.8)</p>

<p>Following the <a href="https://www.envoyproxy.io/docs/envoy/latest/start/distro/ambassador" rel="nofollow noreferrer">ambassador getting started</a> article, I've done the following:</p>

<p>Created a file called <code>ambassador-ingress.yaml</code></p>

<pre><code>---
apiVersion: v1
kind: Service
metadata:
  labels:
    service: ambassador
  name: ambassador
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
  selector:
    service: ambassador
---
apiVersion: v1
kind: Service
metadata:
  name: google
  annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v0
      kind:  Mapping
      name:  google_mapping
      prefix: /google/
      service: https://google.com:443
      host_rewrite: www.google.com
spec:
  type: ClusterIP
  clusterIP: None
</code></pre>

<p>And I've run the following</p>

<pre class="lang-sh prettyprint-override"><code>$ kubectl apply -f https://www.getambassador.io/yaml/ambassador/ambassador-rbac.yaml
$ kubectl apply -f ambassador-ingress.yaml
</code></pre>

<p>I can now look at <code>kubectl get pods</code> and <code>kubectl get service</code></p>

<pre><code>$ kubectl get pods
NAME                                         READY   STATUS    RESTARTS   AGE
ambassador-74fb8f5668-2b85z                  1/1     Running   0          20m
ambassador-74fb8f5668-r6jrf                  1/1     Running   0          20m
ambassador-74fb8f5668-vrmjg                  1/1     Running   0          20m
</code></pre>

<pre><code>$ kubectl get service
NAME                 TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
ambassador           LoadBalancer   10.97.166.229    localhost     80:31327/TCP     18m
ambassador-admin     NodePort       10.96.1.56       &lt;none&gt;        8877:30080/TCP   18m
google               ClusterIP      None             &lt;none&gt;        &lt;none&gt;           18m
kubernetes           ClusterIP      10.96.0.1        &lt;none&gt;        443/TCP          13d
</code></pre>

<p>Everything looks like it is setup correctly, however, whenever I attempt to curl k8s I can't get anything but an empty server response even though I can hit google directly:</p>

<pre><code>$ curl localhost/google/
&gt; curl: (52) Empty reply from server
$ curl www.google.com
&gt; &lt;!doctype html&gt; ............
</code></pre>

<p>The question I have is, where do I begin troubleshooting?  I don't know where the failure lies or how to begin digging to find what has gone wrong. What is the right direction?</p>

Niko
<p>Based on "The Kubernetes network model" [1] there are 2 important rules:</p>

<blockquote>
  <ul>
  <li>pods on a node can communicate with all pods on all nodes without NAT</li>
  <li>agents on a node (e.g. system daemons, kubelet) can communicate with    all pods on that node</li>
  </ul>
</blockquote>

<p>So basically it says that since your K8s cluster is located on your machine, you can directly communicate to the service ip "10.97.166.229" and POD IP. </p>

<p>So, regarding how to begin your troubleshooting steps, since your PODs are up and running, most likely this is a network error. You can try this:</p>

<p>a) Try to connect to your pod directly. You can get your IP by executing the command:</p>

<pre><code>kubectl get pod -o wide
</code></pre>

<p>b) Get the LOGs of your POD and search for any error:</p>

<pre><code>kubectl logs ambassador-74fb8f5668-2b85z
</code></pre>

<p>c) Go inside your POD and check if you can test connectivity inside your POD. [2]</p>

<pre><code>kubectl exec -it ambassador-74fb8f5668-2b85z -- /bin/bash
</code></pre>

<p>[1] <a href="https://kubernetes.io/docs/concepts/cluster-administration/networking/" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/cluster-administration/networking/</a></p>

<p>[2] <a href="https://kubernetes.io/docs/tasks/debug-application-cluster/get-shell-running-container/" rel="nofollow noreferrer">https://kubernetes.io/docs/tasks/debug-application-cluster/get-shell-running-container/</a></p>
