github.com/imran-kn/cilium-fork@v1.6.9/Documentation/gettingstarted/nodeport.rst (about)

     1  .. only:: not (epub or latex or html)
     2  
     3      WARNING: You are looking at unreleased Cilium documentation.
     4      Please use the official rendered version released here:
     5      http://docs.cilium.io
     6  
     7  .. _nodeport:
     8  
     9  **************************
    10  Kubernetes NodePort (beta)
    11  **************************
    12  
    13  This guide explains how to configure Cilium to enable Kubernetes NodePort
    14  services in BPF which can replace NodePort implemented by ``kube-proxy``.
    15  Enabling the feature allows to run a fully functioning Kubernetes cluster
    16  without ``kube-proxy``.
    17  
    18  .. note::
    19  
    20      This is a beta feature. Please provide feedback and file a GitHub issue if
    21      you experience any problems.
    22  
    23  .. note::
    24  
    25     NodePort services depend on the :ref:`host-services` feature, therefore
    26     a v4.19.57, v5.1.16, v5.2.0 or more recent Linux kernel is required. Note
    27     that v5.0.y kernels do not have the fix required to run BPF NodePort since
    28     at this point in time the v5.0.y stable kernel is end-of-life (EOL) and
    29     not maintained anymore.
    30  
    31  .. include:: k8s-install-download-release.rst
    32  
    33  Generate the required YAML file and deploy it:
    34  
    35  .. code:: bash
    36  
    37     helm template cilium \
    38       --namespace kube-system \
    39       --set global.nodePort.enabled=true \
    40       > cilium.yaml
    41  
    42  By default, a NodePort service will be accessible via an IP address of a native
    43  device which has a default route on the host. To change a device, set its name
    44  in the ``global.nodePort.device`` option.
    45  
    46  In addition, thanks to the :ref:`host-services` feature, the NodePort service
    47  can be accessed from a host or a Pod within a cluster via it's public,
    48  cilium_host device or loopback address, e.g. ``127.0.0.1:$NODE_PORT``.
    49  
    50  Cilium's BPF-based NodePort implementation is supported in direct routing as
    51  well as in tunneling mode.
    52  
    53  If ``kube-apiserver`` was configured to use a non-default NodePort port range,
    54  then the same range must be passed to Cilium via the ``global.nodePort.range``
    55  option.
    56  
    57  Once configured, apply the DaemonSet file to deploy Cilium and verify that it
    58  has come up correctly:
    59  
    60  .. parsed-literal::
    61  
    62      kubectl create -f cilium.yaml
    63      kubectl -n kube-system get pods -l k8s-app=cilium
    64      NAME                READY     STATUS    RESTARTS   AGE
    65      cilium-crf7f        1/1       Running   0          10m
    66  
    67  Limitations
    68  ###########
    69  
    70      * Both Service's ``externalTrafficPolicy: Local`` and ``healthCheckNodePort``
    71        are currently not supported.
    72      * NodePort services are currently exposed through the native device which has
    73        the default route on the host or a user specified device. In tunneling mode,
    74        they are additionally exposed through the tunnel interface (``cilium_vxlan``
    75        or ``cilium_geneve``). Exposing services through multiple native devices
    76        will be supported in upcoming Cilium versions.