@@ -25,6 +25,24 @@ set -o errexit
25
25
set -o nounset
26
26
set -o pipefail
27
27
28
+ function convert-manifest-params {
29
+ # A helper function to convert the manifest args from a string to a list of
30
+ # flag arguments.
31
+ # Old format:
32
+ # command=["/bin/sh", "-c", "exec KUBE_EXEC_BINARY --param1=val1 --param2-val2"].
33
+ # New format:
34
+ # command=["KUBE_EXEC_BINARY"] # No shell dependencies.
35
+ # args=["--param1=val1", "--param2-val2"]
36
+ IFS=' ' read -ra FLAGS <<< " $1"
37
+ params=" "
38
+ for flag in " ${FLAGS[@]} " ; do
39
+ params+=" \n\" $flag \" ,"
40
+ done
41
+ if [ ! -z $params ]; then
42
+ echo " ${params::- 1} " # drop trailing comma
43
+ fi
44
+ }
45
+
28
46
function setup-os-params {
29
47
# Reset core_pattern. On GCI, the default core_pattern pipes the core dumps to
30
48
# /sbin/crash_reporter which is more restrictive in saving crash dumps. So for
@@ -2048,6 +2066,10 @@ function start-kube-apiserver {
2048
2066
# params is passed by reference, so no "$"
2049
2067
setup-etcd-encryption " ${src_file} " params
2050
2068
2069
+ params+=" --log-file=${KUBE_API_SERVER_LOG_PATH:-/ var/ log/ kube-apiserver.log} "
2070
+ params+=" --logtostderr=false"
2071
+ params+=" --log-file-max-size=0"
2072
+ params=" $( convert-manifest-params " ${params} " ) "
2051
2073
# Evaluate variables.
2052
2074
local -r kube_apiserver_docker_tag=" ${KUBE_API_SERVER_DOCKER_TAG:- $(cat / home/ kubernetes/ kube-docker-files/ kube-apiserver.docker_tag)} "
2053
2075
sed -i -e " s@{{params}}@${params} @g" " ${src_file} "
@@ -2195,7 +2217,8 @@ function update-node-label() {
2195
2217
function start-kube-controller-manager {
2196
2218
echo " Start kubernetes controller-manager"
2197
2219
create-kubeconfig " kube-controller-manager" ${KUBE_CONTROLLER_MANAGER_TOKEN}
2198
- prepare-log-file /var/log/kube-controller-manager.log
2220
+ local LOG_PATH=/var/log/kube-controller-manager.log
2221
+ prepare-log-file " ${LOG_PATH} "
2199
2222
# Calculate variables and assemble the command line.
2200
2223
local params=" ${CONTROLLER_MANAGER_TEST_LOG_LEVEL:- " --v=2" } ${CONTROLLER_MANAGER_TEST_ARGS:- } ${CLOUD_CONFIG_OPT} "
2201
2224
params+=" --use-service-account-credentials"
@@ -2223,7 +2246,7 @@ function start-kube-controller-manager {
2223
2246
params+=" --concurrent-service-syncs=${CONCURRENT_SERVICE_SYNCS} "
2224
2247
fi
2225
2248
if [[ " ${NETWORK_PROVIDER:- } " == " kubenet" ]]; then
2226
- params+=" --allocate-node-cidrs=true "
2249
+ params+=" --allocate-node-cidrs"
2227
2250
elif [[ -n " ${ALLOCATE_NODE_CIDRS:- } " ]]; then
2228
2251
params+=" --allocate-node-cidrs=${ALLOCATE_NODE_CIDRS} "
2229
2252
fi
@@ -2254,9 +2277,14 @@ function start-kube-controller-manager {
2254
2277
params+=" --pv-recycler-pod-template-filepath-hostpath=$PV_RECYCLER_OVERRIDE_TEMPLATE "
2255
2278
fi
2256
2279
if [[ -n " ${RUN_CONTROLLERS:- } " ]]; then
2257
- params+=" --controllers=${RUN_CONTROLLERS} "
2258
- fi
2259
-
2280
+ # Trim the `RUN_CONTROLLERS` value. This field is quoted which is
2281
+ # incompatible with the `convert-manifest-params` format.
2282
+ params+=" --controllers=${RUN_CONTROLLERS// \' } "
2283
+ fi
2284
+ params+=" --log-file=${LOG_PATH} "
2285
+ params+=" --logtostderr=false"
2286
+ params+=" --log-file-max-size=0"
2287
+ params=" $( convert-manifest-params " ${params} " ) "
2260
2288
local -r kube_rc_docker_tag=$( cat /home/kubernetes/kube-docker-files/kube-controller-manager.docker_tag)
2261
2289
local container_env=" "
2262
2290
if [[ -n " ${ENABLE_CACHE_MUTATION_DETECTOR:- } " ]]; then
@@ -2291,7 +2319,8 @@ function start-kube-controller-manager {
2291
2319
function start-kube-scheduler {
2292
2320
echo " Start kubernetes scheduler"
2293
2321
create-kubeconfig " kube-scheduler" ${KUBE_SCHEDULER_TOKEN}
2294
- prepare-log-file /var/log/kube-scheduler.log
2322
+ local LOG_PATH=/var/log/kube-scheduler.log
2323
+ prepare-log-file " ${LOG_PATH} "
2295
2324
2296
2325
# Calculate variables and set them in the manifest.
2297
2326
params=" ${SCHEDULER_TEST_LOG_LEVEL:- " --v=2" } ${SCHEDULER_TEST_ARGS:- } "
@@ -2307,6 +2336,11 @@ function start-kube-scheduler {
2307
2336
params+=" --use-legacy-policy-config"
2308
2337
params+=" --policy-config-file=/etc/srv/kubernetes/kube-scheduler/policy-config"
2309
2338
fi
2339
+
2340
+ params+=" --log-file=${LOG_PATH} "
2341
+ params+=" --logtostderr=false"
2342
+ params+=" --log-file-max-size=0"
2343
+ params=" $( convert-manifest-params " ${params} " ) "
2310
2344
local -r kube_scheduler_docker_tag=$( cat " ${KUBE_HOME} /kube-docker-files/kube-scheduler.docker_tag" )
2311
2345
2312
2346
# Remove salt comments and replace variables with values.
0 commit comments