github.com/imran-kn/cilium-fork@v1.6.9/Documentation/install/system_requirements.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 .. _admin_system_reqs: 8 9 ******************* 10 System Requirements 11 ******************* 12 13 Before installing Cilium, please ensure that your system meets the minimum 14 requirements below. Most modern Linux distributions already do. 15 16 Summary 17 ======= 18 19 When running Cilium using the container image ``cilium/cilium``, the host 20 system must meet these requirements: 21 22 - `Linux kernel`_ >= 4.9.17 23 - :ref:`req_kvstore` etcd >= 3.1.0 or consul >= 0.6.4 24 25 When running Cilium as a native process on your host (i.e. **not** running the 26 ``cilium/cilium`` container image) these additional requirements must be met: 27 28 - `clang+LLVM`_ >=5.0 (Recommended: >=7.0) 29 - iproute2_ with BPF templating patches [#iproute2_foot]_ 30 31 .. _`clang+LLVM`: https://llvm.org 32 .. _iproute2: https://www.kernel.org/pub/linux/utils/net/iproute2/ 33 34 ======================== ========================== =================== 35 Requirement Minimum Version In cilium container 36 ======================== ========================== =================== 37 `Linux kernel`_ >= 4.9.17 no 38 Key-Value store (etcd) >= 3.1.0 no 39 Key-Value store (consul) >= 0.6.4 no 40 clang+LLVM >= 5.0.0 yes 41 iproute2 >= 5.0.0 [#iproute2_foot]_ yes 42 ======================== ========================== =================== 43 44 .. [#iproute2_foot] Requires support for BPF templating as documented 45 :ref:`below <iproute2_requirements>`. 46 47 Linux Distribution Compatibility Matrix 48 ======================================= 49 50 The following table lists Linux distributions that are known to work 51 well with Cilium. 52 53 ========================== ==================== 54 Distribution Minimum Version 55 ========================== ==================== 56 `Amazon Linux 2`_ all 57 `Container-Optimized OS`_ all 58 `CentOS`_ >= 7.0 [#centos_foot]_ 59 CoreOS_ stable (>= 1298.5.0) 60 Debian_ >= 9 Stretch 61 `Fedora Atomic/Core`_ >= 25 62 LinuxKit_ all 63 `RedHat Enterprise Linux`_ >= 8.0 64 Ubuntu_ >= 16.04.2, >= 16.10 65 Opensuse_ Tumbleweed, >=Leap 15.0 66 ========================== ==================== 67 68 .. _Amazon Linux 2: https://aws.amazon.com/amazon-linux-2/ 69 .. _CentOS: https://centos.org 70 .. _Container-Optimized OS: https://cloud.google.com/container-optimized-os/docs 71 .. _CoreOS: https://coreos.com/releases/ 72 .. _Debian: https://wiki.debian.org/DebianStretch 73 .. _Fedora Atomic/Core: http://www.projectatomic.io/blog/2017/03/fedora_atomic_2week_2/ 74 .. _LinuxKit: https://github.com/linuxkit/linuxkit/tree/master/kernel 75 .. _RedHat Enterprise Linux: https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux 76 .. _Ubuntu: https://wiki.ubuntu.com/YakketyYak/ReleaseNotes#Linux_kernel_4.8 77 .. _Opensuse: https://www.opensuse.org/ 78 79 .. [#centos_foot] CentOS 7 requires a third-party kernel provided by `ElRepo <http://elrepo.org/tiki/tiki-index.php>`_ 80 whereas CentOS 8 ships with a supported kernel. 81 82 .. note:: The above list is based on feedback by users. If you find an unlisted 83 Linux distribution that works well, please let us know by opening a 84 GitHub issue or by creating a pull request that updates this guide. 85 86 .. _admin_kernel_version: 87 88 Linux Kernel 89 ============ 90 91 Cilium leverages and builds on the kernel BPF functionality as well as various 92 subsystems which integrate with BPF. Therefore, host systems are required to 93 run Linux kernel version 4.9.17 or later to run a Cilium agent. More recent 94 kernels may provide additional BPF functionality that Cilium will automatically 95 detect and use on agent start. 96 97 In order for the BPF feature to be enabled properly, the following kernel 98 configuration options must be enabled. This is typically the case with 99 distribution kernels. When an option can be built as a module or statically 100 linked, either choice is valid. 101 102 .. code:: bash 103 104 CONFIG_BPF=y 105 CONFIG_BPF_SYSCALL=y 106 CONFIG_NET_CLS_BPF=y 107 CONFIG_BPF_JIT=y 108 CONFIG_NET_CLS_ACT=y 109 CONFIG_NET_SCH_INGRESS=y 110 CONFIG_CRYPTO_SHA1=y 111 CONFIG_CRYPTO_USER_API_HASH=y 112 113 .. note:: 114 115 Users running Linux 4.10 or earlier with Cilium CIDR policies may face 116 :ref:`cidr_limitations`. 117 118 L7 proxy redirection currently uses ``TPROXY`` iptables actions as well 119 as ``socket`` matches. For L7 redirection to work as intended kernel 120 configuration must include the following modules: 121 122 .. code:: bash 123 124 CONFIG_NETFILTER_XT_TARGET_TPROXY=m 125 CONFIG_NETFILTER_XT_MATCH_MARK=m 126 CONFIG_NETFILTER_XT_MATCH_SOCKET=m 127 128 When ``xt_socket`` kernel module is missing the forwarding of 129 redirected L7 traffic does not work in non-tunneled datapath 130 modes. Since some notable kernels (e.g., COS) are shipping without 131 ``xt_socket`` module, Cilium implements a fallback compatibility mode 132 to allow L7 policies and visibility to be used with those 133 kernels. Currently this fallback disables ``ip_early_demux`` kernel 134 feature in non-tunneled datapath modes, which may decrease system 135 networking performance. This guarantees HTTP and Kafka redirection 136 works as intended. However, if HTTP or Kafka enforcement policies or 137 visibility annotations are never used, this behavior can be turned off 138 by adding the following to the helm configuration command line: 139 140 .. parsed-literal:: 141 142 helm template cilium \ 143 ... 144 --set global.enableXTSocketFallback=false 145 > cilium.yaml 146 147 Advanced Features and Required Kernel Version 148 ============================================= 149 Cilium requires Linux kernel 4.9.17 or higher, however development on additional 150 kernel features and functionality continues to progress in the Linux community. 151 Some Cilium features and functionality are dependent on newer kernel versions. 152 These additional Cilium features and functionality are enabled by upgrading to 153 a later kernel version as detailed below: 154 155 ======================= =============================== 156 Cilium Feature Minimum Kernel Version 157 ======================= =============================== 158 :ref:`cidr_limitations` >= 4.11 159 :ref:`host-services` >= 4.19.57, >= 5.1.16, >= 5.2 160 :ref:`kubeproxy-free` >= 4.19.57, >= 5.1.16, >= 5.2 161 ======================= =============================== 162 163 .. _req_kvstore: 164 165 Key-Value store 166 =============== 167 168 Cilium uses a distributed Key-Value store to manage, synchronize and distribute 169 security identities across all cluster nodes. The following Key-Value stores 170 are currently supported: 171 172 - etcd >= 3.1.0 173 - consul >= 0.6.4 174 175 See :ref:`install_kvstore` for details on how to configure the 176 ``cilium-agent`` to use a Key-Value store. 177 178 clang+LLVM 179 ========== 180 181 182 .. note:: This requirement is only needed if you run ``cilium-agent`` natively. 183 If you are using the Cilium container image ``cilium/cilium``, 184 clang+LLVM is included in the container image. 185 186 LLVM is the compiler suite that Cilium uses to generate BPF bytecode programs 187 to be loaded into the Linux kernel. The minimum supported version of LLVM 188 available to ``cilium-agent`` should be >=5.0. The version of clang installed 189 must be compiled with the BPF backend enabled. 190 191 See https://releases.llvm.org/ for information on how to download and install 192 LLVM. 193 194 .. _iproute2_requirements: 195 196 iproute2 197 ======== 198 199 .. note:: iproute2 is only needed if you run ``cilium-agent`` directly on the 200 host machine. iproute2 is included in the ``cilium/cilium`` container 201 image. 202 203 iproute2_ is a low level tool used to configure various networking related 204 subsystems of the Linux kernel. Cilium uses iproute2 to configure networking 205 and ``tc``, which is part of iproute2, to load BPF programs into the kernel. 206 207 The version of iproute2 must include the BPF templating patches. See the 208 links in the table below for documentation on how to install the correct 209 version of iproute2 for your distribution. 210 211 ================= ========================= 212 Distribution Link 213 ================= ========================= 214 Binary (OpenSUSE) `Open Build Service`_ 215 Source `Cilium iproute2 source`_ 216 ================= ========================= 217 218 .. _`Open Build Service`: https://build.opensuse.org/package/show/security:netfilter/iproute2 219 .. _`Cilium iproute2 source`: https://github.com/cilium/iproute2/tree/static-data 220 221 .. _firewall_requirements: 222 223 Firewall Rules 224 ============== 225 226 If you are running Cilium in an environment that requires firewall rules to enable connectivity, you will have to add the following rules to ensure Cilium works properly. 227 228 It is recommended but optional that all nodes running Cilium in a given cluster must be able to ping each other so ``cilium-health`` can report and monitor connectivity among nodes. This requires ICMP Type 0/8, Code 0 open among all nodes. TCP 4240 should also be open among all nodes for ``cilium-health`` monitoring. Note that it is also an option to only use one of these two methods to enable health monitoring. If the firewall does not permit either of these methods, Cilium will still operate fine but will not be able to provide health information. 229 230 If you are using VXLAN overlay network mode, Cilium uses Linux's default VXLAN port 8472 over UDP, unless Linux has been configured otherwise. In this case, UDP 8472 must be open among all nodes to enable VXLAN overlay mode. The same applies to Geneve overlay network mode, except the port is UDP 6081. 231 232 If you are running in direct routing mode, your network must allow routing of pod IPs. 233 234 As an example, if you are running on AWS with VXLAN overlay networking, here is a minimum set of AWS Security Group (SG) rules. It assumes a separation between the SG on the master nodes, ``master-sg``, and the worker nodes, ``worker-sg``. It also assumes ``etcd`` is running on the master nodes. 235 236 Master Nodes (``master-sg``) Rules: 237 238 ======================== =============== ==================== =============== 239 Port Range / Protocol Ingress/Egress Source/Destination Description 240 ======================== =============== ==================== =============== 241 2379-2380/tcp ingress ``worker-sg`` etcd access 242 8472/udp ingress ``master-sg`` (self) VXLAN overlay 243 8472/udp ingress ``worker-sg`` VXLAN overlay 244 4240/tcp ingress ``master-sg`` (self) health checks 245 4240/tcp ingress ``worker-sg`` health checks 246 ICMP 8/0 ingress ``master-sg`` (self) health checks 247 ICMP 8/0 ingress ``worker-sg`` health checks 248 8472/udp egress ``master-sg`` (self) VXLAN overlay 249 8472/udp egress ``worker-sg`` VXLAN overlay 250 4240/tcp egress ``master-sg`` (self) health checks 251 4240/tcp egress ``worker-sg`` health checks 252 ICMP 8/0 egress ``master-sg`` (self) health checks 253 ICMP 8/0 egress ``worker-sg`` health checks 254 ======================== =============== ==================== =============== 255 256 Worker Nodes (``worker-sg``): 257 258 ======================== =============== ==================== =============== 259 Port Range / Protocol Ingress/Egress Source/Destination Description 260 ======================== =============== ==================== =============== 261 8472/udp ingress ``master-sg`` VXLAN overlay 262 8472/udp ingress ``worker-sg`` (self) VXLAN overlay 263 4240/tcp ingress ``master-sg`` health checks 264 4240/tcp ingress ``worker-sg`` (self) health checks 265 ICMP 8/0 ingress ``master-sg`` health checks 266 ICMP 8/0 ingress ``worker-sg`` (self) health checks 267 8472/udp egress ``master-sg`` VXLAN overlay 268 8472/udp egress ``worker-sg`` (self) VXLAN overlay 269 4240/tcp egress ``master-sg`` health checks 270 4240/tcp egress ``worker-sg`` (self) health checks 271 ICMP 8/0 egress ``master-sg`` health checks 272 ICMP 8/0 egress ``worker-sg`` (self) health checks 273 2379-2380/tcp egress ``master-sg`` etcd access 274 ======================== =============== ==================== =============== 275 276 .. note:: If you use a shared SG for the masters and workers, you can condense 277 these rules into ingress/egress to self. If you are using Direct 278 Routing mode, you can condense all rules into ingress/egress ANY 279 port/protocol to/from self. 280 281 Privileges 282 ========== 283 284 The following privileges are required to run Cilium. When running the standard 285 Kubernetes `DaemonSet`, the privileges are automatically granted to Cilium. 286 287 * Cilium interacts with the Linux kernel to install BPF program which will then 288 perform networking tasks and implement security rules. In order to install 289 BPF programs system-wide, ``CAP_SYS_ADMIN`` privileges are required. These 290 privileges must be granted to ``cilium-agent``. 291 292 The quickest way to meet the requirement is to run ``cilium-agent`` as root 293 and/or as privileged container. 294 295 * Cilium requires access to the host networking namespace. For this purpose, 296 the Cilium pod is scheduled to run in the host networking namespace directly.