<p>Currently running a fresh &quot;all in one VM&quot; (stacked master/worker approach) kubernetes <code>v1.21.1-00</code> on Ubuntu Server 20 LTS, using</p>
<ul>
<li>cri-o as container runtime interface</li>
<li>calico for networking/security</li>
</ul>
<p>also installed the kubernetes-dashboard (but I guess that's not important for my issue 😉). Taking this guide for installing ambassador: <a href="https://www.getambassador.io/docs/edge-stack/latest/topics/install/yaml-install/" rel="nofollow noreferrer">https://www.getambassador.io/docs/edge-stack/latest/topics/install/yaml-install/</a> I come along the issue that the service is stuck in status &quot;pending&quot;.</p>
<p><code> kubectl get svc -n ambassador</code> prints out the following stuff</p>
<pre><code>NAME               TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ambassador         LoadBalancer   10.97.117.249    &lt;pending&gt;     80:30925/TCP,443:32259/TCP   5h
ambassador-admin   ClusterIP      10.101.161.169   &lt;none&gt;        8877/TCP,8005/TCP            5h
ambassador-redis   ClusterIP      10.110.32.231    &lt;none&gt;        6379/TCP                     5h
quote              ClusterIP      10.104.150.137   &lt;none&gt;        80/TCP                       5h
</code></pre>
<p>While changing the <code>type</code> from <code>LoadBalancer</code> to <code>NodePort</code> in the service sets it up correctly, I'm not sure of the implications coming along. Again, I want to use ambassador as an ingress component here - with my setup (only one machine), &quot;real&quot; loadbalancing might not be necessary.</p>
<p>For covering all the subdomain stuff, I setup a wildcard recording for pointing to my machine, means I got a CNAME for <code>*.k8s.my-domain.com</code> which points to this host. Don't know, if this approach was that smart for setting up an ingress.</p>
<p>Edit: List of events, as requested below:</p>
<pre><code>Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  116s  default-scheduler  Successfully assigned ambassador/ambassador-redis-584cd89b45-js5nw to dev-bvpl-099
  Normal  Pulled     116s  kubelet            Container image &quot;redis:5.0.1&quot; already present on machine
  Normal  Created    116s  kubelet            Created container redis
  Normal  Started    116s  kubelet            Started container redis
</code></pre>
<p>Additionally, here's the service pending in yaml presenation (exported via <code>kubectl get svc -n ambassador -o yaml ambassador</code>)</p>
<pre><code>apiVersion: v1
kind: Service
metadata:
  annotations:
    a8r.io/bugs: https://github.com/datawire/ambassador/issues
    a8r.io/chat: http://a8r.io/Slack
    a8r.io/dependencies: ambassador-redis.ambassador
    a8r.io/description: The Ambassador Edge Stack goes beyond traditional API Gateways
      and Ingress Controllers with the advanced edge features needed to support developer
      self-service and full-cycle development.
    a8r.io/documentation: https://www.getambassador.io/docs/edge-stack/latest/
    a8r.io/owner: Ambassador Labs
    a8r.io/repository: github.com/datawire/ambassador
    a8r.io/support: https://www.getambassador.io/about-us/support/
    kubectl.kubernetes.io/last-applied-configuration: |
      {&quot;apiVersion&quot;:&quot;v1&quot;,&quot;kind&quot;:&quot;Service&quot;,&quot;metadata&quot;:{&quot;annotations&quot;:{&quot;a8r.io/bugs&quot;:&quot;https://github.com/datawire/ambassador/issues&quot;,&quot;a8r.io/chat&quot;:&quot;http://a8r.io/Slack&quot;,&quot;a8r.io/dependencies&quot;:&quot;ambassador-redis.ambassador&quot;,&quot;a8r.io/description&quot;:&quot;The Ambassador Edge Stack goes beyond traditional API Gateways and Ingress Controllers with the advanced edge features needed to support developer self-service and full-cycle development.&quot;,&quot;a8r.io/documentation&quot;:&quot;https://www.getambassador.io/docs/edge-stack/latest/&quot;,&quot;a8r.io/owner&quot;:&quot;Ambassador Labs&quot;,&quot;a8r.io/repository&quot;:&quot;github.com/datawire/ambassador&quot;,&quot;a8r.io/support&quot;:&quot;https://www.getambassador.io/about-us/support/&quot;},&quot;labels&quot;:{&quot;app.kubernetes.io/component&quot;:&quot;ambassador-service&quot;,&quot;product&quot;:&quot;aes&quot;},&quot;name&quot;:&quot;ambassador&quot;,&quot;namespace&quot;:&quot;ambassador&quot;},&quot;spec&quot;:{&quot;ports&quot;:[{&quot;name&quot;:&quot;http&quot;,&quot;port&quot;:80,&quot;targetPort&quot;:8080},{&quot;name&quot;:&quot;https&quot;,&quot;port&quot;:443,&quot;targetPort&quot;:8443}],&quot;selector&quot;:{&quot;service&quot;:&quot;ambassador&quot;},&quot;type&quot;:&quot;LoadBalancer&quot;}}
  creationTimestamp: &quot;2021-05-22T07:18:23Z&quot;
  labels:
    app.kubernetes.io/component: ambassador-service
    product: aes
  name: ambassador
  namespace: ambassador
  resourceVersion: &quot;4986406&quot;
  uid: 68e4582c-be6d-460c-909e-dfc0ad84ae7a
spec:
  clusterIP: 10.107.194.191
  clusterIPs:
  - 10.107.194.191
  externalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: http
    nodePort: 32542
    port: 80
    protocol: TCP
    targetPort: 8080
  - name: https
    nodePort: 32420
    port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    service: ambassador
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}
</code></pre>
<p>EDIT#2: I wonder, if <a href="https://stackoverflow.com/a/44112285/667183">https://stackoverflow.com/a/44112285/667183</a> applies for my process as well?</p>

Robert Heine
<p>Answer is pretty much here: <a href="https://serverfault.com/questions/1064313/ambassador-service-stays-pending">https://serverfault.com/questions/1064313/ambassador-service-stays-pending</a> . After installing a <code>load balancer</code> the whole setup worked. I decided to go with <code>metallb</code> (<a href="https://metallb.universe.tf/installation/#installation-by-manifest" rel="nofollow noreferrer">https://metallb.universe.tf/installation/#installation-by-manifest</a> for installation). I decided to go with the following configuration for a single-node kubernetes cluster:</p>
<pre><code>apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 10.16.0.99-10.16.0.99
</code></pre>
<p>After a few seconds the load balancer is detected and everything goes fine.</p>
