Class: Google::Cloud::Container::V1beta1::LinuxNodeConfig

Inherits:
Object
  • Object
show all
Extended by:
Protobuf::MessageExts::ClassMethods
Includes:
Protobuf::MessageExts
Defined in:
proto_docs/google/container/v1beta1/cluster_service.rb

Overview

Parameters that can be configured on Linux nodes.

Defined Under Namespace

Modules: CgroupMode, TransparentHugepageDefrag, TransparentHugepageEnabled Classes: HugepagesConfig, NodeKernelModuleLoading, SwapConfig, SysctlsEntry

Instance Attribute Summary collapse

Instance Attribute Details

#cgroup_mode::Google::Cloud::Container::V1beta1::LinuxNodeConfig::CgroupMode

Returns cgroup_mode specifies the cgroup mode to be used on the node.

Returns:



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# File 'proto_docs/google/container/v1beta1/cluster_service.rb', line 103

class LinuxNodeConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Hugepages amount in both 2m and 1g size
  # @!attribute [rw] hugepage_size2m
  #   @return [::Integer]
  #     Optional. Amount of 2M hugepages
  # @!attribute [rw] hugepage_size1g
  #   @return [::Integer]
  #     Optional. Amount of 1G hugepages
  class HugepagesConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Configuration for swap memory on a node pool.
  # @!attribute [rw] enabled
  #   @return [::Boolean]
  #     Optional. Enables or disables swap for the node pool.
  # @!attribute [rw] encryption_config
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EncryptionConfig]
  #     Optional. If omitted, swap space is encrypted by default.
  # @!attribute [rw] boot_disk_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::BootDiskProfile]
  #     Swap on the node's boot disk.
  #
  #     Note: The following fields are mutually exclusive: `boot_disk_profile`, `ephemeral_local_ssd_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] ephemeral_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EphemeralLocalSsdProfile]
  #     Swap on the local SSD shared with pod ephemeral storage.
  #
  #     Note: The following fields are mutually exclusive: `ephemeral_local_ssd_profile`, `boot_disk_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] dedicated_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::DedicatedLocalSsdProfile]
  #     Provisions a new, separate local NVMe SSD exclusively for swap.
  #
  #     Note: The following fields are mutually exclusive: `dedicated_local_ssd_profile`, `boot_disk_profile`, `ephemeral_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class SwapConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines encryption settings for the swap space.
    # @!attribute [rw] disabled
    #   @return [::Boolean]
    #     Optional. If true, swap space will not be encrypted.
    #     Defaults to false (encrypted).
    class EncryptionConfig
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the node's boot disk.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the boot disk
    #     size.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class BootDiskProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the local SSD shared with pod ephemeral storage.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the ephemeral
    #     local SSD capacity.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class EphemeralLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Provisions a new, separate local NVMe SSD exclusively for swap.
    # @!attribute [rw] disk_count
    #   @return [::Integer]
    #     The number of physical local NVMe SSD disks to attach.
    class DedicatedLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # Configuration for kernel module loading on nodes.
  # @!attribute [rw] policy
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::NodeKernelModuleLoading::Policy]
  #     Set the node module loading policy for nodes in the node pool.
  class NodeKernelModuleLoading
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines the kernel module loading policy for nodes in the nodepool.
    module Policy
      # Default behavior. GKE selects the image based on node type.
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      POLICY_UNSPECIFIED = 0

      # Enforced signature verification: Node pools will use a
      # Container-Optimized OS image configured to allow loading of
      # *Google-signed* external kernel modules.
      # Loadpin is enabled but configured to exclude modules, and kernel
      # module signature checking is enforced.
      ENFORCE_SIGNED_MODULES = 1

      # Mirrors existing DEFAULT behavior:
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      DO_NOT_ENFORCE_SIGNED_MODULES = 2
    end
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class SysctlsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Possible cgroup modes that can be used.
  module CgroupMode
    # CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
    # The default for the GKE node OS image will be used.
    CGROUP_MODE_UNSPECIFIED = 0

    # CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V1 = 1

    # CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V2 = 2
  end

  # Possible values for transparent hugepage enabled support.
  module TransparentHugepageEnabled
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED = 0

    # Transparent hugepage support for anonymous memory is enabled system wide.
    TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS = 1

    # Transparent hugepage support for anonymous memory is enabled inside
    # MADV_HUGEPAGE regions. This is the default kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_MADVISE = 2

    # Transparent hugepage support for anonymous memory is disabled.
    TRANSPARENT_HUGEPAGE_ENABLED_NEVER = 3
  end

  # Possible values for transparent hugepage defrag support.
  module TransparentHugepageDefrag
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED = 0

    # It means that an application requesting THP will stall on allocation
    # failure and directly reclaim pages and compact memory in an effort to
    # allocate a THP immediately.
    TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS = 1

    # It means that an application will wake kswapd in the background to
    # reclaim pages and wake kcompactd to compact memory so that THP is
    # available in the near future. It's the responsibility of khugepaged to
    # then install the THP pages later.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER = 2

    # It means that an application will enter direct reclaim and compaction
    # like always, but only for regions that have used madvise(MADV_HUGEPAGE);
    # all other regions will wake kswapd in the background to reclaim pages and
    # wake kcompactd to compact memory so that THP is available in the near
    # future.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE = 3

    # It means that an application will enter direct reclaim like always but
    # only for regions that are have used madvise(MADV_HUGEPAGE). This is the
    # default kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE = 4

    # It means that an application will never enter direct reclaim or
    # compaction.
    TRANSPARENT_HUGEPAGE_DEFRAG_NEVER = 5
  end
