[Yandex Cloud documentation](../../index.md) > [Yandex Managed Service for Kubernetes](../index.md) > [Concepts](index.md) > External cluster nodes

# External cluster nodes

{% note info %}

Connecting external nodes is at the [Preview](../../overview/concepts/launch-stages.md) stage. You will not be charged for using them.

{% endnote %}

With Managed Service for Kubernetes, you can connect servers from outside Yandex Cloud as [Kubernetes cluster](index.md#kubernetes-cluster) nodes.

## Requirements for connecting external nodes to a cluster {#requirements}

There are certain requirements you should fulfill to connect external nodes to a Managed Service for Kubernetes:
* L3 network connectivity between your servers' local network infrastructure and your Managed Service for Kubernetes cluster's [cloud network](../../vpc/concepts/network.md#network). External nodes only connect to a cluster [master](index.md#master) via its Yandex Cloud cloud network internal IP address.

  You can establish a private dedicated connection between your local network infrastructure and Yandex Cloud:
  * Using [Yandex Cloud Interconnect](../../interconnect/index.md).
  * Manually, via a VPN, e.g., [IPSec](../operations/external-nodes-connect-ipsec.md) or [WireGuard](../operations/external-nodes-connect-wireguard.md).

* A Managed Service for Kubernetes cluster uses network [tunneling](network-policy.md#cilium).
* Your external servers must have internet access.
* External server OS: Ubuntu 24.04.

For information on connecting external nodes to a Managed Service for Kubernetes cluster, see [Connecting external nodes to a cluster](../operations/external-nodes-connect.md).

## Responsibility {#responsibility}

For reliable operation of external nodes, you must ensure continuous operation of:
* Your computing infrastructure, i.e., servers and their operating system.
  * We do not recommend using external servers for anything other than the cluster node functions.
* Local network infrastructure of your servers.
* Connection between your local network infrastructure and Yandex Cloud.

Yandex Cloud offers reliable private connections between your local network and cloud infrastructure by means of [Cloud Interconnect](../../interconnect/index.md). Alternatively, you can configure and maintain the quality of such a connection yourself using a VPN.

Yandex Cloud does not offer management services or guarantee the reliability of any computing or network infrastructure outside the Yandex Cloud data centers. You can take advantage of a managed infrastructure by using Managed Service for Kubernetes [regular node groups](../operations/node-group/node-group-create.md).

## External node operation limitations {#restrictions}

When designing load balancing for nodes in a Managed Service for Kubernetes cluster, you have to consider the following aspects:
* You cannot connect `PersistentVolume` [objects](volume.md) based on Yandex Cloud disks to external nodes.
* [Services](index.md#service) based on Yandex Cloud L3 load balancers, e.g., `LoadBalancer`, do not distribute traffic to these nodes.

You must deploy any loads requiring this feature on Managed Service for Kubernetes cluster nodes located in Yandex Cloud only. For this, use the [node affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) settings:

```yaml
...
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: yandex.cloud/node-group-id # Kubernetes label for nodes located in Yandex Cloud.
            operator: Exists
...
```

You can manage traffic at L7 instead of doing it using L3 load balancers. To do this, install an Ingress controller in your Managed Service for Kubernetes cluster and use the `Ingress` resources.

Marketplace products [Ingress controller](../tutorials/alb-ingress-controller.md) and [Gateway API](../tutorials/marketplace/gateway-api.md) based on [Yandex Application Load Balancer](../../application-load-balancer/index.md) do not support balancing to external nodes.

Use the [Gwin](../alb-ref/gwin-index.md) controller for balancing to external nodes.

To use the Gwin controller for balancing to external nodes:
* The Application Load Balancer L7 load balancer must have access to the external node address.
* The external node address must be present in the node's `status` as a resource, for example:

  ```bash
  kubectl get no -o yaml example-cluster-node-1 | yq ".status.addresses"
  ```

  ```yaml
  - address: 10.0.0.7
    type: InternalIP
  - address: 2001:db8::1
    type: InternalIP
  - address: example-cluster-node-1
    type: Hostname
  ```