diff --git a/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-kubelet-master.yaml b/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-kubelet-master.yaml index b7f62e7287..2997a068fe 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-kubelet-master.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-kubelet-master.yaml @@ -31,27 +31,61 @@ write_files: INSECURE_REGISTRY_ARGS="" fi + uuid_file="/var/run/kubelet-pod.uuid" CONF_FILE=/etc/systemd/system/kubelet.service cat > $CONF_FILE < $TEMPLATE + #!/bin/sh + # This is bind mounted into the kubelet rootfs and all rkt shell-outs go + # through this rkt wrapper. It essentially enters the host mount namespace + # (which it is already in) only for the purpose of breaking out of the chroot + # before calling rkt. It makes things like rkt gc work and avoids bind mounting + # in certain rkt filesystem dependancies into the kubelet rootfs. This can + # eventually be obviated when the write-api stuff gets upstream and rkt gc is + # through the api-server. Related issue: + # https://github.com/coreos/rkt/issues/2878 + exec nsenter -m -u -i -n -p -t 1 -- /usr/bin/rkt "\$@" + EOF + systemctl enable kubelet systemctl --no-block start kubelet diff --git a/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-kubelet-minion.yaml b/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-kubelet-minion.yaml index cfd84b2fae..b09dc9e2e7 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-kubelet-minion.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-kubelet-minion.yaml @@ -43,17 +43,35 @@ write_files: fi KUBE_MASTER_URI="$KUBE_PROTOCOL://$KUBE_MASTER_IP:$KUBE_API_PORT" + uuid_file="/var/run/kubelet-pod.uuid" CONF_FILE=/etc/systemd/system/kubelet.service cat > $CONF_FILE < $TEMPLATE + #!/bin/sh + # This is bind mounted into the kubelet rootfs and all rkt shell-outs go + # through this rkt wrapper. It essentially enters the host mount namespace + # (which it is already in) only for the purpose of breaking out of the chroot + # before calling rkt. It makes things like rkt gc work and avoids bind mounting + # in certain rkt filesystem dependancies into the kubelet rootfs. This can + # eventually be obviated when the write-api stuff gets upstream and rkt gc is + # through the api-server. Related issue: + # https://github.com/coreos/rkt/issues/2878 + exec nsenter -m -u -i -n -p -t 1 -- /usr/bin/rkt "\$@" + EOF + systemctl enable kubelet systemctl --no-block start kubelet diff --git a/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-network-service-client.yaml b/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-network-service-client.yaml index fbed975254..0c61f16c02 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-network-service-client.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-network-service-client.yaml @@ -68,5 +68,17 @@ write_files: After=flanneld.service EOF + CNI=/etc/kubernetes/cni/net.d/10-flannel.conf + mkdir -p $(dirname $CNI) + cat << EOF > $CNI + { + "name": "podnet", + "type": "flannel", + "delegate": { + "isDefaultGateway": true + } + } + EOF + systemctl enable flanneld systemctl --no-block start flanneld diff --git a/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-network-service.yaml b/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-network-service.yaml index 800f532803..8df6ffbbc6 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-network-service.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/fragments/enable-network-service.yaml @@ -68,5 +68,17 @@ write_files: After=flanneld.service EOF + CNI=/etc/kubernetes/cni/net.d/10-flannel.conf + mkdir -p $(dirname $CNI) + cat << EOF > $CNI + { + "name": "podnet", + "type": "flannel", + "delegate": { + "isDefaultGateway": true + } + } + EOF + systemctl enable flanneld systemctl --no-block start flanneld diff --git a/magnum/drivers/k8s_coreos_v1/templates/fragments/write-heat-params-master.yaml b/magnum/drivers/k8s_coreos_v1/templates/fragments/write-heat-params-master.yaml index 3d1876c654..75c66b3b32 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/fragments/write-heat-params-master.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/fragments/write-heat-params-master.yaml @@ -43,3 +43,4 @@ write_files: KUBE_CERTS_PATH="$KUBE_CERTS_PATH" HOST_CERTS_PATH="$HOST_CERTS_PATH" HYPERKUBE_IMAGE_REPO="$HYPERKUBE_IMAGE_REPO" + CONTAINER_RUNTIME="$CONTAINER_RUNTIME" diff --git a/magnum/drivers/k8s_coreos_v1/templates/fragments/write-heat-params.yaml b/magnum/drivers/k8s_coreos_v1/templates/fragments/write-heat-params.yaml index fe59185d8a..4c3f1a4e24 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/fragments/write-heat-params.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/fragments/write-heat-params.yaml @@ -43,3 +43,4 @@ write_files: KUBE_CERTS_PATH="$KUBE_CERTS_PATH" HOST_CERTS_PATH="$HOST_CERTS_PATH" HYPERKUBE_IMAGE_REPO="$HYPERKUBE_IMAGE_REPO" + CONTAINER_RUNTIME="$CONTAINER_RUNTIME" diff --git a/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml index 34b2eed6c7..62c2286479 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml @@ -242,6 +242,14 @@ parameters: - allowed_pattern: "^$|.*/" default: "" + container_runtime: + type: string + description: > + Container runtime to use with Kubernetes. + default: "docker" + constraints: + - allowed_values: ["docker"] + resources: ###################################################################### @@ -399,6 +407,7 @@ resources: auth_url: {get_param: auth_url} hyperkube_image: {get_param: hyperkube_image} insecure_registry_url: {get_param: insecure_registry_url} + container_runtime: {get_param: container_runtime} ###################################################################### # @@ -444,6 +453,7 @@ resources: auth_url: {get_param: auth_url} hyperkube_image: {get_param: hyperkube_image} insecure_registry_url: {get_param: insecure_registry_url} + container_runtime: {get_param: container_runtime} outputs: diff --git a/magnum/drivers/k8s_coreos_v1/templates/kubemaster.yaml b/magnum/drivers/k8s_coreos_v1/templates/kubemaster.yaml index 44f2e3697d..5a77330237 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/kubemaster.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/kubemaster.yaml @@ -178,6 +178,11 @@ parameters: type: string description: insecure registry url + container_runtime: + type: string + description: > + Container runtime to use with Kubernetes. + resources: master_wait_handle: @@ -256,6 +261,7 @@ resources: insecure_registry_url: { get_param: insecure_registry_url } hyperkube_image: { get_param: hyperkube_image } "$INSECURE_REGISTRY_URL": {get_param: insecure_registry_url} + "$CONTAINER_RUNTIME": {get_param: container_runtime} configure_etcd: type: OS::Heat::SoftwareConfig diff --git a/magnum/drivers/k8s_coreos_v1/templates/kubeminion.yaml b/magnum/drivers/k8s_coreos_v1/templates/kubeminion.yaml index f910da7f4b..a394127e2b 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/kubeminion.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/kubeminion.yaml @@ -128,6 +128,11 @@ parameters: type: string description: insecure registry url + container_runtime: + type: string + description: > + Container runtime to use with Kubernetes. + resources: minion_wait_handle: @@ -182,6 +187,7 @@ resources: insecure_registry_url: { get_param: insecure_registry_url } hyperkube_image: { get_param: hyperkube_image } "$INSECURE_REGISTRY_URL": {get_param: insecure_registry_url} + "$CONTAINER_RUNTIME": {get_param: container_runtime} write_kubeconfig: type: OS::Heat::SoftwareConfig