end

#hugepages::Google::Cloud::Container::V1beta1::LinuxNodeConfig::HugepagesConfig

Returns Optional. Amounts for 2M and 1G hugepages.

Returns:



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# File 'proto_docs/google/container/v1beta1/cluster_service.rb', line 103

class LinuxNodeConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Hugepages amount in both 2m and 1g size
  # @!attribute [rw] hugepage_size2m
  #   @return [::Integer]
  #     Optional. Amount of 2M hugepages
  # @!attribute [rw] hugepage_size1g
  #   @return [::Integer]
  #     Optional. Amount of 1G hugepages
  class HugepagesConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Configuration for swap memory on a node pool.
  # @!attribute [rw] enabled
  #   @return [::Boolean]
  #     Optional. Enables or disables swap for the node pool.
  # @!attribute [rw] encryption_config
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EncryptionConfig]
  #     Optional. If omitted, swap space is encrypted by default.
  # @!attribute [rw] boot_disk_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::BootDiskProfile]
  #     Swap on the node's boot disk.
  #
  #     Note: The following fields are mutually exclusive: `boot_disk_profile`, `ephemeral_local_ssd_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] ephemeral_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EphemeralLocalSsdProfile]
  #     Swap on the local SSD shared with pod ephemeral storage.
  #
  #     Note: The following fields are mutually exclusive: `ephemeral_local_ssd_profile`, `boot_disk_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] dedicated_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::DedicatedLocalSsdProfile]
  #     Provisions a new, separate local NVMe SSD exclusively for swap.
  #
  #     Note: The following fields are mutually exclusive: `dedicated_local_ssd_profile`, `boot_disk_profile`, `ephemeral_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class SwapConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines encryption settings for the swap space.
    # @!attribute [rw] disabled
    #   @return [::Boolean]
    #     Optional. If true, swap space will not be encrypted.
    #     Defaults to false (encrypted).
    class EncryptionConfig
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the node's boot disk.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the boot disk
    #     size.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class BootDiskProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the local SSD shared with pod ephemeral storage.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the ephemeral
    #     local SSD capacity.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class EphemeralLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Provisions a new, separate local NVMe SSD exclusively for swap.
    # @!attribute [rw] disk_count
    #   @return [::Integer]
    #     The number of physical local NVMe SSD disks to attach.
    class DedicatedLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # Configuration for kernel module loading on nodes.
  # @!attribute [rw] policy
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::NodeKernelModuleLoading::Policy]
  #     Set the node module loading policy for nodes in the node pool.
  class NodeKernelModuleLoading
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines the kernel module loading policy for nodes in the nodepool.
    module Policy
      # Default behavior. GKE selects the image based on node type.
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      POLICY_UNSPECIFIED = 0

      # Enforced signature verification: Node pools will use a
      # Container-Optimized OS image configured to allow loading of
      # *Google-signed* external kernel modules.
      # Loadpin is enabled but configured to exclude modules, and kernel
      # module signature checking is enforced.
      ENFORCE_SIGNED_MODULES = 1

      # Mirrors existing DEFAULT behavior:
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      DO_NOT_ENFORCE_SIGNED_MODULES = 2
    end
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class SysctlsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Possible cgroup modes that can be used.
  module CgroupMode
    # CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
    # The default for the GKE node OS image will be used.
    CGROUP_MODE_UNSPECIFIED = 0

    # CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V1 = 1

    # CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V2 = 2
  end

  # Possible values for transparent hugepage enabled support.
  module TransparentHugepageEnabled
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED = 0

    # Transparent hugepage support for anonymous memory is enabled system wide.
    TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS = 1

    # Transparent hugepage support for anonymous memory is enabled inside
    # MADV_HUGEPAGE regions. This is the default kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_MADVISE = 2

    # Transparent hugepage support for anonymous memory is disabled.
    TRANSPARENT_HUGEPAGE_ENABLED_NEVER = 3
  end

  # Possible values for transparent hugepage defrag support.
  module TransparentHugepageDefrag
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED = 0

    # It means that an application requesting THP will stall on allocation
    # failure and directly reclaim pages and compact memory in an effort to
    # allocate a THP immediately.
    TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS = 1

    # It means that an application will wake kswapd in the background to
    # reclaim pages and wake kcompactd to compact memory so that THP is
    # available in the near future. It's the responsibility of khugepaged to
    # then install the THP pages later.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER = 2

    # It means that an application will enter direct reclaim and compaction
    # like always, but only for regions that have used madvise(MADV_HUGEPAGE);
    # all other regions will wake kswapd in the background to reclaim pages and
    # wake kcompactd to compact memory so that THP is available in the near
    # future.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE = 3

    # It means that an application will enter direct reclaim like always but
    # only for regions that are have used madvise(MADV_HUGEPAGE). This is the
    # default kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE = 4

    # It means that an application will never enter direct reclaim or
    # compaction.
    TRANSPARENT_HUGEPAGE_DEFRAG_NEVER = 5
  end
