mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #57757 from dims/support-cloud-controller-manager-in-local-up-cluster
Automatic merge from submit-queue (batch tested with PRs 55910, 57757). 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 support for cloud-controller-manager in local-up-cluster.sh **What this PR does / why we need it**: We need an easy way to test the new external cloud provider. So let's keep the existing CLOUD_PROVIDER and CLOUD_CONFIG as-is and add a flag EXTERNAL_CLOUD_PROVIDER to run a separate process. Since we use hyperkube to run controller-manager, let's add support for cloud-controller-manager as well to support this use case. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # **Special notes for your reviewer**: **Release note**: ```dev-release-note Ability to run the cloud-controller-manager from local-up-cluster for easy testing ```
This commit is contained in:
commit
32c026c1f8
@ -65,6 +65,7 @@ KUBECTL=${KUBECTL:-cluster/kubectl.sh}
|
||||
WAIT_FOR_URL_API_SERVER=${WAIT_FOR_URL_API_SERVER:-20}
|
||||
ENABLE_DAEMON=${ENABLE_DAEMON:-false}
|
||||
HOSTNAME_OVERRIDE=${HOSTNAME_OVERRIDE:-"127.0.0.1"}
|
||||
EXTERNAL_CLOUD_PROVIDER=${EXTERNAL_CLOUD_PROVIDER:-false}
|
||||
CLOUD_PROVIDER=${CLOUD_PROVIDER:-""}
|
||||
CLOUD_CONFIG=${CLOUD_CONFIG:-""}
|
||||
FEATURE_GATES=${FEATURE_GATES:-"AllAlpha=false"}
|
||||
@ -532,9 +533,14 @@ function start_apiserver {
|
||||
kube::util::create_client_certkey "${CONTROLPLANE_SUDO}" "${CERT_DIR}" 'client-ca' kube-aggregator system:kube-aggregator system:masters
|
||||
kube::util::write_client_kubeconfig "${CONTROLPLANE_SUDO}" "${CERT_DIR}" "${ROOT_CA_FILE}" "${API_HOST}" "${API_SECURE_PORT}" kube-aggregator
|
||||
|
||||
cloud_config_arg="--cloud-provider=${CLOUD_PROVIDER} --cloud-config=${CLOUD_CONFIG}"
|
||||
if [[ "${EXTERNAL_CLOUD_PROVIDER:-}" == "true" ]]; then
|
||||
cloud_config_arg="--cloud-provider=external"
|
||||
fi
|
||||
|
||||
APISERVER_LOG=${LOG_DIR}/kube-apiserver.log
|
||||
${CONTROLPLANE_SUDO} "${GO_OUT}/hyperkube" apiserver ${swagger_arg} ${audit_arg} ${authorizer_arg} ${priv_arg} ${runtime_config}\
|
||||
${CONTROLPLANE_SUDO} "${GO_OUT}/hyperkube" apiserver ${swagger_arg} ${audit_arg} ${authorizer_arg} ${priv_arg} ${runtime_config} \
|
||||
${cloud_config_arg} \
|
||||
${advertise_address} \
|
||||
--v=${LOG_LEVEL} \
|
||||
--vmodule="${LOG_SPEC}" \
|
||||
@ -556,8 +562,6 @@ function start_apiserver {
|
||||
--service-cluster-ip-range="${SERVICE_CLUSTER_IP_RANGE}" \
|
||||
--feature-gates="${FEATURE_GATES}" \
|
||||
--external-hostname="${EXTERNAL_HOSTNAME}" \
|
||||
--cloud-provider="${CLOUD_PROVIDER}" \
|
||||
--cloud-config="${CLOUD_CONFIG}" \
|
||||
--requestheader-username-headers=X-Remote-User \
|
||||
--requestheader-group-headers=X-Remote-Group \
|
||||
--requestheader-extra-headers-prefix=X-Remote-Extra- \
|
||||
@ -601,6 +605,11 @@ function start_controller_manager {
|
||||
node_cidr_args="--allocate-node-cidrs=true --cluster-cidr=10.1.0.0/16 "
|
||||
fi
|
||||
|
||||
cloud_config_arg=cloud_config_arg="--cloud-provider=${CLOUD_PROVIDER} --cloud-config=${CLOUD_CONFIG}"
|
||||
if [[ "${EXTERNAL_CLOUD_PROVIDER:-}" == "true" ]]; then
|
||||
cloud_config_arg="--cloud-provider=external"
|
||||
fi
|
||||
|
||||
CTLRMGR_LOG=${LOG_DIR}/kube-controller-manager.log
|
||||
${CONTROLPLANE_SUDO} "${GO_OUT}/hyperkube" controller-manager \
|
||||
--v=${LOG_LEVEL} \
|
||||
@ -613,8 +622,7 @@ function start_controller_manager {
|
||||
${node_cidr_args} \
|
||||
--pvclaimbinder-sync-period="${CLAIM_BINDER_SYNC_PERIOD}" \
|
||||
--feature-gates="${FEATURE_GATES}" \
|
||||
--cloud-provider="${CLOUD_PROVIDER}" \
|
||||
--cloud-config="${CLOUD_CONFIG}" \
|
||||
${cloud_config_arg} \
|
||||
--kubeconfig "$CERT_DIR"/controller.kubeconfig \
|
||||
--use-service-account-credentials \
|
||||
--controllers="${KUBE_CONTROLLERS}" \
|
||||
@ -622,6 +630,35 @@ function start_controller_manager {
|
||||
CTLRMGR_PID=$!
|
||||
}
|
||||
|
||||
function start_cloud_controller_manager {
|
||||
if [ -z "${CLOUD_CONFIG}" ]; then
|
||||
echo "CLOUD_CONFIG cannot be empty!"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -f "${CLOUD_CONFIG}" ]; then
|
||||
echo "Cloud config ${CLOUD_CONFIG} doesn't exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
node_cidr_args=""
|
||||
if [[ "${NET_PLUGIN}" == "kubenet" ]]; then
|
||||
node_cidr_args="--allocate-node-cidrs=true --cluster-cidr=10.1.0.0/16 "
|
||||
fi
|
||||
|
||||
CLOUD_CTLRMGR_LOG=${LOG_DIR}/cloud-controller-manager.log
|
||||
${CONTROLPLANE_SUDO} "${GO_OUT}/hyperkube" alpha cloud-controller-manager \
|
||||
--v=${LOG_LEVEL} \
|
||||
--vmodule="${LOG_SPEC}" \
|
||||
${node_cidr_args} \
|
||||
--feature-gates="${FEATURE_GATES}" \
|
||||
--cloud-provider=${CLOUD_PROVIDER} \
|
||||
--cloud-config=${CLOUD_CONFIG} \
|
||||
--kubeconfig "$CERT_DIR"/controller.kubeconfig \
|
||||
--use-service-account-credentials \
|
||||
--master="https://${API_HOST}:${API_SECURE_PORT}" >"${CLOUD_CTLRMGR_LOG}" 2>&1 &
|
||||
CLOUD_CTLRMGR_PID=$!
|
||||
}
|
||||
|
||||
function start_kubelet {
|
||||
KUBELET_LOG=${LOG_DIR}/kubelet.log
|
||||
mkdir -p "${POD_MANIFEST_PATH}" &>/dev/null || sudo mkdir -p "${POD_MANIFEST_PATH}"
|
||||
@ -631,6 +668,11 @@ function start_kubelet {
|
||||
priv_arg="--allow-privileged "
|
||||
fi
|
||||
|
||||
cloud_config_arg=cloud_config_arg="--cloud-provider=${CLOUD_PROVIDER} --cloud-config=${CLOUD_CONFIG}"
|
||||
if [[ "${EXTERNAL_CLOUD_PROVIDER:-}" == "true" ]]; then
|
||||
cloud_config_arg="--cloud-provider=external"
|
||||
fi
|
||||
|
||||
mkdir -p "/var/lib/kubelet" &>/dev/null || sudo mkdir -p "/var/lib/kubelet"
|
||||
if [[ -z "${DOCKERIZE_KUBELET}" ]]; then
|
||||
# Enable dns
|
||||
@ -687,8 +729,7 @@ function start_kubelet {
|
||||
--rkt-path="${RKT_PATH}" \
|
||||
--rkt-stage1-image="${RKT_STAGE1_IMAGE}" \
|
||||
--hostname-override="${HOSTNAME_OVERRIDE}" \
|
||||
--cloud-provider="${CLOUD_PROVIDER}" \
|
||||
--cloud-config="${CLOUD_CONFIG}" \
|
||||
${cloud_config_arg} \
|
||||
--address="${KUBELET_HOST}" \
|
||||
--kubeconfig "$CERT_DIR"/kubelet.kubeconfig \
|
||||
--feature-gates="${FEATURE_GATES}" \
|
||||
@ -753,7 +794,7 @@ function start_kubelet {
|
||||
-i \
|
||||
--cidfile=$KUBELET_CIDFILE \
|
||||
gcr.io/google_containers/kubelet \
|
||||
/kubelet --v=${LOG_LEVEL} --containerized ${priv_arg}--chaos-chance="${CHAOS_CHANCE}" --pod-manifest-path="${POD_MANIFEST_PATH}" --hostname-override="${HOSTNAME_OVERRIDE}" --cloud-provider="${CLOUD_PROVIDER}" --cloud-config="${CLOUD_CONFIG}" \ --address="127.0.0.1" --kubeconfig "$CERT_DIR"/kubelet.kubeconfig --port="$KUBELET_PORT" --enable-controller-attach-detach="${ENABLE_CONTROLLER_ATTACH_DETACH}" &> $KUBELET_LOG &
|
||||
/kubelet --v=${LOG_LEVEL} --containerized ${priv_arg}--chaos-chance="${CHAOS_CHANCE}" --pod-manifest-path="${POD_MANIFEST_PATH}" --hostname-override="${HOSTNAME_OVERRIDE}" ${cloud_config_arg} \ --address="127.0.0.1" --kubeconfig "$CERT_DIR"/kubelet.kubeconfig --port="$KUBELET_PORT" --enable-controller-attach-detach="${ENABLE_CONTROLLER_ATTACH_DETACH}" &> $KUBELET_LOG &
|
||||
fi
|
||||
}
|
||||
|
||||
@ -850,6 +891,7 @@ if [[ "${START_MODE}" != "kubeletonly" ]]; then
|
||||
Logs:
|
||||
${APISERVER_LOG:-}
|
||||
${CTLRMGR_LOG:-}
|
||||
${CLOUD_CTLRMGR_LOG:-}
|
||||
${PROXY_LOG:-}
|
||||
${SCHEDULER_LOG:-}
|
||||
EOF
|
||||
@ -936,6 +978,9 @@ if [[ "${START_MODE}" != "kubeletonly" ]]; then
|
||||
set_service_accounts
|
||||
start_apiserver
|
||||
start_controller_manager
|
||||
if [[ "${EXTERNAL_CLOUD_PROVIDER:-}" == "true" ]]; then
|
||||
start_cloud_controller_manager
|
||||
fi
|
||||
start_kubeproxy
|
||||
start_kubedns
|
||||
start_kubedashboard
|
||||
|
Loading…
Reference in New Issue
Block a user