Skip to content
Snippets Groups Projects
Commit c6e536ae authored by Feilong Wang's avatar Feilong Wang
Browse files

[k8s] Fix docker storage of Fedora CoreOS

In commit I1a75f1bf12747508a3497293650d3cc668202de6 the worker node
is missed to add the docker storage support. And the current systemd
unit is not really working. So this patch fixes it by removing the
hardcode for /dev/vdb and using xfs instead of ext4 (the same way
for Fedora Atomic) to make it simpler and solid.

Task: 39331
Story: 2005201

Change-Id: I4c465664eb19f1992df95750dd7b2d99688c6cae
(cherry picked from commit c2439ca1)
parent 67e47298
Branches cern/ussuri
Tags 10.0.0 10.0.0.0rc2
No related merge requests found
...@@ -1124,6 +1124,8 @@ Storage driver (docker-storage-driver) ...@@ -1124,6 +1124,8 @@ Storage driver (docker-storage-driver)
default is 'devicemapper'. Refer to the `Storage`_ section for more default is 'devicemapper'. Refer to the `Storage`_ section for more
details. details.
**NOTE:** For Fedora CoreOS driver, devicemapper is not supported.
Image (image) Image (image)
Specified in the ClusterTemplate to indicate the image to boot the servers. Specified in the ClusterTemplate to indicate the image to boot the servers.
The image binary is loaded in Glance with the attribute The image binary is loaded in Glance with the attribute
...@@ -2929,6 +2931,12 @@ of Docker storage drivers available. ...@@ -2929,6 +2931,12 @@ of Docker storage drivers available.
container isolation, although it still runs in enforcing mode on the container isolation, although it still runs in enforcing mode on the
cluster compute instances. cluster compute instances.
* 'overlay2' is the preferred storage driver, for all currently supported
Linux distributions, and requires no extra configuration. When possible,
overlay2 is the recommended storage driver. When installing Docker for
the first time, overlay2 is used by default.
Persistent storage Persistent storage
------------------ ------------------
......
ssh_cmd="ssh -F /srv/magnum/.ssh/config root@localhost" ssh_cmd="ssh -F /srv/magnum/.ssh/config root@localhost"
configure_storage_driver_generic() { runtime=${CONTAINER_RUNTIME}
if [ ${CONTAINER_RUNTIME} = "containerd" ] ; then
cat > /etc/systemd/system/var-lib-docker.mount <<EOF storage_dir="/var/lib/containerd"
[Unit] else
Description=Mount ephemeral to /var/lib/docker storage_dir="/var/lib/docker"
runtime="docker"
[Mount] fi
What=/dev/vdb
Where=/var/lib/docker
Type=ext4
[Install] clear_docker_storage () {
WantedBy=local-fs.target # stop docker
EOF $ssh_cmd systemctl stop ${runtime}
# clear storage graph
$ssh_cmd rm -rf ${storage_dir}
$ssh_cmd mkdir -p ${storage_dir}
}
# Configure generic docker storage driver.
configure_storage_driver_generic() {
clear_docker_storage
cat > /etc/sysconfig/enable-docker-mount.sh <<EOF
#!/bin/sh
. /etc/sysconfig/heat-params
if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then
if [[ "$(blkid -o value -s TYPE /dev/vdb)" -eq 0 ]]; then $ssh_cmd mkfs.xfs -f ${device_path}
systemctl daemon-reload echo "${device_path} ${storage_dir} xfs defaults 0 0" >> /etc/fstab
systemctl start var-lib-docker.mount $ssh_cmd mount -a
systemctl enable var-lib-docker.mount $ssh_cmd restorecon -R ${storage_dir}
else
mkfs -t ext4 /dev/vdb
systemctl daemon-reload
systemctl start var-lib-docker.mount
systemctl enable var-lib-docker.mount
fi fi
if [ ${CONTAINER_RUNTIME} = "host-docker" ] ; then
sed -i -E 's/^OPTIONS=("|'"'"')/OPTIONS=\1--storage-driver='$1' /' /etc/sysconfig/docker
fi fi
EOF
chmod +x /etc/sysconfig/enable-docker-mount.sh
cat > /etc/systemd/system/enable-docker-mount.service <<EOF
[Unit]
Description=Mount docker volume
[Service]
Type=oneshot
EnvironmentFile=/etc/sysconfig/heat-params
ExecStart=/etc/sysconfig/enable-docker-mount.sh
[Install]
RequiredBy=multi-user.target
EOF
} }
configure_devicemapper() { configure_devicemapper() {
configure_storage_driver_generic configure_storage_driver_generic
} }
...@@ -269,7 +269,9 @@ parameters: ...@@ -269,7 +269,9 @@ parameters:
docker_storage_driver: docker_storage_driver:
type: string type: string
description: docker storage driver name description: docker storage driver name
default: "devicemapper" default: "overlay2"
constraints:
- allowed_pattern: "^(?!devicemapper$).*"
cgroup_driver: cgroup_driver:
type: string type: string
......
...@@ -468,7 +468,10 @@ resources: ...@@ -468,7 +468,10 @@ resources:
- get_file: ../../common/templates/fragments/configure-docker-registry.sh - get_file: ../../common/templates/fragments/configure-docker-registry.sh
- get_file: ../../common/templates/kubernetes/fragments/configure-kubernetes-minion.sh - get_file: ../../common/templates/kubernetes/fragments/configure-kubernetes-minion.sh
- get_file: ../../common/templates/kubernetes/fragments/add-proxy.sh - get_file: ../../common/templates/kubernetes/fragments/add-proxy.sh
# TODO add docker_storage_setup - str_replace:
template: {get_file: ../../common/templates/fragments/configure-docker-storage.sh}
params:
$configure_docker_storage_driver: {get_file: ../../common/templates/fragments/configure_docker_storage_driver_fedora_coreos.sh}
- get_file: ../../common/templates/kubernetes/fragments/enable-services-minion.sh - get_file: ../../common/templates/kubernetes/fragments/enable-services-minion.sh
- get_file: ../../common/templates/fragments/enable-docker-registry.sh - get_file: ../../common/templates/fragments/enable-docker-registry.sh
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment