gke.yaml 9.8 KB

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