Enable cloudprovider rate limit / backoff features (#892)

* acs-engine configs for backoff

* errata

* large cluster support in 1.6.6 only at this point

* add custom data vars to master as well

* updated templates.go

* kube-controller-manager var substitution is unique

* updated generated template

* moving large cluster to examples/largeclusters

* working pool names for large cluster example
This commit is contained in:
Jack Francis 2017-07-06 14:04:50 -07:00 коммит произвёл GitHub
Родитель 24a478e202
Коммит 0330677c0d
12 изменённых файлов: 220 добавлений и 70 удалений

Просмотреть файл

@ -2,84 +2,43 @@
"apiVersion": "vlabs",
"properties": {
"orchestratorProfile": {
"orchestratorType": "Kubernetes"
"orchestratorType": "Kubernetes",
"orchestratorVersion": "1.6.6"
},
"masterProfile": {
"count": 1,
"dnsPrefix": "",
"vmSize": "Standard_D2_v2"
"vmSize": "Standard_D5_v2"
},
"agentPoolProfiles": [
{
"name": "agentpool1",
"count": 100,
"vmSize": "Standard_D2_v2",
"name": "pool1",
"count": 20,
"vmSize": "Standard_D3_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool2",
"count": 100,
"vmSize": "Standard_D2_v2",
"name": "pool2",
"count": 20,
"vmSize": "Standard_D3_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool3",
"count": 100,
"vmSize": "Standard_D2_v2",
"name": "pool3",
"count": 20,
"vmSize": "Standard_D3_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool4",
"count": 100,
"vmSize": "Standard_D2_v2",
"name": "pool4",
"count": 20,
"vmSize": "Standard_D3_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool5",
"count": 100,
"vmSize": "Standard_D2_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool6",
"count": 100,
"vmSize": "Standard_D2_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool7",
"count": 100,
"vmSize": "Standard_D2_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool8",
"count": 100,
"vmSize": "Standard_D2_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool9",
"count": 100,
"vmSize": "Standard_D2_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool10",
"count": 100,
"vmSize": "Standard_D2_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool11",
"count": 100,
"vmSize": "Standard_D2_v2",
"availabilityProfile": "AvailabilitySet"
},
{
"name": "agentpool12",
"count": 100,
"vmSize": "Standard_D2_v2",
"name": "pool5",
"count": 20,
"vmSize": "Standard_D3_v2",
"availabilityProfile": "AvailabilitySet"
}
],

Просмотреть файл

@ -109,6 +109,10 @@ write_files:
KUBELET_REGISTER_SCHEDULABLE=true
KUBELET_NODE_LABELS={{ GetKubernetesLabels . }}
KUBELET_POD_INFRA_CONTAINER_IMAGE={{WrapAsVariable "kubernetesPodInfraContainerSpec"}}
KUBELET_NODE_STATUS_UPDATE_FREQUENCY={{WrapAsVariable "kubernetesNodeStatusUpdateFrequency"}}
KUBE_CTRL_MGR_NODE_MONITOR_GRACE_PERIOD={{WrapAsVariable "kubernetesCtrlMgrNodeMonitorGracePeriod"}}
KUBE_CTRL_MGR_POD_EVICTION_TIMEOUT={{WrapAsVariable "kubernetesCtrlMgrPodEvictionTimeout"}}
KUBE_CTRL_MGR_ROUTE_RECONCILIATION_PERIOD={{WrapAsVariable "kubernetesCtrlMgrRouteReconciliationPeriod"}}
{{if IsKubernetesVersionGe "1.6.0"}}
KUBELET_FEATURE_GATES=--feature-gates=Accelerators=true
{{end}}

Просмотреть файл

@ -45,6 +45,7 @@ ExecStart=/usr/bin/docker run \
--azure-container-registry-config=/etc/kubernetes/azure.json \
--hairpin-mode=promiscuous-bridge \
--network-plugin=${KUBELET_NETWORK_PLUGIN} \
--node-status-update-frequency=${KUBELET_NODE_STATUS_UPDATE_FREQUENCY} \
--v=2 ${KUBELET_FEATURE_GATES}
[Install]

Просмотреть файл

@ -24,6 +24,9 @@ spec:
- "--service-account-private-key-file=/etc/kubernetes/certs/apiserver.key"
- "--leader-elect=true"
- "--v=2"
- "--node-monitor-grace-period=<kubernetesCtrlMgrNodeMonitorGracePeriod>"
- "--pod-eviction-timeout=<kubernetesCtrlMgrPodEvictionTimeout>"
- "--route-reconciliation-period=<kubernetesCtrlMgrRouteReconciliationPeriod>"
volumeMounts:
- name: "etc-kubernetes"
mountPath: "/etc/kubernetes"

Просмотреть файл

@ -213,6 +213,10 @@ write_files:
KUBELET_REGISTER_SCHEDULABLE={{WrapAsVariable "registerSchedulable"}}
KUBELET_NODE_LABELS=role=master
KUBELET_POD_INFRA_CONTAINER_IMAGE={{WrapAsVariable "kubernetesPodInfraContainerSpec"}}
KUBELET_NODE_STATUS_UPDATE_FREQUENCY={{WrapAsVariable "kubernetesNodeStatusUpdateFrequency"}}
KUBE_CTRL_MGR_NODE_MONITOR_GRACE_PERIOD={{WrapAsVariable "kubernetesCtrlMgrNodeMonitorGracePeriod"}}
KUBE_CTRL_MGR_POD_EVICTION_TIMEOUT={{WrapAsVariable "kubernetesCtrlMgrPodEvictionTimeout"}}
KUBE_CTRL_MGR_ROUTE_RECONCILIATION_PERIOD={{WrapAsVariable "kubernetesCtrlMgrRouteReconciliationPeriod"}}
- path: "/etc/systemd/system/kubelet.service"
permissions: "0644"
@ -237,7 +241,7 @@ write_files:
sed -i "s|<kubernetesAddonManagerSpec>|{{WrapAsVariable "kubernetesAddonManagerSpec"}}|g" "/etc/kubernetes/manifests/kube-addon-manager.yaml"
sed -i "s|<kubernetesHyperkubeSpec>|{{WrapAsVariable "kubernetesHyperkubeSpec"}}|g; s|<kubeServiceCidr>|{{WrapAsVariable "kubeServiceCidr"}}|g; s|<masterEtcdClientPort>|{{WrapAsVariable "masterEtcdClientPort"}}|g; s|<kubernetesAPIServerIP>|{{WrapAsVariable "kubernetesAPIServerIP"}}|g" "/etc/kubernetes/manifests/kube-apiserver.yaml"
sed -i "s|<kubernetesHyperkubeSpec>|{{WrapAsVariable "kubernetesHyperkubeSpec"}}|g; s|<masterFqdnPrefix>|{{WrapAsVariable "masterFqdnPrefix"}}|g; s|<allocateNodeCidrs>|{{WrapAsVariable "allocateNodeCidrs"}}|g; s|<kubeClusterCidr>|{{WrapAsVariable "kubeClusterCidr"}}|g" "/etc/kubernetes/manifests/kube-controller-manager.yaml"
sed -i "s|<kubernetesHyperkubeSpec>|{{WrapAsVariable "kubernetesHyperkubeSpec"}}|g; s|<masterFqdnPrefix>|{{WrapAsVariable "masterFqdnPrefix"}}|g; s|<allocateNodeCidrs>|{{WrapAsVariable "allocateNodeCidrs"}}|g; s|<kubeClusterCidr>|{{WrapAsVariable "kubeClusterCidr"}}|g; s|<kubernetesCtrlMgrNodeMonitorGracePeriod>|{{WrapAsVariable "kubernetesCtrlMgrNodeMonitorGracePeriod"}}|g; s|<kubernetesCtrlMgrPodEvictionTimeout>|{{WrapAsVariable "kubernetesCtrlMgrPodEvictionTimeout"}}|g; s|<kubernetesCtrlMgrRouteReconciliationPeriod>|{{WrapAsVariable "kubernetesCtrlMgrRouteReconciliationPeriod"}}|g" "/etc/kubernetes/manifests/kube-controller-manager.yaml"
sed -i "s|<kubernetesHyperkubeSpec>|{{WrapAsVariable "kubernetesHyperkubeSpec"}}|g" "/etc/kubernetes/manifests/kube-scheduler.yaml"
sed -i "s|<kubernetesHyperkubeSpec>|{{WrapAsVariable "kubernetesHyperkubeSpec"}}|g; s|<kubeClusterCidr>|{{WrapAsVariable "kubeClusterCidr"}}|g" "/etc/kubernetes/addons/kube-proxy-daemonset.yaml"
sed -i "s|<kubernetesKubeDNSSpec>|{{WrapAsVariable "kubernetesKubeDNSSpec"}}|g; s|<kubernetesDNSMasqSpec>|{{WrapAsVariable "kubernetesDNSMasqSpec"}}|g; s|<kubernetesExecHealthzSpec>|{{WrapAsVariable "kubernetesExecHealthzSpec"}}|g" "/etc/kubernetes/addons/kube-dns-deployment.yaml"

Просмотреть файл

@ -29,6 +29,17 @@ KUBECONFIG_CERTIFICATE="${19}"
KUBECONFIG_KEY="${20}"
ADMINUSER="${21}"
# Default values for backoff configuration
CLOUDPROVIDER_BACKOFF="${22}"
CLOUDPROVIDER_BACKOFF_RETRIES="${23}"
CLOUDPROVIDER_BACKOFF_EXPONENT="${24}"
CLOUDPROVIDER_BACKOFF_DURATION="${25}"
CLOUDPROVIDER_BACKOFF_JITTER="${26}"
# Default values for rate limit configuration
CLOUDPROVIDER_RATELIMIT="${27}"
CLOUDPROVIDER_RATELIMIT_QPS="${28}"
CLOUDPROVIDER_RATELIMIT_BUCKET="${29}"
# cloudinit runcmd and the extension will run in parallel, this is to ensure
# runcmd finishes
ensureRunCommandCompleted()
@ -102,7 +113,15 @@ cat << EOF > "${AZURE_JSON_PATH}"
"securityGroupName": "${NETWORK_SECURITY_GROUP}",
"vnetName": "${VIRTUAL_NETWORK}",
"routeTableName": "${ROUTE_TABLE}",
"primaryAvailabilitySetName": "${PRIMARY_AVAILABILITY_SET}"
"primaryAvailabilitySetName": "${PRIMARY_AVAILABILITY_SET}",
"cloudProviderBackoff": ${CLOUDPROVIDER_BACKOFF},
"cloudProviderBackoffRetries": ${CLOUDPROVIDER_BACKOFF_RETRIES},
"cloudProviderBackoffExponent": ${CLOUDPROVIDER_BACKOFF_EXPONENT},
"cloudProviderBackoffDuration": ${CLOUDPROVIDER_BACKOFF_DURATION},
"cloudProviderBackoffJitter": ${CLOUDPROVIDER_BACKOFF_JITTER},
"cloudProviderRatelimit": ${CLOUDPROVIDER_RATELIMIT},
"cloudProviderRateLimitQPS": ${CLOUDPROVIDER_RATELIMIT_QPS},
"cloudProviderRateLimitBucket": ${CLOUDPROVIDER_RATELIMIT_BUCKET}
}
EOF

Просмотреть файл

@ -481,7 +481,7 @@
"autoUpgradeMinorVersion": true,
"settings": {},
"protectedSettings": {
"commandToExecute": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/provision.sh ',variables('tenantID'),' ',variables('subscriptionId'),' ',variables('resourceGroup'),' ',variables('location'),' ',variables('subnetName'),' ',variables('nsgName'),' ',variables('virtualNetworkName'),' ',variables('routeTableName'),' ',variables('primaryAvailablitySetName'),' ',variables('servicePrincipalClientId'),' ',variables('servicePrincipalClientSecret'),' ',variables('clientPrivateKey'),' ',variables('targetEnvironment'),' ',variables('networkPolicy'),' ',variables('apiServerPrivateKey'),' ',variables('caCertificate'),' ',variables('caPrivateKey'),' ',variables('masterFqdnPrefix'),' ',variables('kubeConfigCertificate'),' ',variables('kubeConfigPrivateKey'),' ',variables('username'),' >> /var/log/azure/cluster-provision.log 2>&1\"')]"
"commandToExecute": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/provision.sh ',variables('tenantID'),' ',variables('subscriptionId'),' ',variables('resourceGroup'),' ',variables('location'),' ',variables('subnetName'),' ',variables('nsgName'),' ',variables('virtualNetworkName'),' ',variables('routeTableName'),' ',variables('primaryAvailablitySetName'),' ',variables('servicePrincipalClientId'),' ',variables('servicePrincipalClientSecret'),' ',variables('clientPrivateKey'),' ',variables('targetEnvironment'),' ',variables('networkPolicy'),' ',variables('apiServerPrivateKey'),' ',variables('caCertificate'),' ',variables('caPrivateKey'),' ',variables('masterFqdnPrefix'),' ',variables('kubeConfigCertificate'),' ',variables('kubeConfigPrivateKey'),' ',variables('username'),' ',variables('cloudProviderBackoff'),' ',variables('cloudProviderBackoffRetries'),' ',variables('cloudProviderBackoffExponent'),' ',variables('cloudProviderBackoffDuration'),' ',variables('cloudProviderBackoffJitter'),' ',variables('cloudProviderRatelimit'),' ',variables('cloudProviderRatelimitQPS'),' ',variables('cloudProviderRatelimitBucket'),' >> /var/log/azure/cluster-provision.log 2>&1\"')]"
}
}
}

