mirror of https://github.com/k3s-io/k3s
Merge pull request #27707 from yifan-gu/stage1_name
Automatic merge from submit-queue rkt: Map kubelet's `--stage1-image` flag to rkt's `--stage1-name` flag. This enables rkt to use cached stage1 image instead of unpacking the stage1 image every time for every pod. After this change, users need to preload the stage1 images in order to enable rkt to find the stage1 image with the name specified by this flag. Also, the cloud config is modified to pre-load the stage1 images. cc @kubernetes/sig-rktnetes @kubernetes/sig-nodepull/6/head
commit
fae7285b00
|
@ -666,9 +666,10 @@ EOF
|
||||||
cat >>$file <<EOF
|
cat >>$file <<EOF
|
||||||
KUBE_MANIFESTS_TAR_URL: $(yaml-quote ${KUBE_MANIFESTS_TAR_URL})
|
KUBE_MANIFESTS_TAR_URL: $(yaml-quote ${KUBE_MANIFESTS_TAR_URL})
|
||||||
KUBE_MANIFESTS_TAR_HASH: $(yaml-quote ${KUBE_MANIFESTS_TAR_HASH})
|
KUBE_MANIFESTS_TAR_HASH: $(yaml-quote ${KUBE_MANIFESTS_TAR_HASH})
|
||||||
KUBERNETES_CONTAINER_RUNTIME: $(yaml-quote ${CONTAINER_RUNTIME:-docker})
|
KUBERNETES_CONTAINER_RUNTIME: $(yaml-quote ${CONTAINER_RUNTIME:-rkt})
|
||||||
RKT_VERSION: $(yaml-quote ${RKT_VERSION:-})
|
RKT_VERSION: $(yaml-quote ${RKT_VERSION:-})
|
||||||
RKT_PATH: $(yaml-quote ${RKT_PATH:-})
|
RKT_PATH: $(yaml-quote ${RKT_PATH:-})
|
||||||
|
RKT_STAGE1_IMAGE: $(yaml-quote ${RKT_STAGE1_IMAGE:-})
|
||||||
KUBERNETES_CONFIGURE_CBR0: $(yaml-quote ${KUBERNETES_CONFIGURE_CBR0:-true})
|
KUBERNETES_CONFIGURE_CBR0: $(yaml-quote ${KUBERNETES_CONFIGURE_CBR0:-true})
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -46,7 +46,8 @@ MASTER_IMAGE_PROJECT=${KUBE_GCE_MASTER_PROJECT:-google-containers}
|
||||||
NODE_IMAGE=${KUBE_GCE_NODE_IMAGE:-"${MASTER_IMAGE}"}
|
NODE_IMAGE=${KUBE_GCE_NODE_IMAGE:-"${MASTER_IMAGE}"}
|
||||||
NODE_IMAGE_PROJECT=${KUBE_GCE_NODE_PROJECT:-"${MASTER_IMAGE_PROJECT}"}
|
NODE_IMAGE_PROJECT=${KUBE_GCE_NODE_PROJECT:-"${MASTER_IMAGE_PROJECT}"}
|
||||||
CONTAINER_RUNTIME=${KUBE_CONTAINER_RUNTIME:-docker}
|
CONTAINER_RUNTIME=${KUBE_CONTAINER_RUNTIME:-docker}
|
||||||
RKT_VERSION=${KUBE_RKT_VERSION:-0.5.5}
|
RKT_VERSION=${KUBE_RKT_VERSION:-1.8.0}
|
||||||
|
RKT_STAGE1_IMAGE=${KUBE_RKT_STAGE1_IMAGE:-coreos.com/rkt/stage1-coreos}
|
||||||
|
|
||||||
NETWORK=${KUBE_GCE_NETWORK:-default}
|
NETWORK=${KUBE_GCE_NETWORK:-default}
|
||||||
INSTANCE_PREFIX="${KUBE_GCE_INSTANCE_PREFIX:-kubernetes}"
|
INSTANCE_PREFIX="${KUBE_GCE_INSTANCE_PREFIX:-kubernetes}"
|
||||||
|
|
|
@ -47,8 +47,9 @@ MASTER_IMAGE_PROJECT=${KUBE_GCE_MASTER_PROJECT:-google-containers}
|
||||||
NODE_IMAGE=${KUBE_GCE_NODE_IMAGE:-"${MASTER_IMAGE}"}
|
NODE_IMAGE=${KUBE_GCE_NODE_IMAGE:-"${MASTER_IMAGE}"}
|
||||||
NODE_IMAGE_PROJECT=${KUBE_GCE_NODE_PROJECT:-"${MASTER_IMAGE_PROJECT}"}
|
NODE_IMAGE_PROJECT=${KUBE_GCE_NODE_PROJECT:-"${MASTER_IMAGE_PROJECT}"}
|
||||||
CONTAINER_RUNTIME=${KUBE_CONTAINER_RUNTIME:-docker}
|
CONTAINER_RUNTIME=${KUBE_CONTAINER_RUNTIME:-docker}
|
||||||
RKT_VERSION=${KUBE_RKT_VERSION:-0.5.5}
|
|
||||||
GCI_DOCKER_VERSION=${KUBE_GCI_DOCKER_VERSION:-}
|
GCI_DOCKER_VERSION=${KUBE_GCI_DOCKER_VERSION:-}
|
||||||
|
RKT_VERSION=${KUBE_RKT_VERSION:-1.8.0}
|
||||||
|
RKT_STAGE1_IMAGE=${KUBE_RKT_STAGE1_IMAGE:-coreos.com/rkt/stage1-coreos}
|
||||||
|
|
||||||
NETWORK=${KUBE_GCE_NETWORK:-e2e}
|
NETWORK=${KUBE_GCE_NETWORK:-e2e}
|
||||||
INSTANCE_PREFIX="${KUBE_GCE_INSTANCE_PREFIX:-e2e-test-${USER}}"
|
INSTANCE_PREFIX="${KUBE_GCE_INSTANCE_PREFIX:-e2e-test-${USER}}"
|
||||||
|
|
|
@ -300,9 +300,8 @@ function load-docker-images() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function load-master-components-images() {
|
function load-master-components-images() {
|
||||||
echo "Loading docker images for master components"
|
echo "Loading images for master components"
|
||||||
export RKT_BIN=/opt/rkt/rkt
|
export RKT_BIN=/opt/rkt/rkt
|
||||||
export DOCKER2ACI_BIN=/opt/docker2aci/docker2aci
|
export DOCKER2ACI_BIN=/opt/docker2aci/docker2aci
|
||||||
${SALT_DIR}/install.sh ${KUBE_BIN_TAR}
|
${SALT_DIR}/install.sh ${KUBE_BIN_TAR}
|
||||||
|
@ -314,7 +313,6 @@ function load-master-components-images() {
|
||||||
KUBE_SCHEDULER_DOCKER_TAG=$(cat ${KUBE_BIN_DIR}/kube-scheduler.docker_tag)
|
KUBE_SCHEDULER_DOCKER_TAG=$(cat ${KUBE_BIN_DIR}/kube-scheduler.docker_tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
##########
|
##########
|
||||||
# main #
|
# main #
|
||||||
##########
|
##########
|
||||||
|
|
|
@ -122,8 +122,6 @@ coreos:
|
||||||
--cluster-domain=${DNS_DOMAIN} \
|
--cluster-domain=${DNS_DOMAIN} \
|
||||||
--logtostderr=true \
|
--logtostderr=true \
|
||||||
--container-runtime=docker \
|
--container-runtime=docker \
|
||||||
--rkt-path=/opt/rkt/rkt \
|
|
||||||
--rkt-stage1-image=/opt/rkt/stage1-coreos.aci \
|
|
||||||
--configure-cbr0=${KUBERNETES_CONFIGURE_CBR0} \
|
--configure-cbr0=${KUBERNETES_CONFIGURE_CBR0} \
|
||||||
--pod-cidr=${MASTER_IP_RANGE} \
|
--pod-cidr=${MASTER_IP_RANGE} \
|
||||||
--register-schedulable=false \
|
--register-schedulable=false \
|
||||||
|
|
|
@ -70,6 +70,20 @@ coreos:
|
||||||
ExecStartPre=/usr/bin/curl --fail --silent --location --create-dirs --output /opt/downloads/rkt.tar.gz https://github.com/coreos/rkt/releases/download/v${RKT_VERSION}/rkt-v${RKT_VERSION}.tar.gz
|
ExecStartPre=/usr/bin/curl --fail --silent --location --create-dirs --output /opt/downloads/rkt.tar.gz https://github.com/coreos/rkt/releases/download/v${RKT_VERSION}/rkt-v${RKT_VERSION}.tar.gz
|
||||||
ExecStart=/usr/bin/tar --strip-components=1 -xf /opt/downloads/rkt.tar.gz -C /opt/rkt/ --overwrite
|
ExecStart=/usr/bin/tar --strip-components=1 -xf /opt/downloads/rkt.tar.gz -C /opt/rkt/ --overwrite
|
||||||
|
|
||||||
|
- name: kubernetes-load-rkt-stage1.service
|
||||||
|
command: start
|
||||||
|
content: |
|
||||||
|
[Unit]
|
||||||
|
Description=Load rkt stage1 images
|
||||||
|
Documentation=http://github.com/coreos/rkt
|
||||||
|
Requires=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
Requires=kubernetes-install-rkt.service
|
||||||
|
After=kubernetes-install-rkt.service
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/opt/rkt/rkt fetch /opt/rkt/stage1-coreos.aci /opt/rkt/stage1-kvm.aci /opt/rkt/stage1-fly.aci --insecure-options=image
|
||||||
|
|
||||||
- name: kubernetes-download-salt.service
|
- name: kubernetes-download-salt.service
|
||||||
command: start
|
command: start
|
||||||
content: |
|
content: |
|
||||||
|
@ -145,8 +159,8 @@ coreos:
|
||||||
content: |
|
content: |
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Run Kubelet service
|
Description=Run Kubelet service
|
||||||
Requires=network-online.target kube-env.service kubernetes-download-manifests.service kubernetes-install-cni.service
|
Requires=network-online.target kube-env.service kubernetes-download-manifests.service kubernetes-install-cni.service kubernetes-load-rkt-stage1.service
|
||||||
After=network-online.target kube-env.service kubernetes-download-manifests.service kubernetes-install-cni.service
|
After=network-online.target kube-env.service kubernetes-download-manifests.service kubernetes-install-cni.service kubernetes-load-rkt-stage1.service
|
||||||
[Service]
|
[Service]
|
||||||
EnvironmentFile=/etc/kube-env
|
EnvironmentFile=/etc/kube-env
|
||||||
ExecStartPre=/usr/bin/curl --fail --silent --show-error \
|
ExecStartPre=/usr/bin/curl --fail --silent --show-error \
|
||||||
|
@ -167,7 +181,7 @@ coreos:
|
||||||
--logtostderr=true \
|
--logtostderr=true \
|
||||||
--container-runtime=rkt \
|
--container-runtime=rkt \
|
||||||
--rkt-path=/opt/rkt/rkt \
|
--rkt-path=/opt/rkt/rkt \
|
||||||
--rkt-stage1-image=/opt/rkt/stage1-coreos.aci \
|
--rkt-stage1-image=${RKT_STAGE_IMAGE} \
|
||||||
--configure-cbr0=${KUBERNETES_CONFIGURE_CBR0} \
|
--configure-cbr0=${KUBERNETES_CONFIGURE_CBR0} \
|
||||||
--pod-cidr=${MASTER_IP_RANGE} \
|
--pod-cidr=${MASTER_IP_RANGE} \
|
||||||
--register-schedulable=false \
|
--register-schedulable=false \
|
||||||
|
@ -194,7 +208,6 @@ coreos:
|
||||||
After=kubernetes-download-manifests.service
|
After=kubernetes-download-manifests.service
|
||||||
Requires=kubernetes-install-docker2aci.service
|
Requires=kubernetes-install-docker2aci.service
|
||||||
After=kubernetes-install-docker2aci.service
|
After=kubernetes-install-docker2aci.service
|
||||||
# Need the kubelet/docker running because we will use docker load for docker images.
|
|
||||||
Requires=kubelet.service
|
Requires=kubelet.service
|
||||||
After=kubelet.service
|
After=kubelet.service
|
||||||
[Service]
|
[Service]
|
||||||
|
|
|
@ -56,6 +56,20 @@ coreos:
|
||||||
ExecStartPre=/usr/bin/curl --fail --silent --location --create-dirs --output /opt/downloads/rkt.tar.gz https://github.com/coreos/rkt/releases/download/v${RKT_VERSION}/rkt-v${RKT_VERSION}.tar.gz
|
ExecStartPre=/usr/bin/curl --fail --silent --location --create-dirs --output /opt/downloads/rkt.tar.gz https://github.com/coreos/rkt/releases/download/v${RKT_VERSION}/rkt-v${RKT_VERSION}.tar.gz
|
||||||
ExecStart=/usr/bin/tar --strip-components=1 -xf /opt/downloads/rkt.tar.gz -C /opt/rkt/ --overwrite
|
ExecStart=/usr/bin/tar --strip-components=1 -xf /opt/downloads/rkt.tar.gz -C /opt/rkt/ --overwrite
|
||||||
|
|
||||||
|
- name: kubernetes-load-rkt-stage1.service
|
||||||
|
command: start
|
||||||
|
content: |
|
||||||
|
[Unit]
|
||||||
|
Description=Load rkt stage1 images
|
||||||
|
Documentation=http://github.com/coreos/rkt
|
||||||
|
Requires=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
Requires=kubernetes-install-rkt.service
|
||||||
|
After=kubernetes-install-rkt.service
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/opt/rkt/rkt fetch /opt/rkt/stage1-coreos.aci /opt/rkt/stage1-kvm.aci /opt/rkt/stage1-fly.aci --insecure-options=image
|
||||||
|
|
||||||
- name: kubernetes-download-manifests.service
|
- name: kubernetes-download-manifests.service
|
||||||
command: start
|
command: start
|
||||||
content: |
|
content: |
|
||||||
|
@ -111,8 +125,8 @@ coreos:
|
||||||
content: |
|
content: |
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Run Kubelet service
|
Description=Run Kubelet service
|
||||||
Requires=network-online.target kube-env.service kubernetes-download-manifests.service kubernetes-install-cni.service
|
Requires=network-online.target kube-env.service kubernetes-download-manifests.service kubernetes-install-cni.service kubernetes-load-rkt-stage1.service
|
||||||
After=network-online.target kube-env.service kubernetes-download-manifests.service kubernetes-install-cni.service
|
After=network-online.target kube-env.service kubernetes-download-manifests.service kubernetes-install-cni.service kubernetes-load-rkt-stage1.service
|
||||||
[Service]
|
[Service]
|
||||||
EnvironmentFile=/etc/kube-env
|
EnvironmentFile=/etc/kube-env
|
||||||
ExecStartPre=/usr/bin/curl --fail --silent --show-error \
|
ExecStartPre=/usr/bin/curl --fail --silent --show-error \
|
||||||
|
@ -133,7 +147,7 @@ coreos:
|
||||||
--logtostderr=true \
|
--logtostderr=true \
|
||||||
--container-runtime=rkt \
|
--container-runtime=rkt \
|
||||||
--rkt-path=/opt/rkt/rkt \
|
--rkt-path=/opt/rkt/rkt \
|
||||||
--rkt-stage1-image=/opt/rkt/stage1-coreos.aci \
|
--rkt-stage1-image=${RKT_STAGE1_IMAGE} \
|
||||||
--configure-cbr0=${KUBERNETES_CONFIGURE_CBR0} \
|
--configure-cbr0=${KUBERNETES_CONFIGURE_CBR0} \
|
||||||
--network-plugin=kubenet \
|
--network-plugin=kubenet \
|
||||||
--reconcile-cidr=true
|
--reconcile-cidr=true
|
||||||
|
|
|
@ -1028,7 +1028,7 @@ func (r *Runtime) preparePodArgs(manifest *appcschema.PodManifest, manifestFileN
|
||||||
// 3) empty; whatever rkt's compiled to default to
|
// 3) empty; whatever rkt's compiled to default to
|
||||||
stage1ImageCmd := ""
|
stage1ImageCmd := ""
|
||||||
if r.config.Stage1Image != "" {
|
if r.config.Stage1Image != "" {
|
||||||
stage1ImageCmd = "--stage1-path=" + r.config.Stage1Image
|
stage1ImageCmd = "--stage1-name=" + r.config.Stage1Image
|
||||||
}
|
}
|
||||||
if stage1Name, ok := manifest.Annotations.Get(k8sRktStage1NameAnno); ok {
|
if stage1Name, ok := manifest.Annotations.Get(k8sRktStage1NameAnno); ok {
|
||||||
stage1ImageCmd = "--stage1-name=" + stage1Name
|
stage1ImageCmd = "--stage1-name=" + stage1Name
|
||||||
|
|
|
@ -1832,15 +1832,15 @@ func TestPreparePodArgs(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"stage1-path",
|
"stage1-image0",
|
||||||
[]string{"prepare", "--quiet", "--pod-manifest", "file", "--stage1-name=stage1-image"},
|
[]string{"prepare", "--quiet", "--pod-manifest", "file", "--stage1-name=stage1-image"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
appcschema.PodManifest{
|
appcschema.PodManifest{
|
||||||
Annotations: appctypes.Annotations{},
|
Annotations: appctypes.Annotations{},
|
||||||
},
|
},
|
||||||
"stage1-path",
|
"stage1-image0",
|
||||||
[]string{"prepare", "--quiet", "--pod-manifest", "file", "--stage1-path=stage1-path"},
|
[]string{"prepare", "--quiet", "--pod-manifest", "file", "--stage1-name=stage1-image0"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
appcschema.PodManifest{
|
appcschema.PodManifest{
|
||||||
|
|
Loading…
Reference in New Issue