end

#node_kernel_module_loading::Google::Cloud::Container::V1beta1::LinuxNodeConfig::NodeKernelModuleLoading

Returns Optional. Configuration for kernel module loading on nodes. When enabled, the node pool will be provisioned with a Container-Optimized OS image that enforces kernel module signature verification.

Returns:



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# File 'proto_docs/google/container/v1beta1/cluster_service.rb', line 103

class LinuxNodeConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Hugepages amount in both 2m and 1g size
  # @!attribute [rw] hugepage_size2m
  #   @return [::Integer]
  #     Optional. Amount of 2M hugepages
  # @!attribute [rw] hugepage_size1g
  #   @return [::Integer]
  #     Optional. Amount of 1G hugepages
  class HugepagesConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Configuration for swap memory on a node pool.
  # @!attribute [rw] enabled
  #   @return [::Boolean]
  #     Optional. Enables or disables swap for the node pool.
  # @!attribute [rw] encryption_config
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EncryptionConfig]
  #     Optional. If omitted, swap space is encrypted by default.
  # @!attribute [rw] boot_disk_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::BootDiskProfile]
  #     Swap on the node's boot disk.
  #
  #     Note: The following fields are mutually exclusive: `boot_disk_profile`, `ephemeral_local_ssd_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] ephemeral_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EphemeralLocalSsdProfile]
  #     Swap on the local SSD shared with pod ephemeral storage.
  #
  #     Note: The following fields are mutually exclusive: `ephemeral_local_ssd_profile`, `boot_disk_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] dedicated_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::DedicatedLocalSsdProfile]
  #     Provisions a new, separate local NVMe SSD exclusively for swap.
  #
  #     Note: The following fields are mutually exclusive: `dedicated_local_ssd_profile`, `boot_disk_profile`, `ephemeral_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class SwapConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines encryption settings for the swap space.
    # @!attribute [rw] disabled
    #   @return [::Boolean]
    #     Optional. If true, swap space will not be encrypted.
    #     Defaults to false (encrypted).
    class EncryptionConfig
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the node's boot disk.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the boot disk
    #     size.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class BootDiskProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the local SSD shared with pod ephemeral storage.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the ephemeral
    #     local SSD capacity.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class EphemeralLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Provisions a new, separate local NVMe SSD exclusively for swap.
    # @!attribute [rw] disk_count
    #   @return [::Integer]
    #     The number of physical local NVMe SSD disks to attach.
    class DedicatedLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # Configuration for kernel module loading on nodes.
  # @!attribute [rw] policy
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::NodeKernelModuleLoading::Policy]
  #     Set the node module loading policy for nodes in the node pool.
  class NodeKernelModuleLoading
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines the kernel module loading policy for nodes in the nodepool.
    module Policy
      # Default behavior. GKE selects the image based on node type.
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      POLICY_UNSPECIFIED = 0

      # Enforced signature verification: Node pools will use a
      # Container-Optimized OS image configured to allow loading of
      # *Google-signed* external kernel modules.
      # Loadpin is enabled but configured to exclude modules, and kernel
      # module signature checking is enforced.
      ENFORCE_SIGNED_MODULES = 1

      # Mirrors existing DEFAULT behavior:
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      DO_NOT_ENFORCE_SIGNED_MODULES = 2
    end
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class SysctlsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Possible cgroup modes that can be used.
  module CgroupMode
    # CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
    # The default for the GKE node OS image will be used.
    CGROUP_MODE_UNSPECIFIED = 0

    # CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V1 = 1

    # CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V2 = 2
  end

  # Possible values for transparent hugepage enabled support.
  module TransparentHugepageEnabled
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED = 0

    # Transparent hugepage support for anonymous memory is enabled system wide.
    TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS = 1

    # Transparent hugepage support for anonymous memory is enabled inside
    # MADV_HUGEPAGE regions. This is the default kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_MADVISE = 2

    # Transparent hugepage support for anonymous memory is disabled.
    TRANSPARENT_HUGEPAGE_ENABLED_NEVER = 3
  end

  # Possible values for transparent hugepage defrag support.
  module TransparentHugepageDefrag
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED = 0

    # It means that an application requesting THP will stall on allocation
    # failure and directly reclaim pages and compact memory in an effort to
    # allocate a THP immediately.
    TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS = 1

    # It means that an application will wake kswapd in the background to
    # reclaim pages and wake kcompactd to compact memory so that THP is
    # available in the near future. It's the responsibility of khugepaged to
    # then install the THP pages later.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER = 2

    # It means that an application will enter direct reclaim and compaction
    # like always, but only for regions that have used madvise(MADV_HUGEPAGE);
    # all other regions will wake kswapd in the background to reclaim pages and
    # wake kcompactd to compact memory so that THP is available in the near
    # future.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE = 3

    # It means that an application will enter direct reclaim like always but
    # only for regions that are have used madvise(MADV_HUGEPAGE). This is the
    # default kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE = 4

    # It means that an application will never enter direct reclaim or
    # compaction.
    TRANSPARENT_HUGEPAGE_DEFRAG_NEVER = 5
  end
