// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.AliCloud.CS.Outputs
{

    [OutputType]
    public sealed class NodePoolKubeletConfiguration
    {
        /// <summary>
        /// Same as cpuManagerPolicy. The name of the policy to use. Requires the CPUManager feature gate to be enabled. Valid value is `none` or `static`.
        /// </summary>
        public readonly string? CpuManagerPolicy;
        /// <summary>
        /// Same as eventBurst. The maximum size of a burst of event creations, temporarily allows event creations to burst to this number, while still not exceeding `event_record_qps`. It is only used when `event_record_qps` is greater than 0. Valid value is `[0-100]`.
        /// </summary>
        public readonly string? EventBurst;
        /// <summary>
        /// Same as eventRecordQPS. The maximum event creations per second. If 0, there is no limit enforced. Valid value is `[0-50]`.
        /// </summary>
        public readonly string? EventRecordQps;
        /// <summary>
        /// Same as evictionHard. The map of signal names to quantities that defines hard eviction thresholds. For example: `{"memory.available" = "300Mi"}`.
        /// </summary>
        public readonly ImmutableDictionary<string, object>? EvictionHard;
        /// <summary>
        /// Same as evictionSoft. The map of signal names to quantities that defines soft eviction thresholds. For example: `{"memory.available" = "300Mi"}`.
        /// </summary>
        public readonly ImmutableDictionary<string, object>? EvictionSoft;
        /// <summary>
        /// Same as evictionSoftGracePeriod. The map of signal names to quantities that defines grace periods for each soft eviction signal. For example: `{"memory.available" = "30s"}`.
        /// </summary>
        public readonly ImmutableDictionary<string, object>? EvictionSoftGracePeriod;
        /// <summary>
        /// Same as kubeAPIBurst. The burst to allow while talking with kubernetes api-server. Valid value is `[0-100]`.
        /// </summary>
        public readonly string? KubeApiBurst;
        /// <summary>
        /// Same as kubeAPIQPS. The QPS to use while talking with kubernetes api-server. Valid value is `[0-50]`.
        /// </summary>
        public readonly string? KubeApiQps;
        /// <summary>
        /// Same as kubeReserved. The set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) pairs that describe resources reserved for kubernetes system components. Currently, cpu, memory and local storage for root file system are supported. See [compute resources](http://kubernetes.io/docs/user-guide/compute-resources) for more details.
        /// </summary>
        public readonly ImmutableDictionary<string, object>? KubeReserved;
        /// <summary>
        /// Same as registryBurst. The maximum size of burst pulls, temporarily allows pulls to burst to this number, while still not exceeding `registry_pull_qps`. Only used if `registry_pull_qps` is greater than 0. Valid value is `[0-100]`.
        /// </summary>
        public readonly string? RegistryBurst;
        /// <summary>
        /// Same as registryPullQPS. The limit of registry pulls per second. Setting it to `0` means no limit. Valid value is `[0-50]`.
        /// </summary>
        public readonly string? RegistryPullQps;
        /// <summary>
        /// Same as serializeImagePulls. When enabled, it tells the Kubelet to pull images one at a time. We recommend not changing the default value on nodes that run docker daemon with version &lt; 1.9 or an Aufs storage backend. Valid value is `true` or `false`.
        /// </summary>
        public readonly string? SerializeImagePulls;
        /// <summary>
        /// Same as systemReserved. The set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) pairs that describe resources reserved for non-kubernetes components. Currently, only cpu and memory are supported. See [compute resources](http://kubernetes.io/docs/user-guide/compute-resources) for more details.
        /// </summary>
        public readonly ImmutableDictionary<string, object>? SystemReserved;

        [OutputConstructor]
        private NodePoolKubeletConfiguration(
            string? cpuManagerPolicy,

            string? eventBurst,

            string? eventRecordQps,

            ImmutableDictionary<string, object>? evictionHard,

            ImmutableDictionary<string, object>? evictionSoft,

            ImmutableDictionary<string, object>? evictionSoftGracePeriod,

            string? kubeApiBurst,

            string? kubeApiQps,

            ImmutableDictionary<string, object>? kubeReserved,

            string? registryBurst,

            string? registryPullQps,

            string? serializeImagePulls,

            ImmutableDictionary<string, object>? systemReserved)
        {
            CpuManagerPolicy = cpuManagerPolicy;
            EventBurst = eventBurst;
            EventRecordQps = eventRecordQps;
            EvictionHard = evictionHard;
            EvictionSoft = evictionSoft;
            EvictionSoftGracePeriod = evictionSoftGracePeriod;
            KubeApiBurst = kubeApiBurst;
            KubeApiQps = kubeApiQps;
            KubeReserved = kubeReserved;
            RegistryBurst = registryBurst;
            RegistryPullQps = registryPullQps;
            SerializeImagePulls = serializeImagePulls;
            SystemReserved = systemReserved;
        }
    }
}
