gke.yaml 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  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. alias:
  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
  159. alias:
  160. - CONFIG_CC_STACKPROTECTOR_REGULAR
  161. CONFIG_CC_STACKPROTECTOR_ALL
  162. description: 'Add the stack buffer overflow protections.'
  163. - name: STRICT_DEVMEM
  164. description: 'Required for blocking the direct physical memory access.'
  165. - name: IMA
  166. description: 'Required for security-related logging and auditing.'
  167. - name: AUDIT
  168. description: 'Required for security-related logging and auditing.'
  169. - name: AUDITSYSCALL
  170. description: 'Required for security-related logging and auditing.'
  171. # Misc. configurations
  172. - name: MODULES
  173. description: 'Required for loadable module support.'
  174. - name: PRINTK
  175. description: 'Required for kernel logging message.'
  176. - name: MMU
  177. description: 'Required for memory management hardware and mmap() system
  178. call.'
  179. packageSpecs:
  180. - name: apparmor
  181. versionRange: '>=2.10.1'
  182. - name: apparmor-profiles
  183. versionRange: '>=2.10.1'
  184. - name: audit
  185. versionRange: '>=2.5.0'
  186. - name: autofs
  187. versionRange: '>=5.0.7'
  188. - name: bash
  189. versionRange: '>=4.3'
  190. - name: bridge-utils
  191. versionRange: '>=1.5'
  192. - name: cloud-init
  193. versionRange: '>=0.7.6'
  194. - name: coreutils
  195. versionRange: '>=8.24'
  196. - name: dbus
  197. versionRange: '>=1.6.8'
  198. - name: e2fsprogs
  199. versionRange: '>=1.4.3'
  200. - name: ebtables
  201. versionRange: '>=2.0.10'
  202. - name: ethtool
  203. versionRange: '>=3.18'
  204. - name: iproute2
  205. versionRange: '>=4.2.0'
  206. - name: less
  207. versionRange: '>=481'
  208. - name: netcat-openbsd
  209. versionRange: '>=1.10'
  210. - name: python
  211. versionRange: '>=2.7.10'
  212. - name: pv
  213. versionRange: '>=1.3.4'
  214. - name: sudo
  215. versionRange: '>=1.8.12'
  216. - name: systemd
  217. versionRange: '>=225'
  218. - name: tar
  219. versionRange: '>=1.28'
  220. - name: util-linux
  221. versionRange: '>=2.27.1'
  222. - name: wget
  223. versionRange: '>=1.18'
  224. - name: gce-compute-image-packages
  225. versionRange: '>=20170227'
  226. # TODO(yguo0905): Figure out whether watchdog is required.
  227. # packageSpecOverrides contains the OS distro specific package requirements.
  228. packageSpecOverrides:
  229. # The following overrides apply to all Ubuntu images.
  230. - osDistro: ubuntu
  231. subtractions:
  232. - name: apparmor-profiles
  233. description: 'On Ubuntu the apparmor profiles are shipped with individual
  234. application package, so the "apparmor-profiles" package is not required.'
  235. - name: audit
  236. description: 'On Ubuntu the equivalent package is called "auditd", so the
  237. "audit" package is not required and "auditd" exists in the additions.'
  238. - name: wget
  239. description: 'The Ubuntu 1604-xenial image includes wget 1.17.1, which does
  240. not satisfy the spec (>=1.18), but meets the functionality requirements.
  241. Therefore, it is removed from the base spec. See wget in the additions.'
  242. additions:
  243. - name: auditd
  244. versionRange: '>=2.4.5'
  245. description: 'auditd 2.4.5 currently satisfies the requirements because the
  246. GKE features that require auditd 2.5 are not yet available.'
  247. - name: grub-common
  248. versionRange: '>=2.2'
  249. description: 'grub is the bootloader on Ubuntu.'
  250. - name: wget
  251. versionRange: '>=1.17.1'
  252. description: 'wget 1.17.1 satisfies the functionality requirements but does
  253. not meet the spec, which is fine'