end

#swap_config::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig

Returns Optional. Enables and configures swap space on nodes. If omitted, swap is disabled.

Returns:



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# File 'proto_docs/google/container/v1beta1/cluster_service.rb', line 103

class LinuxNodeConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Hugepages amount in both 2m and 1g size
  # @!attribute [rw] hugepage_size2m
  #   @return [::Integer]
  #     Optional. Amount of 2M hugepages
  # @!attribute [rw] hugepage_size1g
  #   @return [::Integer]
  #     Optional. Amount of 1G hugepages
  class HugepagesConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Configuration for swap memory on a node pool.
  # @!attribute [rw] enabled
  #   @return [::Boolean]
  #     Optional. Enables or disables swap for the node pool.
  # @!attribute [rw] encryption_config
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EncryptionConfig]
  #     Optional. If omitted, swap space is encrypted by default.
  # @!attribute [rw] boot_disk_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::BootDiskProfile]
  #     Swap on the node's boot disk.
  #
  #     Note: The following fields are mutually exclusive: `boot_disk_profile`, `ephemeral_local_ssd_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] ephemeral_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EphemeralLocalSsdProfile]
  #     Swap on the local SSD shared with pod ephemeral storage.
  #
  #     Note: The following fields are mutually exclusive: `ephemeral_local_ssd_profile`, `boot_disk_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] dedicated_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::DedicatedLocalSsdProfile]
  #     Provisions a new, separate local NVMe SSD exclusively for swap.
  #
  #     Note: The following fields are mutually exclusive: `dedicated_local_ssd_profile`, `boot_disk_profile`, `ephemeral_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class SwapConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines encryption settings for the swap space.
    # @!attribute [rw] disabled
    #   @return [::Boolean]
    #     Optional. If true, swap space will not be encrypted.
    #     Defaults to false (encrypted).
    class EncryptionConfig
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the node's boot disk.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the boot disk
    #     size.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class BootDiskProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the local SSD shared with pod ephemeral storage.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the ephemeral
    #     local SSD capacity.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class EphemeralLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Provisions a new, separate local NVMe SSD exclusively for swap.
    # @!attribute [rw] disk_count
    #   @return [::Integer]
    #     The number of physical local NVMe SSD disks to attach.
    class DedicatedLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # Configuration for kernel module loading on nodes.
  # @!attribute [rw] policy
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::NodeKernelModuleLoading::Policy]
  #     Set the node module loading policy for nodes in the node pool.
  class NodeKernelModuleLoading
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines the kernel module loading policy for nodes in the nodepool.
    module Policy
      # Default behavior. GKE selects the image based on node type.
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      POLICY_UNSPECIFIED = 0

      # Enforced signature verification: Node pools will use a
      # Container-Optimized OS image configured to allow loading of
      # *Google-signed* external kernel modules.
      # Loadpin is enabled but configured to exclude modules, and kernel
      # module signature checking is enforced.
      ENFORCE_SIGNED_MODULES = 1

      # Mirrors existing DEFAULT behavior:
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      DO_NOT_ENFORCE_SIGNED_MODULES = 2
    end
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class SysctlsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Possible cgroup modes that can be used.
  module CgroupMode
    # CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
    # The default for the GKE node OS image will be used.
    CGROUP_MODE_UNSPECIFIED = 0

    # CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V1 = 1

    # CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V2 = 2
  end

  # Possible values for transparent hugepage enabled support.
  module TransparentHugepageEnabled
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED = 0

    # Transparent hugepage support for anonymous memory is enabled system wide.
    TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS = 1

    # Transparent hugepage support for anonymous memory is enabled inside
    # MADV_HUGEPAGE regions. This is the default kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_MADVISE = 2

    # Transparent hugepage support for anonymous memory is disabled.
    TRANSPARENT_HUGEPAGE_ENABLED_NEVER = 3
  end

  # Possible values for transparent hugepage defrag support.
  module TransparentHugepageDefrag
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED = 0

    # It means that an application requesting THP will stall on allocation
    # failure and directly reclaim pages and compact memory in an effort to
    # allocate a THP immediately.
    TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS = 1

    # It means that an application will wake kswapd in the background to
    # reclaim pages and wake kcompactd to compact memory so that THP is
    # available in the near future. It's the responsibility of khugepaged to
    # then install the THP pages later.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER = 2

    # It means that an application will enter direct reclaim and compaction
    # like always, but only for regions that have used madvise(MADV_HUGEPAGE);
    # all other regions will wake kswapd in the background to reclaim pages and
    # wake kcompactd to compact memory so that THP is available in the near
    # future.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE = 3

    # It means that an application will enter direct reclaim like always but
    # only for regions that are have used madvise(MADV_HUGEPAGE). This is the
    # default kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE = 4

    # It means that an application will never enter direct reclaim or
    # compaction.
    TRANSPARENT_HUGEPAGE_DEFRAG_NEVER = 5
  end
