Change:
<!-- Please only use this template for submitting enhancement requests --What would you like to be : pigz for GCE Windows Why is this needed: Pigz improves the image layer extraction performance for multi-core systems. Pigz is usually preinstalled on Linux. This enhancement is scoped specifically for the GKE Windows node scripts. For Context:
/assign me
This issue is currently awaiting triage. If a SIG or subproject determines this is a relevant issue, they will accept it by applying the label and provide further guidance. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
GitHub didn't allow me to assign the following users: me. Note that only , repo collaborators and people who have commented on this issue/PR can be assigned. Additionally, issues/PRs can only have 10 assignees at the same time. For more information please see <detailsIn response to : /assign me Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
/sig windows /assign jeremyje
s/GKE/GCE/? as in kube-up?
Replaced but I don't understand the kube-up part.
is how one creates a GCE cluster from this repo. Otherwise we'd be talking about something that isn't part of kubernetes.

Discussion:
# Use host IP instead of localhost in control plane kubeconfig files. export KUBECONFIG_USE_HOST_IP="${KUBECONFIG_USE_HOST_IP:-false}" <ins> # Optional: Install Pigz on Windows. # Pigz is a multi-core optimized version of unzip.exe. # It improves container image pull performance since most time is spent # unzipping the image layers to disk. export WINDOWS_ENABLE_PIGZ="${WINDOWS_ENABLE_PIGZ:-true}" </ins>

BOOTSTRAP_KUBECONFIG_FILE: $(yaml-quote "${WINDOWS_BOOTSTRAP_KUBECONFIG_FILE}") KUBEPROXY_KUBECONFIG_FILE: $(yaml-quote "${WINDOWS_KUBEPROXY_KUBECONFIG_FILE}") WINDOWS_INFRA_CONTAINER: $(yaml-quote "${WINDOWS_INFRA_CONTAINER}") <ins> WINDOWS_ENABLE_PIGZ: $(yaml-quote "${WINDOWS_ENABLE_PIGZ}") </ins> EOF }

return $KubeEnv.Contains('EXEC_AUTH_PLUGIN_URL') } <ins> # Permanently adds a directory to the $env:PATH environment variable. function Add-MachineEnvironmentPath { param ( [parameter(Mandatory=$true)] [string]$Path ) # Verify that the $Path is not already in the $env:Path variable. $pathForCompare = $Path.TrimEnd('').ToLower() foreach ($p in $env:Path.Split(";")) { if ($p.TrimEnd('').ToLower() -eq $pathForCompare) { return } } $newMachinePath = $Path + ";" + ` [System.Environment]::GetEnvironmentVariable("Path","Machine") [Environment]::SetEnvironmentVariable("Path", $newMachinePath, ` [System.EnvironmentVariableTarget]::Machine) $env:Path = $Path + ";" + $env:Path } </ins> # Export all public functions: Export-ModuleMember -Function *-*

"LOGS_DIR" = ${kube_env}['LOGS_DIR'] "MANIFESTS_DIR" = ${kube_env}['MANIFESTS_DIR'] "INFRA_CONTAINER" = ${kube_env}['WINDOWS_INFRA_CONTAINER'] <ins> "WINDOWS_ENABLE_PIGZ" = ${kube_env}['WINDOWS_ENABLE_PIGZ'] </ins> "Path" = ${env:Path} + ";" + ${kube_env}['NODE_DIR'] "KUBE_NETWORK" = "l2bridge".ToLower()

# Setup the container runtime on the node. It supports both # Docker and containerd. function Setup-ContainerRuntime { <ins> Install-Pigz </ins> if (${env:CONTAINER_RUNTIME} -eq "containerd") { Install_Containerd Configure_Containerd

Log-Output "Starting containerd service" Start-Service containerd } <ins> # Pigz Resources $PIGZ_ROOT = 'C:pigz' $PIGZ_VERSION = '2.3.1' $PIGZ_TAR_URL = 'https://storage.googleapis.com/gke-release/winnode/pigz/prod/gke_windows/pigz/release/5/20201104-134221/pigz-$PIGZ_VERSION.zip' $PIGZ_TAR_HASH = '5a6f8f5530acc85ea51797f58c1409e5af6b69e55da243ffc608784cf14fec0cd16f74cc61c564d69e1a267750aecfc1e4c53b5219ff5f893b42a7576306f34c' # Install Pigz (https://github.com/madler/pigz) into Windows for improved image # extraction performance. function Install-Pigz { if ("${env:WINDOWS_ENABLE_PIGZ}" -eq "true") { if (-not (Test-Path $PIGZ_ROOT)) { Log-Output "Installing Pigz $PIGZ_VERSION" New-Item -Path $PIGZ_ROOT -ItemType Directory MustDownload-File ` -Url $PIGZ_TAR_URL ` -OutFile "$PIGZ_ROOTpigz-$PIGZ_VERSION.zip" ` -Hash $PIGZ_TAR_HASH ` -Algorithm SHA512 Expand-Archive -Path "$PIGZ_ROOTpigz-$PIGZ_VERSION.zip" ` -DestinationPath $PIGZ_ROOT Remove-Item -Path "$PIGZ_ROOTpigz-$PIGZ_VERSION.zip" # Docker and Containerd search for unpigz.exe on the first container image # pull request after the service is started. If unpigz.exe is in the # Windows path it'll use it instead of the default unzipper. # See: https://github.com/containerd/containerd/issues/1896 Add-MachineEnvironmentPath -Path $PIGZ_ROOT Log-Output "Installed Pigz $PIGZ_VERSION" } else { Log-Output "Pigz already installed." } } } </ins> # TODO(pjh): move the logging agent code below into a separate # module; it was put here temporarily to avoid disrupting the file layout in # the K8s release machinery.