Просмотреть файл

@ -14,6 +14,18 @@
"kubernetesExecHealthzSpec": "[parameters('kubernetesExecHealthzSpec')]",
"kubernetesHeapsterSpec": "[parameters('kubernetesHeapsterSpec')]",
"kubernetesPodInfraContainerSpec": "[parameters('kubernetesPodInfraContainerSpec')]",
"kubernetesNodeStatusUpdateFrequency": "[parameters('kubernetesNodeStatusUpdateFrequency')]",
"kubernetesCtrlMgrNodeMonitorGracePeriod": "[parameters('kubernetesCtrlMgrNodeMonitorGracePeriod')]",
"kubernetesCtrlMgrPodEvictionTimeout": "[parameters('kubernetesCtrlMgrPodEvictionTimeout')]",
"kubernetesCtrlMgrRouteReconciliationPeriod": "[parameters('kubernetesCtrlMgrRouteReconciliationPeriod')]",
"cloudProviderBackoff": "[parameters('cloudProviderBackoff')]",
"cloudProviderBackoffRetries": "[parameters('cloudProviderBackoffRetries')]",
"cloudProviderBackoffExponent": "[parameters('cloudProviderBackoffExponent')]",
"cloudProviderBackoffDuration": "[parameters('cloudProviderBackoffDuration')]",
"cloudProviderBackoffJitter": "[parameters('cloudProviderBackoffJitter')]",
"cloudProviderRatelimit": "[parameters('cloudProviderRatelimit')]",
"cloudProviderRatelimitQPS": "[parameters('cloudProviderRatelimitQPS')]",
"cloudProviderRatelimitBucket": "[parameters('cloudProviderRatelimitBucket')]",
"kubernetesKubeDNSSpec": "[parameters('kubernetesKubeDNSSpec')]",
"kubernetesDNSMasqSpec": "[parameters('kubernetesDNSMasqSpec')]",
"networkPolicy": "[parameters('networkPolicy')]",