end

#sysctls::Google::Protobuf::Map{::String => ::String}

Returns The Linux kernel parameters to be applied to the nodes and all pods running on the nodes.

The following parameters are supported.

net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.rmem_default net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse net.ipv4.tcp_max_orphans net.netfilter.nf_conntrack_max net.netfilter.nf_conntrack_buckets net.netfilter.nf_conntrack_tcp_timeout_close_wait net.netfilter.nf_conntrack_tcp_timeout_time_wait net.netfilter.nf_conntrack_tcp_timeout_established net.netfilter.nf_conntrack_acct kernel.shmmni kernel.shmmax kernel.shmall fs.aio-max-nr fs.file-max fs.inotify.max_user_instances fs.inotify.max_user_watches fs.nr_open vm.dirty_background_ratio vm.dirty_expire_centisecs vm.dirty_ratio vm.dirty_writeback_centisecs vm.max_map_count vm.overcommit_memory vm.overcommit_ratio vm.vfs_cache_pressure vm.swappiness vm.watermark_scale_factor vm.min_free_kbytes.

Returns:

  • (::Google::Protobuf::Map{::String => ::String})

    The Linux kernel parameters to be applied to the nodes and all pods running on the nodes.

    The following parameters are supported.

    net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.rmem_default net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse net.ipv4.tcp_max_orphans net.netfilter.nf_conntrack_max net.netfilter.nf_conntrack_buckets net.netfilter.nf_conntrack_tcp_timeout_close_wait net.netfilter.nf_conntrack_tcp_timeout_time_wait net.netfilter.nf_conntrack_tcp_timeout_established net.netfilter.nf_conntrack_acct kernel.shmmni kernel.shmmax kernel.shmall fs.aio-max-nr fs.file-max fs.inotify.max_user_instances fs.inotify.max_user_watches fs.nr_open vm.dirty_background_ratio vm.dirty_expire_centisecs vm.dirty_ratio vm.dirty_writeback_centisecs vm.max_map_count vm.overcommit_memory vm.overcommit_ratio vm.vfs_cache_pressure vm.swappiness vm.watermark_scale_factor vm.min_free_kbytes



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# File 'proto_docs/google/container/v1beta1/cluster_service.rb', line 103

class LinuxNodeConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Hugepages amount in both 2m and 1g size
  # @!attribute [rw] hugepage_size2m
  #   @return [::Integer]
  #     Optional. Amount of 2M hugepages
  # @!attribute [rw] hugepage_size1g
  #   @return [::Integer]
  #     Optional. Amount of 1G hugepages
  class HugepagesConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Configuration for swap memory on a node pool.
  # @!attribute [rw] enabled
  #   @return [::Boolean]
  #     Optional. Enables or disables swap for the node pool.
  # @!attribute [rw] encryption_config
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EncryptionConfig]
  #     Optional. If omitted, swap space is encrypted by default.
  # @!attribute [rw] boot_disk_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::BootDiskProfile]
  #     Swap on the node's boot disk.
  #
  #     Note: The following fields are mutually exclusive: `boot_disk_profile`, `ephemeral_local_ssd_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] ephemeral_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EphemeralLocalSsdProfile]
  #     Swap on the local SSD shared with pod ephemeral storage.
  #
  #     Note: The following fields are mutually exclusive: `ephemeral_local_ssd_profile`, `boot_disk_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] dedicated_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::DedicatedLocalSsdProfile]
  #     Provisions a new, separate local NVMe SSD exclusively for swap.
  #
  #     Note: The following fields are mutually exclusive: `dedicated_local_ssd_profile`, `boot_disk_profile`, `ephemeral_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class SwapConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines encryption settings for the swap space.
    # @!attribute [rw] disabled
    #   @return [::Boolean]
    #     Optional. If true, swap space will not be encrypted.
    #     Defaults to false (encrypted).
    class EncryptionConfig
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the node's boot disk.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the boot disk
    #     size.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class BootDiskProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the local SSD shared with pod ephemeral storage.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the ephemeral
    #     local SSD capacity.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class EphemeralLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Provisions a new, separate local NVMe SSD exclusively for swap.
    # @!attribute [rw] disk_count
    #   @return [::Integer]
    #     The number of physical local NVMe SSD disks to attach.
    class DedicatedLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # Configuration for kernel module loading on nodes.
  # @!attribute [rw] policy
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::NodeKernelModuleLoading::Policy]
  #     Set the node module loading policy for nodes in the node pool.
  class NodeKernelModuleLoading
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines the kernel module loading policy for nodes in the nodepool.
    module Policy
      # Default behavior. GKE selects the image based on node type.
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      POLICY_UNSPECIFIED = 0

      # Enforced signature verification: Node pools will use a
      # Container-Optimized OS image configured to allow loading of
      # *Google-signed* external kernel modules.
      # Loadpin is enabled but configured to exclude modules, and kernel
      # module signature checking is enforced.
      ENFORCE_SIGNED_MODULES = 1

      # Mirrors existing DEFAULT behavior:
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      DO_NOT_ENFORCE_SIGNED_MODULES = 2
    end
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class SysctlsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Possible cgroup modes that can be used.
  module CgroupMode
    # CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
    # The default for the GKE node OS image will be used.
    CGROUP_MODE_UNSPECIFIED = 0

    # CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V1 = 1

    # CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V2 = 2
  end

  # Possible values for transparent hugepage enabled support.
  module TransparentHugepageEnabled
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED = 0

    # Transparent hugepage support for anonymous memory is enabled system wide.
    TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS = 1

    # Transparent hugepage support for anonymous memory is enabled inside
    # MADV_HUGEPAGE regions. This is the default kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_MADVISE = 2

    # Transparent hugepage support for anonymous memory is disabled.
    TRANSPARENT_HUGEPAGE_ENABLED_NEVER = 3
  end

  # Possible values for transparent hugepage defrag support.
  module TransparentHugepageDefrag
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED = 0

    # It means that an application requesting THP will stall on allocation
    # failure and directly reclaim pages and compact memory in an effort to
    # allocate a THP immediately.
    TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS = 1

    # It means that an application will wake kswapd in the background to
    # reclaim pages and wake kcompactd to compact memory so that THP is
    # available in the near future. It's the responsibility of khugepaged to
    # then install the THP pages later.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER = 2

    # It means that an application will enter direct reclaim and compaction
    # like always, but only for regions that have used madvise(MADV_HUGEPAGE);
    # all other regions will wake kswapd in the background to reclaim pages and
    # wake kcompactd to compact memory so that THP is available in the near
    # future.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE = 3

    # It means that an application will enter direct reclaim like always but
    # only for regions that are have used madvise(MADV_HUGEPAGE). This is the
    # default kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE = 4

    # It means that an application will never enter direct reclaim or
    # compaction.
    TRANSPARENT_HUGEPAGE_DEFRAG_NEVER = 5
  end
end

#transparent_hugepage_defrag::Google::Cloud::Container::V1beta1::LinuxNodeConfig::TransparentHugepageDefrag

Returns Optional. Defines the transparent hugepage defrag configuration on the node. VM hugepage allocation can be managed by either limiting defragmentation for delayed allocation or skipping it entirely for immediate allocation only.

See https://docs.kernel.org/admin-guide/mm/transhuge.html for more details.

Returns:



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# File 'proto_docs/google/container/v1beta1/cluster_service.rb', line 103

class LinuxNodeConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Hugepages amount in both 2m and 1g size
  # @!attribute [rw] hugepage_size2m
  #   @return [::Integer]
  #     Optional. Amount of 2M hugepages
  # @!attribute [rw] hugepage_size1g
  #   @return [::Integer]
  #     Optional. Amount of 1G hugepages
  class HugepagesConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Configuration for swap memory on a node pool.
  # @!attribute [rw] enabled
  #   @return [::Boolean]
  #     Optional. Enables or disables swap for the node pool.
  # @!attribute [rw] encryption_config
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EncryptionConfig]
  #     Optional. If omitted, swap space is encrypted by default.
  # @!attribute [rw] boot_disk_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::BootDiskProfile]
  #     Swap on the node's boot disk.
  #
  #     Note: The following fields are mutually exclusive: `boot_disk_profile`, `ephemeral_local_ssd_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] ephemeral_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EphemeralLocalSsdProfile]
  #     Swap on the local SSD shared with pod ephemeral storage.
  #
  #     Note: The following fields are mutually exclusive: `ephemeral_local_ssd_profile`, `boot_disk_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] dedicated_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::DedicatedLocalSsdProfile]
  #     Provisions a new, separate local NVMe SSD exclusively for swap.
  #
  #     Note: The following fields are mutually exclusive: `dedicated_local_ssd_profile`, `boot_disk_profile`, `ephemeral_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class SwapConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines encryption settings for the swap space.
    # @!attribute [rw] disabled
    #   @return [::Boolean]
    #     Optional. If true, swap space will not be encrypted.
    #     Defaults to false (encrypted).
    class EncryptionConfig
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the node's boot disk.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the boot disk
    #     size.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class BootDiskProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the local SSD shared with pod ephemeral storage.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the ephemeral
    #     local SSD capacity.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class EphemeralLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Provisions a new, separate local NVMe SSD exclusively for swap.
    # @!attribute [rw] disk_count
    #   @return [::Integer]
    #     The number of physical local NVMe SSD disks to attach.
    class DedicatedLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # Configuration for kernel module loading on nodes.
  # @!attribute [rw] policy
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::NodeKernelModuleLoading::Policy]
  #     Set the node module loading policy for nodes in the node pool.
  class NodeKernelModuleLoading
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines the kernel module loading policy for nodes in the nodepool.
    module Policy
      # Default behavior. GKE selects the image based on node type.
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      POLICY_UNSPECIFIED = 0

      # Enforced signature verification: Node pools will use a
      # Container-Optimized OS image configured to allow loading of
      # *Google-signed* external kernel modules.
      # Loadpin is enabled but configured to exclude modules, and kernel
      # module signature checking is enforced.
      ENFORCE_SIGNED_MODULES = 1

      # Mirrors existing DEFAULT behavior:
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      DO_NOT_ENFORCE_SIGNED_MODULES = 2
    end
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class SysctlsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Possible cgroup modes that can be used.
  module CgroupMode
    # CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
    # The default for the GKE node OS image will be used.
    CGROUP_MODE_UNSPECIFIED = 0

    # CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V1 = 1

    # CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V2 = 2
  end

  # Possible values for transparent hugepage enabled support.
  module TransparentHugepageEnabled
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED = 0

    # Transparent hugepage support for anonymous memory is enabled system wide.
    TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS = 1

    # Transparent hugepage support for anonymous memory is enabled inside
    # MADV_HUGEPAGE regions. This is the default kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_MADVISE = 2

    # Transparent hugepage support for anonymous memory is disabled.
    TRANSPARENT_HUGEPAGE_ENABLED_NEVER = 3
  end

  # Possible values for transparent hugepage defrag support.
  module TransparentHugepageDefrag
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED = 0

    # It means that an application requesting THP will stall on allocation
    # failure and directly reclaim pages and compact memory in an effort to
    # allocate a THP immediately.
    TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS = 1

    # It means that an application will wake kswapd in the background to
    # reclaim pages and wake kcompactd to compact memory so that THP is
    # available in the near future. It's the responsibility of khugepaged to
    # then install the THP pages later.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER = 2

    # It means that an application will enter direct reclaim and compaction
    # like always, but only for regions that have used madvise(MADV_HUGEPAGE);
    # all other regions will wake kswapd in the background to reclaim pages and
    # wake kcompactd to compact memory so that THP is available in the near
    # future.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE = 3

    # It means that an application will enter direct reclaim like always but
    # only for regions that are have used madvise(MADV_HUGEPAGE). This is the
    # default kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE = 4

    # It means that an application will never enter direct reclaim or
    # compaction.
    TRANSPARENT_HUGEPAGE_DEFRAG_NEVER = 5
  end
end

#transparent_hugepage_enabled::Google::Cloud::Container::V1beta1::LinuxNodeConfig::TransparentHugepageEnabled

Returns Optional. Transparent hugepage support for anonymous memory can be entirely disabled (mostly for debugging purposes) or only enabled inside MADV_HUGEPAGE regions (to avoid the risk of consuming more memory resources) or enabled system wide.

See https://docs.kernel.org/admin-guide/mm/transhuge.html for more details.

Returns:



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# File 'proto_docs/google/container/v1beta1/cluster_service.rb', line 103

