<p>Deployed K8s service with type as LoadBalancer. K8s cluster running on an EC2 instance. The service is stuck at "pending state".  </p>

<p>Does the service type 'ELB' requires any stipulation in terms of AWS configuration parameters?</p>

<p>Yes. Typically you need the option <code>--cloud-provider=aws</code> on:</p>

<ul>
<li>All kubelets</li>
<li>kube-apiserserver</li>
<li>kube-controller-manager</li>
</ul>

<p>Also, you have to make sure that all your K8s instances (master/nodes) have an AWS <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html" rel="nofollow noreferrer">instance role</a> that allows them to create/remove ELBs and routes (All access to EC2 should do).</p>

<p>Then you need to make sure all your nodes are tagged:</p>

<ul>
<li>Key: KubernetesCluster, Value: 'your cluster name'</li>
<li>Key: k8s.io/role/node, Value: 1 (For nodes only)</li>
<li>Key: kubernetes.io/cluster/kubernetes, Value: owned</li>
</ul>

<p>Make sure your subnet is also tagged:</p>

<ul>
<li>Key: KubernetesCluster, Value: 'your cluster name'</li>
</ul>

<p>Also, your Kubernetes node definition, you should have something like this:</p>

<pre><code>ProviderID: aws:///&lt;aws-region&gt;/&lt;instance-id&gt;
</code></pre>

<p>Generally, all of the above is not needed if you are using the <a href="https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/" rel="nofollow noreferrer">Kubernetes Cloud Controller Manager</a> which is in beta as of K8s <code>1.13.0</code></p>
