@@ -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
@@ -1842,6 +1860,10 @@ function start-kube-apiserver {
1842
1860
# params is passed by reference, so no "$"
1843
1861
setup-etcd-encryption " ${src_file} " params
1844
1862
1863
+ params+=" --log-file=${KUBE_API_SERVER_LOG_PATH:-/ var/ log/ kube-apiserver.log} "
1864
+ params+=" --logtostderr=false"
1865
+ params+=" --log-file-max-size=0"
1866
+ params=" $( convert-manifest-params " ${params} " ) "
1845
1867
# Evaluate variables.
1846
1868
local -r kube_apiserver_docker_tag=" ${KUBE_API_SERVER_DOCKER_TAG:- $(cat / home/ kubernetes/ kube-docker-files/ kube-apiserver.docker_tag)} "
1847
1869
sed -i -e " s@{{params}}@${params} @g" " ${src_file} "
@@ -2023,7 +2045,8 @@ function apply-encryption-config() {
2023
2045
function start-kube-controller-manager {
2024
2046
echo " Start kubernetes controller-manager"
2025
2047
create-kubeconfig " kube-controller-manager" ${KUBE_CONTROLLER_MANAGER_TOKEN}
2026
- prepare-log-file /var/log/kube-controller-manager.log
2048
+ local LOG_PATH=/var/log/kube-controller-manager.log
2049
+ prepare-log-file " ${LOG_PATH} "
2027
2050
# Calculate variables and assemble the command line.
2028
2051
local params=" ${CONTROLLER_MANAGER_TEST_LOG_LEVEL:- " --v=2" } ${CONTROLLER_MANAGER_TEST_ARGS:- } ${CLOUD_CONFIG_OPT} "
2029
2052
params+=" --use-service-account-credentials"
@@ -2051,7 +2074,7 @@ function start-kube-controller-manager {
2051
2074
params+=" --concurrent-service-syncs=${CONCURRENT_SERVICE_SYNCS} "
2052
2075
fi
2053
2076
if [[ " ${NETWORK_PROVIDER:- } " == " kubenet" ]]; then
2054
- params+=" --allocate-node-cidrs=true "
2077
+ params+=" --allocate-node-cidrs"
2055
2078
elif [[ -n " ${ALLOCATE_NODE_CIDRS:- } " ]]; then
2056
2079
params+=" --allocate-node-cidrs=${ALLOCATE_NODE_CIDRS} "
2057
2080
fi
@@ -2082,9 +2105,14 @@ function start-kube-controller-manager {
2082
2105
params+=" --pv-recycler-pod-template-filepath-hostpath=$PV_RECYCLER_OVERRIDE_TEMPLATE "
2083
2106
fi
2084
2107
if [[ -n " ${RUN_CONTROLLERS:- } " ]]; then
2085
- params+=" --controllers=${RUN_CONTROLLERS} "
2086
- fi
2087
-
2108
+ # Trim the `RUN_CONTROLLERS` value. This field is quoted which is
2109
+ # incompatible with the `convert-manifest-params` format.
2110
+ params+=" --controllers=${RUN_CONTROLLERS// \' } "
2111
+ fi
2112
+ params+=" --log-file=${LOG_PATH} "
2113
+ params+=" --logtostderr=false"
2114
+ params+=" --log-file-max-size=0"
2115
+ params=" $( convert-manifest-params " ${params} " ) "
2088
2116
local -r kube_rc_docker_tag=$( cat /home/kubernetes/kube-docker-files/kube-controller-manager.docker_tag)
2089
2117
local container_env=" "
2090
2118
if [[ -n " ${ENABLE_CACHE_MUTATION_DETECTOR:- } " ]]; then
@@ -2119,7 +2147,8 @@ function start-kube-controller-manager {
2119
2147
function start-kube-scheduler {
2120
2148
echo " Start kubernetes scheduler"
2121
2149
create-kubeconfig " kube-scheduler" ${KUBE_SCHEDULER_TOKEN}
2122
- prepare-log-file /var/log/kube-scheduler.log
2150
+ local LOG_PATH=/var/log/kube-scheduler.log
2151
+ prepare-log-file " ${LOG_PATH} "
2123
2152
2124
2153
# Calculate variables and set them in the manifest.
2125
2154
params=" ${SCHEDULER_TEST_LOG_LEVEL:- " --v=2" } ${SCHEDULER_TEST_ARGS:- } "
@@ -2135,6 +2164,11 @@ function start-kube-scheduler {
2135
2164
params+=" --use-legacy-policy-config"
2136
2165
params+=" --policy-config-file=/etc/srv/kubernetes/kube-scheduler/policy-config"
2137
2166
fi
2167
+
2168
+ params+=" --log-file=${LOG_PATH} "
2169
+ params+=" --logtostderr=false"
2170
+ params+=" --log-file-max-size=0"
2171
+ params=" $( convert-manifest-params " ${params} " ) "
2138
2172
local -r kube_scheduler_docker_tag=$( cat " ${KUBE_HOME} /kube-docker-files/kube-scheduler.docker_tag" )
2139
2173
2140
2174
# Remove salt comments and replace variables with values.
0 commit comments