Просмотреть файл

@ -110,6 +110,90 @@
},
"type": "string"
},
"kubernetesNodeStatusUpdateFrequency": {
{{PopulateClassicModeDefaultValue "kubernetesNodeStatusUpdateFrequency"}}
"metadata": {
"description": "Kubelet config for node status update frequency interval."
},
"type": "string"
},
"kubernetesCtrlMgrNodeMonitorGracePeriod": {
{{PopulateClassicModeDefaultValue "kubernetesCtrlMgrNodeMonitorGracePeriod"}}
"metadata": {
"description": "Kubernetes controller manager grace period for node status updates."
},
"type": "string"
},
"kubernetesCtrlMgrPodEvictionTimeout": {
{{PopulateClassicModeDefaultValue "kubernetesCtrlMgrPodEvictionTimeout"}}
"metadata": {
"description": "Kubernetes controller manager pod eviction timeout."
},
"type": "string"
},
"kubernetesCtrlMgrRouteReconciliationPeriod": {
{{PopulateClassicModeDefaultValue "kubernetesCtrlMgrRouteReconciliationPeriod"}}
"metadata": {
"description": "Kubernetes controller manager route reconciliation period."
},
"type": "string"
},
"cloudProviderBackoff": {
{{PopulateClassicModeDefaultValue "cloudProviderBackoff"}}
"metadata": {
"description": "Enable cloudprovider backoff?"
},
"type": "string"
},
"cloudProviderBackoffRetries": {
{{PopulateClassicModeDefaultValue "cloudProviderBackoffRetries"}}
"metadata": {
"description": "If backoff enabled, how many times to retry"
},
"type": "string"
},
"cloudProviderBackoffExponent": {
{{PopulateClassicModeDefaultValue "cloudProviderBackoffExponent"}}
"metadata": {
"description": "If backoff enabled, retry exponent"
},
"type": "string"
},
"cloudProviderBackoffDuration": {
{{PopulateClassicModeDefaultValue "cloudProviderBackoffDuration"}}
"metadata": {
"description": "If backoff enabled, how long until timeout"
},
"type": "string"
},
"cloudProviderBackoffJitter": {
{{PopulateClassicModeDefaultValue "cloudProviderBackoffJitter"}}
"metadata": {
"description": "If backoff enabled, jitter factor between retries"
},
"type": "string"
},
"cloudProviderRatelimit": {
{{PopulateClassicModeDefaultValue "cloudProviderRatelimit"}}
"metadata": {
"description": "Enable cloudprovider rate limiting?"
},
"type": "string"
},
"cloudProviderRatelimitQPS": {
{{PopulateClassicModeDefaultValue "cloudProviderRatelimitQPS"}}
"metadata": {
"description": "If rate limiting enabled, target maximum QPS"
},
"type": "string"
},
"cloudProviderRatelimitBucket": {
{{PopulateClassicModeDefaultValue "cloudProviderRatelimitBucket"}}
"metadata": {
"description": "If rate limiting enabled, bucket size"
},
"type": "string"
},
"kubernetesKubeDNSSpec": {
{{PopulateClassicModeDefaultValue "kubernetesKubeDNSSpec"}}
"metadata": {

Просмотреть файл

@ -65,6 +65,18 @@ var KubeImages = map[api.OrchestratorVersion]map[string]string{
"dnsmasq": "k8s-dns-dnsmasq-amd64:1.13.0",
"pause": "pause-amd64:3.0",
"windowszip": "v1.6.6intwinnat.zip",
"nodestatusfreq": "10s",
"nodegraceperiod": "40s",
"podeviction": "5m0s",
"routeperiod": "10s",
"backoff": "false",
"backoffduration": "5",
"backoffexponent": "1.5",
"backoffretries": "6",
"backoffjitter": "1",
"ratelimit": "false",
"ratelimitqps": "1",
"ratelimitbucket": "5",
},
api.Kubernetes162: {
"hyperkube": "hyperkube-amd64:v1.6.2",
@ -77,6 +89,10 @@ var KubeImages = map[api.OrchestratorVersion]map[string]string{
"dnsmasq": "k8s-dns-dnsmasq-amd64:1.13.0",
"pause": "pause-amd64:3.0",
"windowszip": "v1.6.2intwinnat.zip",
"nodestatusfreq": "10s",
"nodegraceperiod": "40s",
"podeviction": "5m0s",
"routeperiod": "10s",
},
api.Kubernetes160: {
@ -90,6 +106,10 @@ var KubeImages = map[api.OrchestratorVersion]map[string]string{
"dnsmasq": "k8s-dns-dnsmasq-amd64:1.13.0",
"pause": "pause-amd64:3.0",
"windowszip": "v1.6.0intwinnat.zip",
"nodestatusfreq": "10s",
"nodegraceperiod": "40s",
"podeviction": "5m0s",
"routeperiod": "10s",
},
api.Kubernetes157: {
@ -103,6 +123,10 @@ var KubeImages = map[api.OrchestratorVersion]map[string]string{
"dnsmasq": "kube-dnsmasq-amd64:1.3",
"pause": "pause-amd64:3.0",
"windowszip": "v1.5.7intwinnat.zip",
"nodestatusfreq": "10s",
"nodegraceperiod": "40s",
"podeviction": "5m0s",
"routeperiod": "10s",
},
api.Kubernetes153: {
@ -116,6 +140,10 @@ var KubeImages = map[api.OrchestratorVersion]map[string]string{
"dnsmasq": "kube-dnsmasq-amd64:1.3",
"pause": "pause-amd64:3.0",
"windowszip": "v1.5.3intwinnat.zip",
"nodestatusfreq": "10s",
"nodegraceperiod": "40s",
"podeviction": "5m0s",
"routeperiod": "10s",
},
}

Просмотреть файл

@ -395,6 +395,18 @@ func getParameters(cs *api.ContainerService, isClassicMode bool) (map[string]int
addValue(parametersMap, "kubernetesHeapsterSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeImages[KubernetesVersion]["heapster"])
addValue(parametersMap, "kubernetesKubeDNSSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeImages[KubernetesVersion]["dns"])
addValue(parametersMap, "kubernetesPodInfraContainerSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeImages[KubernetesVersion]["pause"])
addValue(parametersMap, "kubernetesNodeStatusUpdateFrequency", KubeImages[KubernetesVersion]["nodestatusfreq"])
addValue(parametersMap, "kubernetesCtrlMgrNodeMonitorGracePeriod", KubeImages[KubernetesVersion]["nodegraceperiod"])
addValue(parametersMap, "kubernetesCtrlMgrPodEvictionTimeout", KubeImages[KubernetesVersion]["podeviction"])
addValue(parametersMap, "kubernetesCtrlMgrRouteReconciliationPeriod", KubeImages[KubernetesVersion]["routeperiod"])
addValue(parametersMap, "cloudProviderBackoff", KubeImages[KubernetesVersion]["backoff"])
addValue(parametersMap, "cloudProviderBackoffRetries", KubeImages[KubernetesVersion]["backoffretries"])
addValue(parametersMap, "cloudProviderBackoffExponent", KubeImages[KubernetesVersion]["backoffexponent"])
addValue(parametersMap, "cloudProviderBackoffDuration", KubeImages[KubernetesVersion]["backoffduration"])
addValue(parametersMap, "cloudProviderBackoffJitter", KubeImages[KubernetesVersion]["backoffjitter"])
addValue(parametersMap, "cloudProviderRatelimit", KubeImages[KubernetesVersion]["ratelimit"])
addValue(parametersMap, "cloudProviderRatelimitQPS", KubeImages[KubernetesVersion]["ratelimitqps"])
addValue(parametersMap, "cloudProviderRatelimitBucket", KubeImages[KubernetesVersion]["ratelimitbucket"])
addValue(parametersMap, "kubeClusterCidr", properties.OrchestratorProfile.KubernetesConfig.ClusterSubnet)
addValue(parametersMap, "dockerBridgeCidr", properties.OrchestratorProfile.KubernetesConfig.DockerBridgeSubnet)
addValue(parametersMap, "networkPolicy", properties.OrchestratorProfile.KubernetesConfig.NetworkPolicy)
@ -805,6 +817,30 @@ func (t *TemplateGenerator) getTemplateFuncMap(cs *api.ContainerService) map[str
val = cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase + KubeImages[kubernetesVersion]["dns"]
case "kubernetesPodInfraContainerSpec":
val = cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase + KubeImages[kubernetesVersion]["pause"]
case "kubernetesNodeStatusUpdateFrequency":
val = KubeImages[kubernetesVersion]["nodestatusfreq"]
case "kubernetesCtrlMgrNodeMonitorGracePeriod":
val = KubeImages[kubernetesVersion]["nodegraceperiod"]
case "kubernetesCtrlMgrPodEvictionTimeout":
val = KubeImages[kubernetesVersion]["podeviction"]
case "kubernetesCtrlMgrRouteReconciliationPeriod":
val = KubeImages[kubernetesVersion]["routeperiod"]
case "cloudProviderBackoff":
val = KubeImages[kubernetesVersion]["backoff"]
case "cloudProviderBackoffRetries":
val = KubeImages[kubernetesVersion]["backoffretries"]
case "cloudProviderBackoffExponent":
val = KubeImages[kubernetesVersion]["backoffexponent"]
case "cloudProviderBackoffDuration":
val = KubeImages[kubernetesVersion]["backoffduration"]
case "cloudProviderBackoffJitter":
val = KubeImages[kubernetesVersion]["backoffjitter"]
case "cloudProviderRatelimit":
val = KubeImages[kubernetesVersion]["ratelimit"]
case "cloudProviderRatelimitQPS":
val = KubeImages[kubernetesVersion]["ratelimitqps"]
case "cloudProviderRatelimitBucket":
val = KubeImages[kubernetesVersion]["ratelimitbucket"]
case "kubeBinariesSASURL":
val = cloudSpecConfig.KubernetesSpecConfig.KubeBinariesSASURLBase + KubeImages[kubernetesVersion]["windowszip"]
case "kubeClusterCidr":

Различия файлов скрыты, потому что одна или несколько строк слишком длинны