class LinuxNodeConfig
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # Hugepages amount in both 2m and 1g size
  # @!attribute [rw] hugepage_size2m
  #   @return [::Integer]
  #     Optional. Amount of 2M hugepages
  # @!attribute [rw] hugepage_size1g
  #   @return [::Integer]
  #     Optional. Amount of 1G hugepages
  class HugepagesConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Configuration for swap memory on a node pool.
  # @!attribute [rw] enabled
  #   @return [::Boolean]
  #     Optional. Enables or disables swap for the node pool.
  # @!attribute [rw] encryption_config
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EncryptionConfig]
  #     Optional. If omitted, swap space is encrypted by default.
  # @!attribute [rw] boot_disk_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::BootDiskProfile]
  #     Swap on the node's boot disk.
  #
  #     Note: The following fields are mutually exclusive: `boot_disk_profile`, `ephemeral_local_ssd_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] ephemeral_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::EphemeralLocalSsdProfile]
  #     Swap on the local SSD shared with pod ephemeral storage.
  #
  #     Note: The following fields are mutually exclusive: `ephemeral_local_ssd_profile`, `boot_disk_profile`, `dedicated_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  # @!attribute [rw] dedicated_local_ssd_profile
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::SwapConfig::DedicatedLocalSsdProfile]
  #     Provisions a new, separate local NVMe SSD exclusively for swap.
  #
  #     Note: The following fields are mutually exclusive: `dedicated_local_ssd_profile`, `boot_disk_profile`, `ephemeral_local_ssd_profile`. If a field in that set is populated, all other fields in the set will automatically be cleared.
  class SwapConfig
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines encryption settings for the swap space.
    # @!attribute [rw] disabled
    #   @return [::Boolean]
    #     Optional. If true, swap space will not be encrypted.
    #     Defaults to false (encrypted).
    class EncryptionConfig
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the node's boot disk.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the boot disk
    #     size.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class BootDiskProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Swap on the local SSD shared with pod ephemeral storage.
    # @!attribute [rw] swap_size_gib
    #   @return [::Integer]
    #     Specifies the size of the swap space in gibibytes (GiB).
    #
    #     Note: The following fields are mutually exclusive: `swap_size_gib`, `swap_size_percent`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    # @!attribute [rw] swap_size_percent
    #   @return [::Integer]
    #     Specifies the size of the swap space as a percentage of the ephemeral
    #     local SSD capacity.
    #
    #     Note: The following fields are mutually exclusive: `swap_size_percent`, `swap_size_gib`. If a field in that set is populated, all other fields in the set will automatically be cleared.
    class EphemeralLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Provisions a new, separate local NVMe SSD exclusively for swap.
    # @!attribute [rw] disk_count
    #   @return [::Integer]
    #     The number of physical local NVMe SSD disks to attach.
    class DedicatedLocalSsdProfile
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end

  # Configuration for kernel module loading on nodes.
  # @!attribute [rw] policy
  #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::NodeKernelModuleLoading::Policy]
  #     Set the node module loading policy for nodes in the node pool.
  class NodeKernelModuleLoading
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods

    # Defines the kernel module loading policy for nodes in the nodepool.
    module Policy
      # Default behavior. GKE selects the image based on node type.
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      POLICY_UNSPECIFIED = 0

      # Enforced signature verification: Node pools will use a
      # Container-Optimized OS image configured to allow loading of
      # *Google-signed* external kernel modules.
      # Loadpin is enabled but configured to exclude modules, and kernel
      # module signature checking is enforced.
      ENFORCE_SIGNED_MODULES = 1

      # Mirrors existing DEFAULT behavior:
      # For CPU and TPU nodes, the image will not allow loading external
      # kernel modules.
      # For GPU nodes, the image will allow loading any module, whether it
      # is signed or not.
      DO_NOT_ENFORCE_SIGNED_MODULES = 2
    end
  end

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class SysctlsEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Possible cgroup modes that can be used.
  module CgroupMode
    # CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
    # The default for the GKE node OS image will be used.
    CGROUP_MODE_UNSPECIFIED = 0

    # CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V1 = 1

    # CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
    # the node image.
    CGROUP_MODE_V2 = 2
  end

  # Possible values for transparent hugepage enabled support.
  module TransparentHugepageEnabled
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED = 0

    # Transparent hugepage support for anonymous memory is enabled system wide.
    TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS = 1

    # Transparent hugepage support for anonymous memory is enabled inside
    # MADV_HUGEPAGE regions. This is the default kernel configuration.
    TRANSPARENT_HUGEPAGE_ENABLED_MADVISE = 2

    # Transparent hugepage support for anonymous memory is disabled.
    TRANSPARENT_HUGEPAGE_ENABLED_NEVER = 3
  end

  # Possible values for transparent hugepage defrag support.
  module TransparentHugepageDefrag
    # Default value. GKE will not modify the kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED = 0

    # It means that an application requesting THP will stall on allocation
    # failure and directly reclaim pages and compact memory in an effort to
    # allocate a THP immediately.
    TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS = 1

    # It means that an application will wake kswapd in the background to
    # reclaim pages and wake kcompactd to compact memory so that THP is
    # available in the near future. It's the responsibility of khugepaged to
    # then install the THP pages later.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER = 2

    # It means that an application will enter direct reclaim and compaction
    # like always, but only for regions that have used madvise(MADV_HUGEPAGE);
    # all other regions will wake kswapd in the background to reclaim pages and
    # wake kcompactd to compact memory so that THP is available in the near
    # future.
    TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE = 3

    # It means that an application will enter direct reclaim like always but
    # only for regions that are have used madvise(MADV_HUGEPAGE). This is the
    # default kernel configuration.
    TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE = 4

    # It means that an application will never enter direct reclaim or
    # compaction.
    TRANSPARENT_HUGEPAGE_DEFRAG_NEVER = 5
  end
end