Configure cpumanager policy options in local-up-cluster

CPU Manager policy options cannot be configured with
KUBELET_FLAGS. They need to be included in kubelet
configuration instead.

This commit allows the configuration with the use
of three enviroment variables, following same approach
as done for enabling feature gates.
This commit is contained in:
Sotiris Salloumis 2024-02-13 10:30:07 +01:00
parent ed1cc43cf7
commit ce8bd8584e

View File

@ -94,6 +94,9 @@ CLOUD_PROVIDER=${CLOUD_PROVIDER:-""}
CLOUD_CONFIG=${CLOUD_CONFIG:-""} CLOUD_CONFIG=${CLOUD_CONFIG:-""}
KUBELET_PROVIDER_ID=${KUBELET_PROVIDER_ID:-"$(hostname)"} KUBELET_PROVIDER_ID=${KUBELET_PROVIDER_ID:-"$(hostname)"}
FEATURE_GATES=${FEATURE_GATES:-"AllAlpha=false"} FEATURE_GATES=${FEATURE_GATES:-"AllAlpha=false"}
CPUMANAGER_POLICY=${CPUMANAGER_POLICY:-""}
CPUMANAGER_RECONCILE_PERIOD=${CPUMANAGER_RECONCILE_PERIOD:-""}
CPUMANAGER_POLICY_OPTIONS=${CPUMANAGER_POLICY_OPTIONS:-""}
STORAGE_BACKEND=${STORAGE_BACKEND:-"etcd3"} STORAGE_BACKEND=${STORAGE_BACKEND:-"etcd3"}
STORAGE_MEDIA_TYPE=${STORAGE_MEDIA_TYPE:-"application/vnd.kubernetes.protobuf"} STORAGE_MEDIA_TYPE=${STORAGE_MEDIA_TYPE:-"application/vnd.kubernetes.protobuf"}
# preserve etcd data. you also need to set ETCD_DIR. # preserve etcd data. you also need to set ETCD_DIR.
@ -162,6 +165,12 @@ function usage {
echo "Example 1: hack/local-up-cluster.sh -o _output/dockerized/bin/linux/amd64/ (run from docker output)" echo "Example 1: hack/local-up-cluster.sh -o _output/dockerized/bin/linux/amd64/ (run from docker output)"
echo "Example 2: hack/local-up-cluster.sh -O (auto-guess the bin path for your platform)" echo "Example 2: hack/local-up-cluster.sh -O (auto-guess the bin path for your platform)"
echo "Example 3: hack/local-up-cluster.sh (build a local copy of the source)" echo "Example 3: hack/local-up-cluster.sh (build a local copy of the source)"
echo "Example 4: FEATURE_GATES=CPUManagerPolicyOptions=true \\"
echo " CPUMANAGER_POLICY=\"static\" \\"
echo " CPUMANAGER_POLICY_OPTIONS=full-pcpus-only=\"true\" \\"
echo " CPUMANAGER_RECONCILE_PERIOD=\"5s\" \\"
echo " KUBELET_FLAGS=\"--kube-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi --system-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi\" \\"
echo " hack/local-up-cluster.sh (build a local copy of the source with full-pcpus-only CPU Management policy)"
} }
# This function guesses where the existing cached binary build is for the `-O` # This function guesses where the existing cached binary build is for the `-O`
@ -930,6 +939,22 @@ EOF
if [[ -n ${FEATURE_GATES} ]]; then if [[ -n ${FEATURE_GATES} ]]; then
parse_feature_gates "${FEATURE_GATES}" parse_feature_gates "${FEATURE_GATES}"
fi fi
# cpumanager policy
if [[ -n ${CPUMANAGER_POLICY} ]]; then
echo "cpuManagerPolicy: \"${CPUMANAGER_POLICY}\""
fi
# cpumanager reconcile period
if [[ -n ${CPUMANAGER_RECONCILE_PERIOD} ]]; then
echo "cpuManagerReconcilePeriod: \"${CPUMANAGER_RECONCILE_PERIOD}\""
fi
# cpumanager policy options
if [[ -n ${CPUMANAGER_POLICY_OPTIONS} ]]; then
parse_cpumanager_policy_options "${CPUMANAGER_POLICY_OPTIONS}"
fi
} >>"${TMP_DIR}"/kubelet.yaml } >>"${TMP_DIR}"/kubelet.yaml
# shellcheck disable=SC2024 # shellcheck disable=SC2024
@ -1132,6 +1157,16 @@ EOF
fi fi
} }
function parse_cpumanager_policy_options {
echo "cpuManagerPolicyOptions:"
# Convert from foo=true,bar=false to
# foo: "true"
# bar: "false"
for option in $(echo "$1" | tr ',' ' '); do
echo "${option}" | ${SED} -e 's/\(.*\)=\(.*\)/ \1: "\2"/'
done
}
function parse_feature_gates { function parse_feature_gates {
echo "featureGates:" echo "featureGates:"
# Convert from foo=true,bar=false to # Convert from foo=true,bar=false to