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'