mirror of https://github.com/k3s-io/k3s
Merge pull request #63114 from grayluck/maxPodEnv
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Add MAX_PODS env allowing kubelet to be max-pods aware. **What this PR does / why we need it**: Add MAX_PODS env allowing kubelet to be max-pods aware. This env will be one of the argument of kubelet. By setting this parameter, correct number of pod capacity for the node will be reported. **Special notes for your reviewer**: /assign @MrHohn @jpbetz **Release note**: ```release-note NONE ```pull/8/head
commit
8fcaa19dd0
|
@ -98,6 +98,19 @@ function get-cluster-ip-range {
|
||||||
echo "${suggested_range}"
|
echo "${suggested_range}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Calculate ip alias range based on max number of pods.
|
||||||
|
# Let pow be the smallest integer which is bigger than log2($1 * 2).
|
||||||
|
# (32 - pow) will be returned.
|
||||||
|
#
|
||||||
|
# $1: The number of max pods limitation.
|
||||||
|
function get-alias-range-size() {
|
||||||
|
for pow in {0..31}; do
|
||||||
|
if (( 1 << $pow > $1 * 2 )); then
|
||||||
|
echo $((32 - pow))
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
# NOTE: Avoid giving nodes empty scopes, because kubelet needs a service account
|
# NOTE: Avoid giving nodes empty scopes, because kubelet needs a service account
|
||||||
# in order to initialize properly.
|
# in order to initialize properly.
|
||||||
NODE_SCOPES="${NODE_SCOPES:-monitoring,logging-write,storage-ro}"
|
NODE_SCOPES="${NODE_SCOPES:-monitoring,logging-write,storage-ro}"
|
||||||
|
|
|
@ -289,8 +289,10 @@ ENABLE_RESCHEDULER="${KUBE_ENABLE_RESCHEDULER:-true}"
|
||||||
ENABLE_IP_ALIASES=${KUBE_GCE_ENABLE_IP_ALIASES:-false}
|
ENABLE_IP_ALIASES=${KUBE_GCE_ENABLE_IP_ALIASES:-false}
|
||||||
NODE_IPAM_MODE=${KUBE_GCE_NODE_IPAM_MODE:-RangeAllocator}
|
NODE_IPAM_MODE=${KUBE_GCE_NODE_IPAM_MODE:-RangeAllocator}
|
||||||
if [ ${ENABLE_IP_ALIASES} = true ]; then
|
if [ ${ENABLE_IP_ALIASES} = true ]; then
|
||||||
# Size of ranges allocated to each node. Currently supports only /32 and /24.
|
# Number of Pods that can run on this node.
|
||||||
IP_ALIAS_SIZE=${KUBE_GCE_IP_ALIAS_SIZE:-/24}
|
MAX_PODS_PER_NODE=${MAX_PODS_PER_NODE:-110}
|
||||||
|
# Size of ranges allocated to each node.
|
||||||
|
IP_ALIAS_SIZE="/$(get-alias-range-size ${MAX_PODS_PER_NODE})"
|
||||||
IP_ALIAS_SUBNETWORK=${KUBE_GCE_IP_ALIAS_SUBNETWORK:-${INSTANCE_PREFIX}-subnet-default}
|
IP_ALIAS_SUBNETWORK=${KUBE_GCE_IP_ALIAS_SUBNETWORK:-${INSTANCE_PREFIX}-subnet-default}
|
||||||
# If we're using custom network, use the subnet we already create for it as the one for ip-alias.
|
# If we're using custom network, use the subnet we already create for it as the one for ip-alias.
|
||||||
# Note that this means SUBNETWORK would override KUBE_GCE_IP_ALIAS_SUBNETWORK in case of custom network.
|
# Note that this means SUBNETWORK would override KUBE_GCE_IP_ALIAS_SUBNETWORK in case of custom network.
|
||||||
|
@ -305,6 +307,10 @@ if [ ${ENABLE_IP_ALIASES} = true ]; then
|
||||||
PROVIDER_VARS="${PROVIDER_VARS:-} ENABLE_IP_ALIASES"
|
PROVIDER_VARS="${PROVIDER_VARS:-} ENABLE_IP_ALIASES"
|
||||||
PROVIDER_VARS="${PROVIDER_VARS:-} NODE_IPAM_MODE"
|
PROVIDER_VARS="${PROVIDER_VARS:-} NODE_IPAM_MODE"
|
||||||
PROVIDER_VARS="${PROVIDER_VARS:-} SECONDARY_RANGE_NAME"
|
PROVIDER_VARS="${PROVIDER_VARS:-} SECONDARY_RANGE_NAME"
|
||||||
|
elif [[ -n "${MAX_PODS_PER_NODE:-}" ]]; then
|
||||||
|
# Should not have MAX_PODS_PER_NODE set for route-based clusters.
|
||||||
|
echo -e "${color_red}Cannot set MAX_PODS_PER_NODE for route-based projects for ${PROJECT}." >&2
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Enable GCE Alpha features.
|
# Enable GCE Alpha features.
|
||||||
|
|
|
@ -296,8 +296,10 @@ ENABLE_RESCHEDULER="${KUBE_ENABLE_RESCHEDULER:-true}"
|
||||||
ENABLE_IP_ALIASES=${KUBE_GCE_ENABLE_IP_ALIASES:-false}
|
ENABLE_IP_ALIASES=${KUBE_GCE_ENABLE_IP_ALIASES:-false}
|
||||||
NODE_IPAM_MODE=${KUBE_GCE_NODE_IPAM_MODE:-RangeAllocator}
|
NODE_IPAM_MODE=${KUBE_GCE_NODE_IPAM_MODE:-RangeAllocator}
|
||||||
if [ ${ENABLE_IP_ALIASES} = true ]; then
|
if [ ${ENABLE_IP_ALIASES} = true ]; then
|
||||||
# Size of ranges allocated to each node. gcloud current supports only /32 and /24.
|
# Number of Pods that can run on this node.
|
||||||
IP_ALIAS_SIZE=${KUBE_GCE_IP_ALIAS_SIZE:-/24}
|
MAX_PODS_PER_NODE=${MAX_PODS_PER_NODE:-110}
|
||||||
|
# Size of ranges allocated to each node.
|
||||||
|
IP_ALIAS_SIZE="/$(get-alias-range-size ${MAX_PODS_PER_NODE})"
|
||||||
IP_ALIAS_SUBNETWORK=${KUBE_GCE_IP_ALIAS_SUBNETWORK:-${INSTANCE_PREFIX}-subnet-default}
|
IP_ALIAS_SUBNETWORK=${KUBE_GCE_IP_ALIAS_SUBNETWORK:-${INSTANCE_PREFIX}-subnet-default}
|
||||||
# If we're using custom network, use the subnet we already create for it as the one for ip-alias.
|
# If we're using custom network, use the subnet we already create for it as the one for ip-alias.
|
||||||
# Note that this means SUBNETWORK would override KUBE_GCE_IP_ALIAS_SUBNETWORK in case of custom network.
|
# Note that this means SUBNETWORK would override KUBE_GCE_IP_ALIAS_SUBNETWORK in case of custom network.
|
||||||
|
@ -312,6 +314,10 @@ if [ ${ENABLE_IP_ALIASES} = true ]; then
|
||||||
PROVIDER_VARS="${PROVIDER_VARS:-} ENABLE_IP_ALIASES"
|
PROVIDER_VARS="${PROVIDER_VARS:-} ENABLE_IP_ALIASES"
|
||||||
PROVIDER_VARS="${PROVIDER_VARS:-} NODE_IPAM_MODE"
|
PROVIDER_VARS="${PROVIDER_VARS:-} NODE_IPAM_MODE"
|
||||||
PROVIDER_VARS="${PROVIDER_VARS:-} SECONDARY_RANGE_NAME"
|
PROVIDER_VARS="${PROVIDER_VARS:-} SECONDARY_RANGE_NAME"
|
||||||
|
elif [[ -n "${MAX_PODS_PER_NODE:-}" ]]; then
|
||||||
|
# Should not have MAX_PODS_PER_NODE set for route-based clusters.
|
||||||
|
echo -e "${color_red}Cannot set MAX_PODS_PER_NODE for route-based projects for ${PROJECT}." >&2
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Enable GCE Alpha features.
|
# Enable GCE Alpha features.
|
||||||
|
|
|
@ -677,6 +677,9 @@ function construct-kubelet-flags {
|
||||||
if [[ -n "${CONTAINER_RUNTIME_ENDPOINT:-}" ]]; then
|
if [[ -n "${CONTAINER_RUNTIME_ENDPOINT:-}" ]]; then
|
||||||
flags+=" --container-runtime-endpoint=${CONTAINER_RUNTIME_ENDPOINT}"
|
flags+=" --container-runtime-endpoint=${CONTAINER_RUNTIME_ENDPOINT}"
|
||||||
fi
|
fi
|
||||||
|
if [[ -n "${MAX_PODS_PER_NODE:-}" ]]; then
|
||||||
|
flags+=" --max-pods=${MAX_PODS_PER_NODE}"
|
||||||
|
fi
|
||||||
|
|
||||||
KUBELET_ARGS="${flags}"
|
KUBELET_ARGS="${flags}"
|
||||||
}
|
}
|
||||||
|
@ -1136,6 +1139,11 @@ EOF
|
||||||
if [ -n "${SCHEDULING_ALGORITHM_PROVIDER:-}" ]; then
|
if [ -n "${SCHEDULING_ALGORITHM_PROVIDER:-}" ]; then
|
||||||
cat >>$file <<EOF
|
cat >>$file <<EOF
|
||||||
SCHEDULING_ALGORITHM_PROVIDER: $(yaml-quote ${SCHEDULING_ALGORITHM_PROVIDER})
|
SCHEDULING_ALGORITHM_PROVIDER: $(yaml-quote ${SCHEDULING_ALGORITHM_PROVIDER})
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
if [ -n "${MAX_PODS_PER_NODE:-}" ]; then
|
||||||
|
cat >>$file <<EOF
|
||||||
|
MAX_PODS_PER_NODE: $(yaml-quote ${MAX_PODS_PER_NODE})
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue