k8s.io/kubernetes@v1.29.3/test/e2e_node/system/specs/gke.yaml (about) 1 # This is the system spec that must be satisfied by the images running on GKE. 2 3 os: Linux 4 5 kernelSpec: 6 versions: 7 # GKE requires kernel version 4.4+. 8 - '4\.[4-9].*' 9 - '4\.[1-9][0-9].*' 10 - '[5-9].*' 11 12 # Required kernel configurations -- the configuration must be set to "y" or 13 # "m". 14 required: 15 # The configurations required by virtual machine or cloud provider. 16 17 - name: BOOTPARAM_HARDLOCKUP_PANIC 18 description: 'Enable the kernel to panic on "hard lockups".' 19 - name: BOOTPARAM_SOFTLOCKUP_PANIC 20 description: 'Enable the kernel to panic on "soft lockups".' 21 - name: PANIC_ON_OOPS 22 description: 'Enable the kernel to panic when it oops.' 23 - name: PVPANIC 24 description: 'Enable the VM (guest) to communicate panic events with the 25 host.' 26 - name: DMIID 27 description: 'Make sure /sys/class/dmi is exported - cAdvisor currently 28 uses this to determine which the cloud provider it is: aws, azure, or 29 gce, etc' 30 - name: ACPI_BUTTON 31 description: 'Enable the software-controlled power management, and required 32 by reset or stop button of GCE console.' 33 34 # The configurations required by network. 35 36 - name: INET 37 description: 'Enable TCP/IP networking.' 38 - name: VXLAN 39 description: 'Required by the overlay networking in Kubernetes.' 40 - name: IP_SET 41 description: 'Required by Kubernetes network policy.' 42 - name: IP_SET_HASH_IP 43 description: 'This introduces hash:ip set type support, which is required 44 by Kubernetes Calico networking.' 45 - name: IPVLAN 46 description: 'Required by IPVLAN feature.' 47 - name: IPV6 48 description: 'Required by IPVLAN feature.' 49 - name: IP6_NF_IPTABLES 50 description: 'Required by kube-proxy.' 51 - name: IP_NF_TARGET_REDIRECT 52 aliases: 53 - NETFILTER_XT_TARGET_REDIRECT 54 description: 'Enabled REDIRECT: all incoming connections are mapped onto 55 the incoming interface''s address, causing the packets to come to the 56 local machine instead of passing through. This is required by 57 kube-proxy.' 58 - name: NETFILTER_XT_MATCH_COMMENT 59 description: 'This option adds a "comment" dummy-match, which allows you to 60 put comments in your iptables ruleset. Today''s kube-proxy implementation 61 depends on this feature.' 62 # This is not critical, but debian-based container-vm kernel module study 63 # shows that many customers' nodes have loaded those kernel modules. We 64 # suspect sysdig module depends on these set of kernel modules for 65 # monitoring. 66 - name: PACKET_DIAG 67 description: 'Required by ss (similar to netstat) tools to display Linux 68 TCP / UDP network and socket information.' 69 - name: UNIX_DIAG 70 description: 'Required by ss (similar to netstat) tools to display Linux 71 TCP / UDP network and socket information.' 72 - name: INET_DIAG 73 description: 'Required by ss (similar to netstat) tools to display Linux 74 TCP / UDP network and socket information.' 75 - name: INET_TCP_DIAG 76 description: 'Required by ss (similar to netstat) tools to display Linux 77 TCP / UDP network and socket information.' 78 - name: INET_UDP_DIAG 79 description: 'Required by ss (similar to netstat) tools to display Linux 80 TCP / UDP network and socket information.' 81 - name: NETLINK_DIAG 82 description: 'Required by ss (similar to netstat) tools to display Linux 83 TCP / UDP network and socket information.' 84 85 # The configurations are required by filesystem. 86 87 - name: EXT4_FS 88 - name: DEBUG_FS 89 - name: PROC_FS 90 - name: XFS_FS 91 - name: SCSI_PROC_FS 92 # Currently Kubelet supports three docker graph drivers: overlay, aufs, and 93 # devicemapper due to the legacy reason. But for GKE, we plan to only support 94 # overlayfs. 95 - name: OVERLAY_FS 96 description: 'Enable OverlayFS, which will be the only docker graph driver 97 supported on GKE.' 98 - name: NFS_FS 99 description: 'Required by NFS support.' 100 - name: AUTOFS4_FS 101 description: 'Required by NFS support.' 102 - name: NFS_FSCACHE 103 description: 'Required by NFS support.' 104 - name: FSCACHE 105 description: 'Required by NFS support.' 106 - name: CACHEFILES 107 description: 'Required by NFS support.' 108 - name: FUSE_FS 109 description: 'Required by GlusterFS support.' 110 - name: BCACHE 111 # TODO(yguo0905): Add a description for BCACHE. 112 113 # The configuration required by the resource isolation, accounting, and 114 # management. 115 116 - name: NAMESPACES 117 description: 'Required by kubelet and docker. Enabling it allows the 118 processes within a pod or a container to have their own view of the 119 system.' 120 - name: IPC_NS 121 description: 'Required by kubelet and docker. Enabling it allows the 122 processes within a pod or a container to have their own view of the 123 system.' 124 - name: NET_NS 125 description: 'Required by kubelet and docker. Enabling it allows the 126 processes within a pod or a container to have their own view of the 127 system.' 128 - name: PID_NS 129 description: 'Required by kubelet and docker. Enabling it allows the 130 processes within a pod or a container to have their own view of the 131 system.' 132 - name: UTS_NS 133 description: 'Required by kubelet and docker. Enabling it allows the 134 processes within a pod or a container to have their own view of the 135 system.' 136 - name: CGROUPS 137 description: 'Required by kubelet and docker. The resource usage of the 138 processes within a pod or a container can be monitored, accounted, and 139 controlled.' 140 - name: CGROUP_CPUACCT 141 description: 'Required by kubelet and docker. The resource usage of the 142 processes within a pod or a container can be monitored, accounted, and 143 controlled.' 144 - name: CGROUP_DEVICE 145 description: 'Required by kubelet and docker. The resource usage of the 146 processes within a pod or a container can be monitored, accounted, and 147 controlled.' 148 - name: CGROUP_SCHED 149 description: 'Required by kubelet and docker. The resource usage of the 150 processes within a pod or a container can be monitored, accounted, and 151 controlled.' 152 - name: CPUSETS 153 description: 'Required by kubelet and docker. The resource usage of the 154 processes within a pod or a container can be monitored, accounted, and 155 controlled.' 156 - name: MEMCG 157 description: 'Required by kubelet and docker. The resource usage of the 158 processes within a pod or a container can be monitored, accounted, and 159 controlled.' 160 - name: QUOTA 161 description: 'Required by kubelet to have an accurate and efficient disk 162 space and inode accounting, and eventually to limit the usage.' 163 164 # The security-related configurations 165 166 - name: SECCOMP 167 description: 'Enabled the SECCOMP application API.' 168 - name: SECURITY_APPARMOR 169 description: 'Enable for AppArmor support.' 170 - name: CC_STACKPROTECTOR_STRONG # Linux kernel <= 4.17 171 aliases: 172 - CC_STACKPROTECTOR_REGULAR # Linux kernel <= 4.17 173 - CC_STACKPROTECTOR_ALL # Linux kernel <= 4.17 174 - STACKPROTECTOR_STRONG # Linux kernel >= 4.18 175 description: 'Add the stack buffer overflow protections.' 176 - name: STRICT_DEVMEM 177 description: 'Required for blocking the direct physical memory access.' 178 - name: IMA 179 description: 'Required for security-related logging and auditing.' 180 - name: AUDIT 181 description: 'Required for security-related logging and auditing.' 182 - name: AUDITSYSCALL 183 description: 'Required for security-related logging and auditing.' 184 185 # Misc. configurations 186 187 - name: MODULES 188 description: 'Required for loadable module support.' 189 - name: PRINTK 190 description: 'Required for kernel logging message.' 191 - name: MMU 192 description: 'Required for memory management hardware and mmap() system 193 call.' 194 195 packageSpecs: 196 - name: apparmor 197 versionRange: '>=2.10.1' 198 - name: apparmor-profiles 199 versionRange: '>=2.10.1' 200 - name: audit 201 versionRange: '>=2.5.0' 202 - name: autofs 203 versionRange: '>=5.0.7' 204 - name: bash 205 versionRange: '>=4.3' 206 - name: bridge-utils 207 versionRange: '>=1.5' 208 - name: cloud-init 209 versionRange: '>=0.7.6' 210 - name: coreutils 211 versionRange: '>=8.24' 212 - name: dbus 213 versionRange: '>=1.6.8' 214 - name: e2fsprogs 215 versionRange: '>=1.4.3' 216 - name: ebtables 217 versionRange: '>=2.0.10' 218 - name: ethtool 219 versionRange: '>=3.18' 220 - name: iproute2 221 versionRange: '>=4.2.0' 222 - name: less 223 versionRange: '>=481' 224 - name: netcat-openbsd 225 versionRange: '>=1.10' 226 - name: python 227 versionRange: '>=2.7.10' 228 - name: pv 229 versionRange: '>=1.3.4' 230 - name: sudo 231 versionRange: '>=1.8.12' 232 - name: systemd 233 versionRange: '>=225' 234 - name: tar 235 versionRange: '>=1.28' 236 - name: util-linux 237 versionRange: '>=2.27.1' 238 - name: wget 239 versionRange: '>=1.18' 240 - name: gce-compute-image-packages 241 versionRange: '>=20170227' 242 # TODO(yguo0905): Figure out whether watchdog is required. 243 244 # packageSpecOverrides contains the OS distro specific package requirements. 245 packageSpecOverrides: 246 # The following overrides apply to all Ubuntu images. 247 - osDistro: ubuntu 248 subtractions: 249 - name: apparmor-profiles 250 description: 'On Ubuntu the apparmor profiles are shipped with individual 251 application package, so the "apparmor-profiles" package is not required.' 252 - name: audit 253 description: 'On Ubuntu the equivalent package is called "auditd", so the 254 "audit" package is not required and "auditd" exists in the additions.' 255 - name: wget 256 description: 'The Ubuntu 1604-xenial image includes wget 1.17.1, which does 257 not satisfy the spec (>=1.18), but meets the functionality requirements. 258 Therefore, it is removed from the base spec. See wget in the additions.' 259 additions: 260 - name: auditd 261 versionRange: '>=2.4.5' 262 description: 'auditd 2.4.5 currently satisfies the requirements because the 263 GKE features that require auditd 2.5 are not yet available.' 264 - name: grub-common 265 versionRange: '>=2.2' 266 description: 'grub is the bootloader on Ubuntu.' 267 - name: wget 268 versionRange: '>=1.17.1' 269 description: 'wget 1.17.1 satisfies the functionality requirements but does 270 not meet the spec, which is fine'