mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Merge pull request #98284 from pjh/install-docker-on-node-start
GCE Windows: add 20H2; install docker when nodes are started
This commit is contained in:
commit
1bb0108574
@ -88,11 +88,13 @@ function set-linux-node-image() {
|
|||||||
function set-windows-node-image() {
|
function set-windows-node-image() {
|
||||||
WINDOWS_NODE_IMAGE_PROJECT="windows-cloud"
|
WINDOWS_NODE_IMAGE_PROJECT="windows-cloud"
|
||||||
if [[ "${WINDOWS_NODE_OS_DISTRIBUTION}" == "win2019" ]]; then
|
if [[ "${WINDOWS_NODE_OS_DISTRIBUTION}" == "win2019" ]]; then
|
||||||
WINDOWS_NODE_IMAGE="windows-server-2019-dc-core-for-containers-v20200908"
|
WINDOWS_NODE_IMAGE="windows-server-2019-dc-core-v20210112"
|
||||||
elif [[ "${WINDOWS_NODE_OS_DISTRIBUTION}" == "win1909" ]]; then
|
elif [[ "${WINDOWS_NODE_OS_DISTRIBUTION}" == "win1909" ]]; then
|
||||||
WINDOWS_NODE_IMAGE="windows-server-1909-dc-core-for-containers-v20200908"
|
WINDOWS_NODE_IMAGE="windows-server-1909-dc-core-v20210112"
|
||||||
elif [[ "${WINDOWS_NODE_OS_DISTRIBUTION}" == "win1809" ]]; then
|
elif [[ "${WINDOWS_NODE_OS_DISTRIBUTION}" == "win2004" ]]; then
|
||||||
WINDOWS_NODE_IMAGE="windows-server-1809-dc-core-for-containers-v20200908"
|
WINDOWS_NODE_IMAGE="windows-server-2004-dc-core-v20210112"
|
||||||
|
elif [[ "${WINDOWS_NODE_OS_DISTRIBUTION,,}" == "win20h2" ]]; then
|
||||||
|
WINDOWS_NODE_IMAGE="windows-server-20h2-dc-core-v20210112"
|
||||||
else
|
else
|
||||||
echo "Unknown WINDOWS_NODE_OS_DISTRIBUTION ${WINDOWS_NODE_OS_DISTRIBUTION}" >&2
|
echo "Unknown WINDOWS_NODE_OS_DISTRIBUTION ${WINDOWS_NODE_OS_DISTRIBUTION}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -117,6 +117,26 @@ try {
|
|||||||
FetchAndImport-ModuleFromMetadata 'k8s-node-setup-psm1' 'k8s-node-setup.psm1'
|
FetchAndImport-ModuleFromMetadata 'k8s-node-setup-psm1' 'k8s-node-setup.psm1'
|
||||||
|
|
||||||
Dump-DebugInfoToConsole
|
Dump-DebugInfoToConsole
|
||||||
|
|
||||||
|
if (-not (Test-ContainersFeatureInstalled)) {
|
||||||
|
Install-ContainersFeature
|
||||||
|
Log-Output 'Restarting computer after enabling Windows Containers feature'
|
||||||
|
Restart-Computer -Force
|
||||||
|
# Restart-Computer does not stop the rest of the script from executing.
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-DockerIsInstalled)) {
|
||||||
|
Install-Docker
|
||||||
|
}
|
||||||
|
# For some reason the docker service may not be started automatically on the
|
||||||
|
# first reboot, although it seems to work fine on subsequent reboots.
|
||||||
|
Restart-Service docker
|
||||||
|
Start-Sleep 5
|
||||||
|
if (-not (Test-DockerIsRunning)) {
|
||||||
|
throw "docker service failed to start or stay running"
|
||||||
|
}
|
||||||
|
|
||||||
Set-PrerequisiteOptions
|
Set-PrerequisiteOptions
|
||||||
$kube_env = Fetch-KubeEnv
|
$kube_env = Fetch-KubeEnv
|
||||||
|
|
||||||
|
@ -1321,6 +1321,46 @@ function Setup-ContainerRuntime {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Test-ContainersFeatureInstalled {
|
||||||
|
return (Get-WindowsFeature Containers).Installed
|
||||||
|
}
|
||||||
|
|
||||||
|
# After this function returns, the computer must be restarted to complete
|
||||||
|
# the installation!
|
||||||
|
function Install-ContainersFeature {
|
||||||
|
Log-Output "Installing Windows 'Containers' feature"
|
||||||
|
Install-WindowsFeature Containers
|
||||||
|
}
|
||||||
|
|
||||||
|
function Test-DockerIsInstalled {
|
||||||
|
return ((Get-Package `
|
||||||
|
-ProviderName DockerMsftProvider `
|
||||||
|
-ErrorAction SilentlyContinue |
|
||||||
|
Where-Object Name -eq 'docker') -ne $null)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Test-DockerIsRunning {
|
||||||
|
return ((Get-Service docker).Status -eq 'Running')
|
||||||
|
}
|
||||||
|
|
||||||
|
# Installs Docker EE via the DockerMsftProvider. Ensure that the Windows
|
||||||
|
# Containers feature is installed before calling this function; otherwise,
|
||||||
|
# a restart may be needed after this function returns.
|
||||||
|
function Install-Docker {
|
||||||
|
Log-Output 'Installing NuGet module'
|
||||||
|
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
|
||||||
|
|
||||||
|
Log-Output 'Installing DockerMsftProvider module'
|
||||||
|
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
|
||||||
|
|
||||||
|
Log-Output "Installing latest Docker EE version"
|
||||||
|
Install-Package `
|
||||||
|
-Name docker `
|
||||||
|
-ProviderName DockerMsftProvider `
|
||||||
|
-Force `
|
||||||
|
-Verbose
|
||||||
|
}
|
||||||
|
|
||||||
# Add a registry key for docker in EventLog so that log messages are mapped
|
# Add a registry key for docker in EventLog so that log messages are mapped
|
||||||
# correctly. This is a workaround since the key is missing in the base image.
|
# correctly. This is a workaround since the key is missing in the base image.
|
||||||
# https://github.com/MicrosoftDocs/Virtualization-Documentation/pull/503
|
# https://github.com/MicrosoftDocs/Virtualization-Documentation/pull/503
|
||||||
|
Loading…
Reference in New Issue
Block a user